(57)【特許請求の範囲】
【請求項１】
計算機内で発生したイベントを取り扱うイベント制御装置であって、
前記計算機内で発生したイベントを検出するイベント検出手段と、
所定のイベント保存条件に従って、前記イベントのデータを保存するイベント管理手段と、
所定のイベント擬似発生条件に従って、前記イベントのデータに基づくイベントを擬似発生させるイベント擬似発生手段と
を備え、
前記イベント保存条件として、所定の種類のイベントのみ保存させること、所定の数のイベントを保存させること、前記イベント擬似発生手段により所定の回数発生したイベントを保存させないこと、前記イベント擬似発生手段により発生した後一定時間を過ぎたイベントを保存させないことのうちの少なくともいずれか１つを条件とすることを特徴とするイベント制御装置。
【請求項２】
計算機内で発生したイベントを取り扱うイベント制御装置であって、
前記計算機内で発生したイベントを検出するイベント検出手段と、
所定のイベント保存条件に従って、前記イベントのデータを保存するイベント管理手段と、
所定のイベント擬似発生条件に従って、前記イベントのデータに基づくイベントを擬似発生させるイベント擬似発生手段と
を備え、
前記イベント擬似発生条件は、所定の種類のイベントのみ発生させること、所定の数のイベントを発生させること、所定の順序でイベントを発生させること、イベント発生後所定の時間が経過したイベントを再び発生させること、所定の計算機内で発生したイベントであるときはイベントを発生させること、予め定められたイベントが発生したときに対応するイベントを発生させることのうちの少なくともいずれか１つを条件とすることを特徴とするイベント制御装置。
【請求項３】
請求項１または２に記載のイベント制御装置であって、
前記イベント保存条件は、過去に発生したイベントに関する情報に基づき作成されることを特徴とするイベント制御装置。
【請求項４】
請求項１または２に記載のイベント制御装置であって、
前記イベント管理手段は、イベントごとに実行すべき処理を示す運転ルールから前記イベント保存条件を抽出し、前記イベント保存条件に基づいて、前記イベントのデータを保存することを特徴とするイベント制御装置。
【請求項５】
請求項１または２に記載のイベント制御装置であって、
前記イベント擬似発生条件は、過去に発生したイベントに関する情報に基づき作成されることを特徴とするイベント制御装置。
【請求項６】
請求項１または２に記載のイベント制御装置であって、
前記イベント管理手段は、発生したイベントに対応して実行すべき処理を示す運転ルールから前記イベント擬似発生条件を抽出し、前記イベント擬似発生条件に基づいて、前記イベントを発生させることを特徴とするイベント制御装置。
【請求項７】
起動時にサーバ起動イベントを発生しクライアントに対しサービスを提供するサーバと、起動時にクライアント起動イベントを発生するとともに前記サーバ起動イベントを受けたとき前記サーバのサービスを利用開始するクライアントとを備えたクライアントサーバシステムにおけるイベント制御装置であって、
前記サーバが起動したときに発生される前記サーバ起動イベントを検出するサーバ起動イベント検出手段と、
前記サーバ起動イベント検出手段で検出したサーバ起動イベントを保存するサーバ起動イベント保存手段と、
前記クライアントが起動したときに発生される前記クライアント起動イベントを検出するクライアント起動イベント検出手段と、
前記クライアント起動イベント検出手段でクライアント起動イベントを検出したのを契機に、前記保存しておいたサーバ起動イベントを擬似発生して前記クライアントに送るサーバ起動イベント擬似発生手段と
を備えたことを特徴とするイベント制御装置。
【請求項８】
計算機内で発生したイベントを取り扱うイベント制御方法であって、
前記計算機内で発生したイベントを検出するイベント検出ステップと、
所定のイベント保存条件に従って、前記イベントのデータを保存するイベント管理ステップと、
所定のイベント擬似発生条件に従って、前記イベントのデータに基づくイベントを擬似発生させるイベント擬似発生ステップと
を備え、
前記イベント保存条件として、所定の種類のイベントのみ保存させること、所定の数のイベントを保存させること、前記イベント擬似発生ステップにより所定の回数発生したイベントを保存させないこと、前記イベント擬似発生ステップにより発生した後一定時間を過ぎたイベントを保存させないことのうちの少なくともいずれか１つを条件とすることを特徴とするイベント制御方法。
【請求項９】
計算機内で発生したイベントを取り扱うイベント制御方法であって、
前記計算機内で発生したイベントを検出するイベント検出ステップと、
所定のイベント保存条件に従って、前記イベントのデータを保存するイベント管理ステップと、
所定のイベント擬似発生条件に従って、前記イベントのデータに基づくイベントを擬似発生させるイベント擬似発生ステップと
を備え、
前記イベント擬似発生条件は、所定の種類のイベントのみ発生させること、所定の数のイベントを発生させること、所定の順序でイベントを発生させること、イベント発生後所定の時間が経過したイベントを再び発生させること、所定の計算機内で発生したイベントであるときはイベントを発生させること、予め定められたイベントが発生したときに対応するイベントを発生させることのうちの少なくともいずれか１つを条件とすることを特徴とするイベント制御方法。
【請求項１０】
請求項８または９に記載のイベント制御方法であって、
前記イベント保存条件は、過去に発生したイベントに関する情報に基づき作成されることを特徴とするイベント制御方法。
【請求項１１】
請求項８または９に記載のイベント制御方法であって、
前記イベント管理ステップは、イベントごとに実行すべき処理を示す運転ルールから前記イベント保存条件を抽出し、前記イベント保存条件に基づいて、前記イベントのデータを保存することを特徴とするイベント制御方法。
【請求項１２】
請求項８または９に記載のイベント制御方法であって、
前記イベント擬似発生条件は、過去に発生したイベントに関する情報に基づき作成されることを特徴とするイベント制御方法。
【請求項１３】
請求項８または９に記載のイベント制御方法であって、
前記イベント管理ステップは、発生したイベントに対応して実行すべき処理を示す運転ルールから前記イベント擬似発生条件を抽出し、前記イベント擬似発生条件に基づいて、前記イベントを発生させることを特徴とするイベント制御方法。
【請求項１４】
起動時にサーバ起動イベントを発生しクライアントに対しサービスを提供するサーバと、起動時にクライアント起動イベントを発生するとともに前記サーバ起動イベントを受けたとき前記サーバのサービスを利用開始するクライアントとを備えたクライアントサーバシステムにおけるイベント制御方法であって、
前記サーバが起動したときに発生される前記サーバ起動イベントを検出するサーバ起動イベント検出ステップと、
前記サーバ起動イベント検出ステップで検出したサーバ起動イベントを保存するサーバ起動イベント保存ステップと、
前記クライアントが起動したときに発生される前記クライアント起動イベントを検出するクライアント起動イベント検出ステップと、
前記クライアント起動イベント検出ステップでクライアント起動イベントを検出したのを契機に、前記保存しておいたサーバ起動イベントを擬似発生して前記クライアントに送るサーバ起動イベント擬似発生ステップと
を備えたことを特徴とするイベント制御方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般にコンピュータシステムに関し、詳細には計算機システム内で発生するイベントの制御に関する。
【０００２】
【従来の技術】
計算機システム内では、プロセスが起動したりエラーが発生したりするなど、さまざまな事象が頻繁に発生している。そして、これらの事象には、事象の発生に応じて処理を行う必要があるものがある。例えば、ウィンドウシステムでは、キーが押されたというイベントが発生すると、それに対応するアクションを実行したり、文字を表示したりする、などである。
【０００３】
このように、計算機システム内で発生した事象をイベントとしてとらえ、イベントが発生すると、それに対して何らかの処理を行うシステムの例として、X-Window System（"X Window System, Version 11 Release 4 Release Notes",Jim Fulton, XConsortium, M.I.T. Laboratory for Computer Science）に代表されるウィンドウシステムなどがある。このウィンドウシステムでは、キーが押されたら文字を表示する、マウスボタンがクリックされたらメニューを表示する、などの様々なイベントに対する処理が定義されている。
【０００４】
これらのイベントを取り扱うシステムの中には、発生したイベントを保存しておき再生するという機能をもつものがある。例えば、保存するイベントをキー入力だけに限定すれば、多くのエディタで実現されているキーボードマクロ（「GNU Emacs マニュアル」 28.3 キーボードマクロ、 Richard Stallman 著、竹内郁雄・天海良治 監訳、共立出版） もこの一種であると見ることができる。また、ウィンドウシステムにおいては、一連のイベントを保存しておき、まとめて再生して自動操作をさせることで、自動デモを行うことが可能なものもある。
【０００５】
しかしながら、前記システムでは、多くの場合、イベントの保存や再生を行うフェーズはそれぞれ独立しており、保存するときは保存終了までずっと保存する、再生するときはまとめて再生する、というようになっている。また、保存するイベントも、全てのイベントを保存するか、ユーザが指定したイベントを保存する、というようになっている。さらに、保存したイベントを修正したり新規に作成したりする方法（特開平6-203030号「デモンストレーション機能付きエディタ」）も提案されているが、結局は、個々のイベントの修正や新規作成はユーザが行わなければならない。
【０００６】
【発明が解決しようとする課題】
ところで、このような従来のイベントを取り扱うシステムでは、イベントのやり取りの不整合のために下記のような問題が発生する。
【０００７】
例えば、従来のイベントを取り扱うシステムでは、あるイベントが発生しても、そのイベントの発生以降に当該イベントの発生を待つ状態になったアプリケーションは、当該イベントが過去に発生していることを知ることができないという問題があった。
【０００８】
また、クライアントサーバシステムでは、クライアントを先に起動し、次にサーバを起動すると、サーバからサーバ起動イベントがクライアントに送られ、これによりクライアントはサーバが起動されたことを知ってそのサーバが提供するサービスの利用を開始するようになっているものがある。この場合、クライアントの起動がサーバの起動の後になると、クライアントはサーバ起動イベントを受け取ることができないためサーバが起動していることを知ることができず、システムがうまく働かないという問題があった。
【０００９】
さらに、イベントは発生した時点で１回だけ伝わるため、ユーザが指定したりアプリケーションのイベント発生部分で対処しない限り、受けとったイベントを繰り返し自動的に発生させたり、あるいは一定時間を置いて自動的に発生させたりすることはできない。しかし、前記処理を行うためにユーザが指定したりアプリケーションのイベント発生部で対処したりすると、ユーザもしくはアプリケーションに負担をかけるという問題があった。
【００１０】
また、上述のキーボードマクロのような発生したイベントを保存しておき再生する機能を用いても、自動操作や自動デモができる程度であり、イベントの発生順序や発生件数の自動的な制御などイベントに係る種々の制御を実現することはできない。さらに、イベントを保存する場合、発生するイベント全てを保存すると資源を大量に消費するという問題があり、ユーザが指定するようにするとユーザの手間が増え指定漏れのある可能性が出てくるという問題があった。
【００１１】
本発明の目的は、計算機システム内で発生するイベントの発生順序や発生件数などを自動的に制御するイベント制御方法およびイベント制御装置を提供することにある。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、本発明は、計算機内で発生したイベントを取り扱うイベント制御装置であって、前記計算機内で発生したイベントを検出するイベント検出手段と、所定のイベント保存条件に従って、前記イベントのデータを保存するイベント管理手段と、所定のイベント擬似発生条件に従って、前記イベントのデータに基づくイベントを擬似発生させるイベント擬似発生手段とを備え、前記イベント保存条件として、所定の種類のイベントのみ保存させること、所定の数のイベントを保存させること、前記イベント擬似発生手段により所定の回数発生したイベントを保存させないこと、前記イベント擬似発生手段により発生した後一定時間を過ぎたイベントを保存させないことのうちの少なくともいずれか１つを条件とすることを特徴とする。
【００１３】
また、本発明は、起動時にサーバ起動イベントを発生しクライアントに対しサービスを提供するサーバと、起動時にクライアント起動イベントを発生するとともに前記サーバ起動イベントを受けたとき前記サーバのサービスを利用開始するクライアントとを備えたクライアントサーバシステムにおけるイベント制御装置であって、前記サーバが起動したときに発生される前記サーバ起動イベントを検出するサーバ起動イベント検出手段と、前記サーバ起動イベント検出手段で検出したサーバ起動イベントを保存するサーバ起動イベント保存手段と、前記クライアントが起動したときに発生される前記クライアント起動イベントを検出するクライアント起動イベント検出手段と、前記クライアント起動イベント検出手段でクライアント起動イベントを検出したのを契機に、前記保存しておいたサーバ起動イベントを擬似発生して前記クライアントに送るサーバ起動イベント擬似発生手段とを備えたことを特徴とする。
【００１４】
さらに、本発明は、計算機内で発生したイベントを取り扱うイベント制御方法であって、前記計算機内で発生したイベントを検出するイベント検出ステップと、所定のイベント保存条件に従って、前記イベントのデータを保存するイベント管理ステップと、所定のイベント擬似発生条件に従って、前記イベントのデータに基づくイベントを擬似発生させるイベント擬似発生ステップとを備え、前記イベント保存条件として、所定の種類のイベントのみ保存させること、所定の数のイベントを保存させること、前記イベント擬似発生ステップにより所定の回数発生したイベントを保存させないこと、前記イベント擬似発生ステップにより発生した後一定時間を過ぎたイベントを保存させないことのうちの少なくともいずれか１つを条件とすることを特徴とする。
【００１５】
また、本発明は、起動時にサーバ起動イベントを発生しクライアントに対しサービスを提供するサーバと、起動時にクライアント起動イベントを発生するとともに前記サーバ起動イベントを受けたとき前記サーバのサービスを利用開始するクライアントとを備えたクライアントサーバシステムにおけるイベント制御方法であって、前記サーバが起動したときに発生される前記サーバ起動イベントを検出するサーバ起動イベント検出ステップと、前記サーバ起動イベント検出ステップで検出したサーバ起動イベントを保存するサーバ起動イベント保存ステップと、前記クライアントが起動したときに発生される前記クライアント起動イベントを検出するクライアント起動イベント検出ステップと、前記クライアント起動イベント検出ステップでクライアント起動イベントを検出したのを契機に、前記保存しておいたサーバ起動イベントを擬似発生して前記クライアントに送るサーバ起動イベント擬似発生ステップとを備えたことを特徴とする。
【００１６】
【作用】
本発明によれば、イベント検出手段により、計算機内で発生したイベントを検出する。検出したとき、所定のイベント保存条件に従って、前記イベントのデータを保存する。また、所定のイベント擬似発生条件に従って、前記イベントのデータに基づくイベントを擬似発生させる。
【００１７】
また、クライアントがサーバの起動イベントを受け取って処理を開始するクライアントサーバシステムでは、サーバがクライアントよりも先に起動したとき、前記サーバ起動時に発生したサーバ起動イベントをサーバ起動イベント検出手段で検出して、サーバ起動イベント保存手段でそれを保存する。そして、前記クライアント起動時に発生するクライアント起動イベントをクライアント起動イベント検出手段で受けとると、サーバ起動イベント擬似発生手段で前記保存しておいたサーバ起動イベントを擬似発生させることで、クライアントがサーバ起動イベントを受けとりそこなうことのないようにする。
【００１８】
【実施例】
以下、図面を用いて、本発明の実施例を説明する。
【００１９】
図１は、本発明を適用した計算機システムのシステム構成の例を示したものである。図１を参照して、本実施例の計算機システムの構成および動作の概要を説明する。
【００２０】
計算機1000は、通信回線1010に接続されている。また、計算機1000上では、自計算機上や他計算機上のプロセスとのイベントによる情報交換を行うためのイベントサービス1104が提供されている。すなわち、計算機1000に入力するイベントは、自計算機内で発生したものか他計算機で発生したものかを問わず、イベントサービス1104を介して入力する。他計算機で発生したイベントは、通信回線1010を介してイベントサービス1104に入力する。自計算機で発生し他計算機に送るべきイベントは、イベントサービス1104を介して通信回線1010に送出される。なお、図１では計算機1000のみ図示しているが、通信回線1010には他の計算機（例えば、サーバとなる計算機やクライアントとなる計算機）が接続されているものとする。
【００２１】
計算機1000上では前記イベントサービス1104を利用した（1430）自動運転システム1100が動作している。自動運転システム1100は、自動運転の運用ルールを記述した運用ルール定義ファイル1500を保持している。運用ルールとは、発生したイベントに対応してどのような処理を行なうかを記述したものである。この運用ルールには、計算機1000の内部で発生したイベントに対応する処理を記述した運用ルールだけではなく、他計算機で発生したイベントに対応する処理を記述した運用ルールも含まれる。運用ルールの具体例については、図１２を参照して後述する。通信回線1010に接続された不図示の他計算機においても、それぞれ、イベントサービスを利用した自動運転システムが動作しているものとする。
【００２２】
また、計算機1000は、ユーザが定義した擬似発生条件定義ファイル1502およびクライアント起動時発生イベント一覧ファイル1504を保持する。擬似発生条件定義ファイル1502には、後述するイベント擬似発生条件検出手段1306においてどのような条件が満たされた場合にどのようなイベントを擬似発生させるかを示すイベント擬似発生条件（ユーザが定義したもの）が記述してある。クライアント起動時発生イベント一覧ファイル1504には、本計算機1000および通信回線1010に接続された他の計算機においてクライアントが起動したときに発生するクライアント起動時発生イベントの一覧が記述されている。クライアント起動時発生イベント一覧ファイル1504については、図１１を参照して後述する。なお、本実施例では簡単のため、着目すべきクライアントは１台の計算機に対して１つ動作しているものとする。したがって、クライアント起動時発生イベントは、計算機が立ち上がったことを示すイベントでもある。
【００２３】
また、計算機1000では、本発明に係るイベント制御装置1202が動作している。イベント制御装置1202は、イベント検出手段1300、イベント保存条件検出手段1302、イベント管理手段1304、イベント擬似発生条件検出手段1306、およびイベント擬似発生手段1308を備えている。また、前記イベント管理手段1304が管理するイベント情報1310がファイルシステム上もしくはメモリ上に存在する。
【００２４】
イベントサービス1104は、受けとった各種のイベントをイベント検出手段1300に渡す（1400）。イベント検出手段1300は、イベントサービス1104から受けとったイベントをイベント保存条件検出手段1302に渡す（1412）と同時に、イベント擬似発生条件検出手段1306にも渡す（1422）。
【００２５】
イベント保存条件検出手段1302では、あらかじめ運用ルール定義ファイル1500から、どのイベントをイベント管理手段1304に渡してイベント情報1310に保存してもらうかを示す保存条件を読み取り（1402）、保持しておく。そして、イベント保存条件検出手段1302は、その保存条件に基づいて、イベント検出手段1300から受けとった（1412）イベントが保存すべきイベントであるか否かを判断し、保存すべきであれば、イベント管理手段1304に渡して（1414）イベント情報1310に保存してもらう（1432）。なお、ユーザが定義したイベント保存条件定義ファイルにより、どのイベントを保存するかを決定するようにしてもよい。
【００２６】
イベント擬似発生条件検出手段1306では、あらかじめ運用ルール定義ファイル1500、ユーザが定義した擬似発生条件定義ファイル1502、およびクライアント起動時発生イベント一覧表1504から、イベントを擬似発生させる条件（イベント擬似発生条件）を求め（1400，1422）、保持しておく。イベント擬似発生条件は、条件部と、当該条件部が成立したときに擬似発生させるイベントを特定する情報とからなる。
【００２７】
また、イベント擬似発生条件検出手段1306は、イベント管理手段1304を用いてイベント情報1310を参照しそれが更新されているかどうかを調べ（1416）、更新されている場合は更新分のイベントデータを取得する。そして、イベント検出手段1300から受け取ったイベントおよび更新分のイベントデータを、保持してあるイベント擬似発生条件（の条件部）と照合して、イベントを擬似発生するかどうかを決定する。詳しく言うと、イベント擬似発生条件の条件部が成立し、かつ、その条件部が成立したときに擬似発生すべきイベントがイベント情報1310に保存されているか、を判定する。イベント擬似発生条件の条件部が成立しかつその条件部が成立したときに擬似発生すべきイベントがイベント情報1310に保存されている場合、イベント擬似発生条件が成立しているものとし、当該イベントを擬似発生させる。
【００２８】
なお、本実施例では、イベント擬似発生条件の条件部が成立しているか否かの判定は、後述の図５および図９に示すように、イベント検出手段1300から受け取ったイベントおよび更新分のイベントデータをイベント擬似発生条件の条件部と照合することにより行なっている。ただし、イベント擬似発生条件の条件部が、さらに過去に所定のイベントが発生していることを条件の一部に含む場合は、イベント情報1310に保存されている過去に発生しているイベントも参照して、イベント擬似発生条件の条件部が成立しているか否かを判定すればよい。
【００２９】
イベントを擬似発生させる場合、イベント擬似発生条件検出手段1306は、イベント管理手段1304に、擬似発生させるイベントに関する情報の取得を依頼する（1416）。イベント管理手段1304は、この依頼に応じてイベント情報1310から必要なイベント情報を取り出し（1432）、イベント擬似発生条件検出手段1306に渡す。イベント擬似発生条件検出手段1306は、そのイベント情報を受け取って（1416）、イベント擬似発生手段1308に渡す（1418）。イベント擬似発生手段1308は、イベント擬似発生手段1306からイベント情報を受け取り、イベントを擬似発生させる（1420）。
【００３０】
以上のようにして、所定の保存条件を満たすイベントを保存し、所定のイベント擬似発生条件を満たす場合には保存しておいたイベントを擬似発生させることができる。これにより、イベントの発生順序や発生件数などを自動的に制御することが可能になる。以下、図１の構成における各部の動作をさらに詳細に説明する。
【００３１】
図２は、イベント検出手段（図１の1300）の処理の流れを示す。
【００３２】
前記イベント検出手段1300では、初期化（2000）の後、イベントが発生したかどうかを調べ（2300）、発生していなければ、イベントが発生するまで待つ。イベントが発生していれば、イベントサービス1104からそのイベントのデータを読みこみ（2002）、イベント保存条件検出手段（図１の1302）にそのイベントを渡す（2004）。さらに、イベント擬似発生条件検出手段（図１の1306）にもそのイベントを渡す（2006）。処理2004で渡されたイベントは、後述の図３の処理3004でイベント保存条件検出手段1302に受け取られる。処理2006で渡されたイベントは、後述の図９の9002でイベント擬似発生条件検出手段1306に受け取られる。
【００３３】
図３は、イベント保存条件検出手段（図１の1302）の処理の流れを示す。
【００３４】
イベント保存条件検出手段1302では、初期化（3000）の後、自動運転システムの運用ルール（図１の1500）を読み込み（3002）、どのイベントを保存すればよいかを示す保存条件をその運用ルールから抽出する（3600）。イベント保存条件の抽出のアルゴリズムは、図７を参照して後述する。
【００３５】
次に、イベント保存条件検出手段1302は、イベント検出手段（図１の1300）からのイベントデータがあるかどうかを調べ（3300）、なければ待つ。イベント検出手段1300からのイベントデータがあれば、そのイベントデータを受け取る（3004）。そして、処理3600で抽出したイベント保存条件に基づいて、受け取ったイベントが保存するイベントであるかどうかを調べ（3302）、保存するイベントであれば、イベント管理手段（図１の1304）に前記イベントのデータを保存する要求を出す（3006）。そして、前記要求の返事がエラーであるかどうかを調べ（3304）、エラーならばエラーログに記録するなどのエラー処理を行う（3008）。
【００３６】
図４は、イベント管理手段（図１の1304）の処理の流れを示す。なお実際には、イベント管理手段1304は、後述する図１０に示すようなコマンドを受け付け、受け付けたコマンドに応じてイベント情報1310に対する読み出し、イベントデータの保存、与えられた条件の判定、与えられた条件に応じた検索、およびイベントデータの削除などを行なうようになっている。図４では、これらすべてのコマンドに応じた処理は記述しておらず、簡単のため、主要な処理部分のみの概略の手順を図示している。
【００３７】
イベント管理手段1304では、まず初期化を行う（4000）。このとき、更新フラグをTRUEに設定する。更新フラグとは、前回イベント擬似発生条件検出手段1306がアクセスしてきてから今までの間に、イベント情報1310が更新されたかどうかを調べるためのフラグである。更新フラグがTRUEのときは、前回イベント擬似発生条件検出手段1306がアクセスしてきてから今までの間にイベント情報1310の更新があったということを示し、FALSEのとき更新はなかったということを示す。
【００３８】
初期化（4000）が終了すると、次にイベント擬似発生条件検出手段（図１の1306）からイベント情報1310が更新されたかどうかを調べる要求（後述する図５の処理5002で出される要求）が来ているかどうかを調べ（4300）、来ていれば現在の更新フラグの値をイベント擬似発生条件検出手段1306に返す（4002）。
【００３９】
次に、イベント擬似発生条件検出手段1306からイベント情報1310中のイベントデータを削除する要求（後述する図５の処理5008で出される要求）が来ているかどうかを調べ（4308）、来ていれば、その要求に従ってイベントデータを削除する（4020）。そして、そのイベントデータを削除する処理でエラーが発生していたら（4312）、イベント擬似発生条件検出手段1306にエラーを返す（4024）。
【００４０】
次に、イベント保存条件検出手段（図１の1302）から保存要求（図３の処理3006で出される要求）が来ているかどうかを調べ（4302）、保存要求が来ていれば、イベント保存条件検出手段1302から保存すべきイベントのデータを受けとり（4004）、そのデータが正しいものかどうかを調べる（4006）。そのイベントデータが正しいものであれば（4304）、そのイベントデータをイベント情報1310に保存して（4010）、更新フラグをTRUEとし（4012）、再び処理4300に戻る。前記データが正しいものでなければ（4304）、イベント保存条件検出手段1302にエラーを返し（4008）、再び処理4300に戻る。
【００４１】
処理4302でイベント保存条件検出手段1302からの保存要求が来ていない場合は、イベント擬似発生条件検出手段1306からイベントデータの読みだし要求（後述する図５の処理5004および図９の9004で出される要求）が来ているかどうかを調べ（4306）、来ていれば、イベント情報1310からその読みだし要求に応じたデータを読みだす（4014）。このとき、エラーが発生していれば（4310）、イベント擬似発生条件検出手段1306にエラーを返し（4022）、再び処理4300に戻る。エラーが発生していなければ（4310）、更新フラグをFALSEにして（4018）、前記読み出したデータをイベント擬似発生条件検出手段1306に渡す（4016）。その後、再度イベント情報1310が更新されたかどうかを調べる要求が来ているかどうかを調べる処理4300に戻って、当該処理から繰り返す。
【００４２】
図５は、イベント擬似発生条件検出手段（図１の1306）の処理の流れを示す。
【００４３】
イベント擬似発生条件検出手段1306では、初期化（5000）の後、前記自動運転システム（図１の1100）の運転ルール（図１の1500）からイベント擬似発生条件を抽出する（5600）。イベント擬似発生条件の抽出のアルゴリズムは、図８を参照して後述する。その後、ユーザが作成した擬似発生条件定義ファイル1502からイベント擬似発生条件を抽出し、処理5600で抽出したイベント擬似発生条件とマージして保持しておく（5008）。
【００４４】
次に、イベント情報1310に更新があったかどうかを調べる要求をイベント管理手段1304に出す（5002）。イベント管理手段1304から返された更新フラグがTRUEであったときは、前回の問合せから今までの間にイベント情報1310の更新があったということであるから（5300）、イベント管理手段1304に依頼して、イベント情報1310から更新分のイベントデータを読み出し（5004）、次の処理5602に進む。イベント管理手段1304から返された更新フラグがFALSEであったときは、前回の問合せから今までの間にイベント情報1310の更新がなかったということであるから（5300）、そのまま処理5602に進む。
【００４５】
次に、前記読み出したデータ（イベント情報1310の更新分）や現在時刻などから、前記イベント擬似発生条件（処理5600，5608で抽出）のうち何れかのイベント擬似発生条件が成立しているかどうかを調べる（5602）。この処理5602の詳細は、図９を参照して後述する。イベント擬似発生条件のうち成立しているものがあれば（5302）、イベント擬似発生手段（図１の1308）に、成立しているイベント擬似発生条件に応じて擬似発生すべきイベントを擬似発生してもらう要求を出し（5006）、処理5304に進む。成立しているイベント擬似発生条件がないときは、処理5302から処理5002に戻る。
【００４６】
処理5006の後、この処理5006で擬似発生させたイベントが不要になったかどうかを判断し（5304）、不要ならばイベント管理手段1304に当該イベントの削除要求を出す（5008）。この削除処理でエラーが発生したら（5306）、エラーログにエラーメッセージを書き出すなどのエラー処理を行う（5010）。処理5304で、擬似発生させたイベントが不要ではないと判別されたときは、そのまま処理5002に戻る。処理5306でエラーが発生していないとき、および処理5010のエラー処理の後、再び処理5002に戻る。
【００４７】
図６は、イベント擬似発生手段（図１の1308）の処理の流れを示す。
【００４８】
イベント擬似発生手段1308では、初期化（6000）の後、イベント発生条件検出手段1306からのイベント擬似発生要求（図５の処理5006で出された要求）が来たかどうか調べる（6300）。イベント擬似発生要求が来ていれば（6300）、イベント擬似発生条件検出手段1306から受けとったイベント（そのイベントデータは、後述の図９の処理9006で読出してある）を擬似発生し（6002）、再び処理6300に戻る。イベント擬似発生要求が来ていないときは（6300）、そのまま処理6300に戻る。
【００４９】
図７は、イベント保存条件抽出アルゴリズムの処理の流れを示す。この図７の処理は、図３の処理3600に相当する。
【００５０】
処理を開始すると（7000）、まだ保存条件を抽出していない運用ルールが存在する計算機があるかどうか調べ（7304）、なければ終了する（7006）。まだ保存条件を抽出していない運用ルールが存在する計算機がある場合は（7304）、その中から１台を選択し（7008）、選択した計算機においてまだ保存条件を抽出していない運用ルールがあるかどうか調べる（7300）。その計算機のすべての運用ルールから保存条件を抽出済みのときは、処理7300から処理7304に戻る。
【００５１】
選択した計算機においてまだ保存条件を抽出していない運用ルールがある場合は（7300）、その調べていない運用ルールのうちの１つを抽出し、抽出した運用ルールの中から条件部分を抽出する（7002）。そして、抽出した条件部分がイベントIDもしくはイベントメッセージによる条件であるかどうかを調べ（7300）、前記いずれかの条件であれば、その抽出した条件をイベント保存条件に加える（7004）。その後、処理7300に戻る。処理7302で、抽出した条件がイベントIDでなくかつイベントのメッセージによる条件でもないときは、処理7302から処理7300に戻る。
【００５２】
図８は、イベント擬似発生条件抽出アルゴリズムの処理の流れを示す。この図８の処理は、図５の5600に相当する。
【００５３】
処理開始後（8000）、運用ルールが存在する全ての計算機について、まだイベント擬似発生条件を抽出していない計算機があるかどうか調べ（8300）、なければ処理を終了する（8008）。まだイベント擬似発生条件を抽出していない計算機があれば、その計算機のうち１台を選択し（8002）、選択した計算機の運用ルールからイベント待ちの条件の部分（どのイベントを待っているか）を取り出し（8004）、前記選択した計算機の名前と前記取り出したイベントとの対を記憶しておく（8006）。その後、処理8300に戻る。
【００５４】
なお本実施例では、図１でも説明したように、１台の計算機に対して着目すべきクライアントが１つ動作することを前提としているから、「計算機」と「クライアント」は１対１に対応している。そこで、本実施例では、上記処理8006で記憶する「計算機の名前」として、当該計算機のクライアントが起動したときに発生するクライアント起動時発生イベントのイベントIDを用いている。各計算機のクライアントが起動したときに発生するクライアント起動時発生イベントのイベントIDは、クライアント起動時発生イベント一覧表1504を参照して得ている。イベント擬似発生条件の抽出の具体例は、図１３を参照して後述する。
【００５５】
処理終了時（8008）に記憶している前記計算機の名前（すなわち、クライアント起動時発生イベント）と前記イベント（当該クライアントに関する運用ルールのイベント待ちの条件の部分から取り出したイベント）との対が、求めるイベント擬似発生条件である。詳しく言えば、前半のクライアント起動時発生イベントはイベント擬似発生条件の条件部を示し、後半のイベントは前記条件部が成立したときに擬似発生すべきイベントを示している。
【００５６】
いま、前半の条件部をＡとし、後半の擬似発生すべきイベントをＢとし、Ａ：Ｂでイベント擬似発生条件を表すものとする。Ａ：Ｂは、要するに、起動時にＡが発生するクライアントａで待っているイベントがＢである、ということである。もし、イベントＢがクライアントａの起動より前に発生していると、クライアントａではイベントＢを受け取ることができずに正常に動作しないことが考えられる。そこで、本実施例では、イベントＢが発生したときにそれをイベント情報1310として保存しておき、イベント擬似発生条件にＡ：Ｂを登録しておいて、Ａが成立したとき（クライアントａが起動したとき）、イベントＢが保存されていたなら、そのイベントＢを擬似発生させる。これにより、クライアントａは、イベントＢを受け取ることができ、以後正常に動作することになる。
【００５７】
図９は、イベント擬似発生条件検出アルゴリズムの処理の流れを示す。この図９の処理は、図５の5602に相当する。
【００５８】
処理開始後（9000）、イベント検出手段（図１の1300）からのイベントがあるかどうか調べ（9300）、あればイベント検出手段1300からのイベントデータを受け取り（9002）、処理9004に進む。イベント検出手段1300からのイベントデータがなければ、処理9300から処理9004に進む。
【００５９】
そして、処理9002で受けとったイベントや図５の処理5004で読出してある更新分のイベントデータをイベント擬似発生条件の条件部のイベントと比較する（9004）。なお、イベント擬似発生条件が時刻に関連する条件を含む場合は、時刻をも考慮して処理9004の比較を行なうものとする。また、本実施例ではイベント検出手段1300からのイベントと更新分のイベントのみをイベント擬似発生条件の条件部と比較しているが、イベント擬似発生条件の条件部がさらに過去に所定のイベントが発生していることを条件の一部に含む場合は、イベント情報1310に保存されている過去に発生しているイベントも参照して、イベント擬似発生条件の条件部が成立しているか否かを判定するようにする。
【００６０】
さらに、処理9004では、上記比較の結果、条件部が一致するイベント擬似発生条件を検出した場合には、その条件部に対応して擬似発生すべきイベントが既にイベント情報1310に保存されているかどうかを調べる。
【００６１】
処理9004による比較で、処理9002で受けとったイベントや図５の処理5004で読出してある更新分のイベントデータとイベント擬似発生条件の条件部のイベントとの一致が検出され、かつ、当該イベント擬似発生条件で擬似発生すべきイベントが既にイベント情報1310に保存されていたときは（9302）、イベント擬似発生条件成立とする（9006）。そうでないときは（9302）、イベント擬似発生条件不成立である。イベント擬似発生条件成立のときは、当該擬似発生すべきイベントに関するイベントデータをイベント情報1310から読出しておく。
【００６２】
次に、前記イベント擬似発生条件検出手段（図１の1306）における、イベント擬似発生条件の条件部の例を挙げる。イベント擬似発生条件の条件部としては、例えば下記▲１▼〜▲７▼などの条件がある。
▲１▼事前に決められた1つ以上のイベントのうち、事前に決められた数以上のイベントが発生した
▲２▼事前に決められた数以上のイベントが、事前に決められた順序で発生した
▲３▼イベントの発生後、事前に決められた一定時間が経過した
▲４▼事前に決められた時間内に発生した
▲５▼事前に決められた時刻になった
▲６▼事前に決められた計算機上で発生した
▲７▼事前に決められた回数だけ発生した
【００６３】
イベント擬似発生条件は、イベント擬似発生条件検出手段（図１の1306）により、自動運転システム（図１の1100）の運用ルール（図１の1500）から自動的に抽出される（図５の5600）。この処理については、図８を用いて説明した。また、既に述べたように、ユーザが定義した擬似発生条件定義ファイル（図１の1502）に上記▲１▼〜▲７▼などを含む任意のイベント擬似発生条件を記述することも可能である。
【００６４】
次に、前記イベント情報（図１の1310）に登録するイベントデータの内容の例を挙げる。
【００６５】
前記登録するイベントデータの内容としては、イベントID（識別子）、イベントメッセージ、イベントのパラメータ、イベントの発生時刻、イベントが発生した計算機、イベントを発生したユーザ名、グループ名、およびプロセス名イベントの発生回数などが挙げられる。なお、これらの項目は必ずしも全てのイベントに対して登録する必要があるというわけではない。
【００６６】
図１０に、イベント保存条件検出手段（図１の1302）やイベント擬似発生条件検出手段（図１の1306）が、イベント管理手段（図１の1304）に対して送信するコマンドの一覧を示す。
【００６７】
Ｒコマンド、Ｗコマンド、およびＤコマンドは、それぞれイベント管理手段1304に対するイベントデータの読み込み、書き込み、および削除を行うコマンドである。また、Ｃコマンドは、条件を与えて前記条件が成立しているかどうかを調べるコマンドで、イベント擬似発生条件が成立したかどうかを調べるときなどに使用される。また、Ｓコマンドは、実際に条件に合うイベントを検索するためのコマンドである。
【００６８】
なお、図４の説明でも述べたが、図４のイベント管理手段1304の処理手順は、これらの各コマンドに対応する処理のうち主要な部分のみを示したものである。図３、図５、および図９のフローチャートでは、イベント管理手段1304に指示を与える処理があるが、それらの指示は実際には図１０に示したコマンドを発行することにより為されている。以下では、各コマンドがどの処理で使用されているか簡単に説明する。
【００６９】
Ｗコマンドは、前記イベント保存条件検出手段1302が図３の処理3006で発行する。また、Ｃコマンド、Ｓコマンド、およびＤコマンドは、前記イベント擬似発生条件検出手段1306が図５の処理5002、処理5004、および処理5008で発行する。Ｓコマンドは、前記イベント擬似発生条件検出手段1306が図９の処理9004で、イベント擬似発生条件の擬似発生すべきイベントがイベント情報1310に保存されているかどうか調べる際にも使用する。また、擬似発生すべきイベントがイベント情報1310に保存されている場合、図９の処理9006でそのイベントデータを読出すが、その読出しにはＲコマンドを用いる。
【００７０】
次に、前記イベント管理手段1304のＳコマンドで検索するときの検索条件について述べる。検索条件としては、イベント情報1310に登録されている内容のうちいずれかの項目名とその項目がとりうる任意の値を指定する。イベント管理手段1304は、指定された項目が指定された値に一致するイベントデータをイベント情報1310から取り出し、Ｓコマンドの発行元に返す。また、複数の条件を指定し、前記条件の論理和、論理積の指定も可能である。
【００７１】
前回検索以降に更新されたイベントデータを取り出す（図５の処理5004）には、前回検索時の時刻を覚えておき、前記Ｓコマンドで前記時刻よりも新しいものを検索すればよい。
【００７２】
前記イベント管理手段1304のＣコマンドは、指定した条件式が成立するかどうかを調べるものであり、結果を０か１の数値で返す。条件式を組み合わせることにより、複数の条件のうちいくつ成立したかという条件式を作成することが可能であり、複数のイベントのうちいずれか２つ以上が発生しているという条件の指定も可能となる。条件式は、２つ以上の条件式の論理和、論理積、差、もしくは和からなるか、またはただ１つの論理式からなる。この論理式では、イベント情報1310に登録されているイベントのイベントIDと項目名およびその値を指定し、指定したイベントIDを持つイベントの指定した項目の値を前記指定した値と比較する。その比較方法としては、一致、不一致、大小関係（一致を含むもの）、または大小関係（一致を含まないもの）のいずれかを選択することができる。
【００７３】
前記イベント管理手段（図１の1304）が管理するイベント情報（図１の1310）にイベントを登録してばかりいたのでは、いずれ前記イベント情報1310が溢れてしまう。そのため、不要なイベントはイベント情報1310から破棄する必要がある。イベントを破棄する条件として、例えば以下の条件が挙げられる。
▲１▼起動イベントを受けとった後、その起動イベントと同じ計算機またはプロセスの停止イベントを受けとったとき
▲２▼以前に受けとったイベントに対する取り消しイベントを受けとったとき
▲３▼同じイベントが何度もくり返し発生するとき
▲４▼２回目以降発生したイベント（必要に応じて発生回数や発生時刻を記憶しておく）
▲５▼イベント擬似発生手段により擬似発生したイベント
▲６▼発生時刻や発生回数などにより不要になったイベント
▲７▼イベントが擬似発生され、それ以降は使用されないイベント
▲８▼最新のイベントが必要なときの最新のものではないイベント
▲９▼発生後一定時間を過ぎると意味がないイベントが発生後一定時間以上経ったとき
【００７４】
本実施例では、前記条件が満たされると、イベント管理手段1304自身、もしくはイベント擬似発生条件検出手段1306が前記イベント情報のＤコマンドを使用して、不要なイベントデータの削除を行う。
【００７５】
次に、クライアント起動時発生イベント一覧表1504について述べる。通信回線1010に接続されている計算機1000のクライアントおよび不図示の他の計算機のクライアントが起動したかどうかを知るには、どのクライアントが起動時にどのイベントを発行するかを知る必要がある。このために、クライアント起動時発生イベント一覧表1504を作成しておく。このファイルは、クライアントのIDとそのクライアントが起動したときに発生されるクライアント起動時発生イベントのイベントIDとの対の一覧である。
【００７６】
図１１に、クライアント起動時発生イベント一覧表1504の例を示す。このファイルは、クライアント名のフィールドとそのクライアントが起動時に発生するイベントのIDのフィールドとからなる。第１カラム（11000）はクライアント名を示し、第２カラム（11002）は前記クライアントが起動時に発生するイベントのIDを示す。
【００７７】
図１１のクライアント起動時発生イベント一覧表1504は、クライアント１（client1）が起動したときイベントIDが「100」のクライアント起動時発生イベントが発生し、クライアント２（client2）が起動したときイベントIDが「213」のクライアント起動時発生イベントが発生し、クライアント３（client3）が起動したときイベントIDが「125」のクライアント起動時発生イベントが発生することを示している。
【００７８】
次に、自動運転システム1100における運用ルールの例について述べる。図１２は、計算機システム1000内で発生したイベントに対して行う処理を定義した運用ルール定義ファイル1500の内容例を示す。
【００７９】
図１２の運用ルールでは、コロン「：」の前半にイベントIDを記述し、コロン「：」の後半に当該イベントIDに応じて実行すべきコマンドを記述している。図１２の１行目の運用ルールは、「イベントIDが100（16000）のイベントが発生したら、startup_client_1コマンドを実行する（16002）」ということを意味している。また、図１２の２行目の運用ルールは、「イベントIDが120（16004）かつイベントメッセージが"KJAE903"で始まる（16006）イベントが発生したら、startup_client_2コマンドを実行する（16008）」ということを意味している。
【００８０】
既に図１、図３の処理3002，3600、および図７で説明したように、イベント保存条件検出手段1302では、運用ルール定義ファイル1500からイベント保存条件を抽出する。また、図１、図５の処理5600、および図８で説明したように、イベント擬似発生条件検出手段1306は、運用ルール定義ファイル1500およびクライアント起動時発生イベント一覧ファイル1504からイベント擬似発生条件を抽出する。図１３に、イベント保存条件およびイベント擬似発生条件の抽出の例を示す。
【００８１】
図１３において、12000はクライアント１の運用ルール定義ファイルを示す。12002はクライアント２の運用ルール定義ファイルを示す。12004はクライアント起動時発生イベント一覧表ファイル1504を示す。
【００８２】
クライアント１の運用ルール定義ファイル（12000）では、イベントIDが100のイベントが発生するとclient_command_1を実行するというルールが定義されている。また、クライアント２の運用ルール定義ファイル（12002）では、イベントIDが110かつメッセージに"test"という文字列が含まれているイベントが発生するとcilent_command_2を実行し、イベントIDが120のイベントが発生するとclient_command_3を実行するように定義されている。また、クライアント起動時発生イベント一覧ファイル（12004）では、クライアント１が起動するときはイベントIDが200のクライアント起動時発生イベントが、またクライアント２が起動するときはイベントIDが210のクライアント起動時発生イベントが発生することが記述されている。
【００８３】
イベント保存条件（12006）を生成するには、図７で説明したように、運用ルール定義ファイル（12000，12002）の条件の部分を抽出する（12300，12302）。また、イベント擬似発生条件（12008）を生成するには、運用ルール定義ファイル（12000、12002）およびクライアント起動時発生イベント一覧ファイル（12004）から生成する（12304）。
【００８４】
イベント擬似発生条件12008では、第１カラム（12010）のイベントが発生したとき、それに対応する第２カラムのイベント（12012）を（当該イベントが保存されていれば）擬似発生することを示している。この図のイベント擬似発生条件12008では、「クライアント１が立ち上がってイベントIDが200のクライアント起動時発生イベントが発生したとき、イベントIDが100のイベントを擬似発生する」というイベント擬似発生条件、および「クライアント２が立ち上がってイベントIDが210のクライアント起動時発生イベントが発生したとき、イベントIDが110かつメッセージに"test"という文字列が含まれているイベントを擬似発生する」というイベント擬似発生条件を示している。
【００８５】
例えば、クライアント１が起動した後にイベントIDが100のイベントが発生する場合は、クライアント１でそのイベントIDが100のイベントを受け取ることができる。また、イベントIDが100のイベントが先に発生した場合（この場合、当該イベントIDが100のイベントは保存される）も、クライアント１が立ち上がってイベントIDが200のクライアント起動時発生イベントが発生したとき、イベント擬似発生条件に基づいてイベントIDが100のイベントが擬似発生され、クライアント１でその擬似発生されたイベントを受け取ることができる。
【００８６】
なお、本実施例では、主として自動運転システムの運用ルールからイベント擬似発生条件を自動生成する例を説明した。しかし、これだけでは充分でない場合もあり、その場合は、ユーザが定義する擬似発生条件定義ファイル1502を記述することで、ユーザが自らイベント擬似発生条件を定義することが可能である。
【００８７】
また、本実施例では、簡単のため、１台の計算機に対して１つのクライアントに着目したが、これに限らず、各計算機で複数のプロセスが動作する場合に対して本発明を適用してもよい。例えば、図１の運用ルール1500をプロセス単位で設け、ファイル1504には各プロセスの起動時発生イベントを登録しておき、図７や図８の処理では計算機単位でなくプロセス単位に処理を行なうようにすれば、プロセス間でやり取りされるイベントの制御に本発明を適用できる。
【００８８】
次に、本発明の第２の実施例を説明する。この第２の実施例では、クライアントサーバシステムにおいてサーバ起動イベントおよびクライアント起動イベントを制御して不都合の生じない順序にする方法を示す。
【００８９】
図１４は、第２の実施例のシステム構成を示す。本システムでは、計算機15002が通信回線15000に接続されている。さらに、計算機15002上ではイベントサービス15200が提供されており、サーバ15204およびクライアント15206が動作している。また、サーバ15204およびクライアント15206の起動イベントを制御するイベント制御装置15202が動作している。このとき、クライアント15206は、サーバ15204の起動イベントを受けとり、動作を開始（サーバ15204が提供するサービスの利用開始）するものとする。イベント制御装置15202は、上述の第１の実施例のイベント制御装置1202と同様の装置である。
【００９０】
図１４のようなシステムにおいて、クライアント15206が先に起動した場合は、後で起動したサーバ15204が発生するサーバ起動イベントをクライアント15206で受けとることができるため、正常に動作する。しかし、サーバ15204が先に起動すると、後から起動したクライアント15206はサーバ15204の起動イベントを受けとれないため、いつまでたってもサーバ15204の起動イベント待ちになる。
【００９１】
そこで、イベント制御装置15202では、サーバ15204の起動イベント15402を受け取り（15400）、そのイベントを保存しておき、後から起動したクライアント起動イベント15406を受けとったとき（15400）、前記保存しておいたサーバ15204の起動イベントを擬似発生する（15404）。クライアント15206は、その擬似発生したイベントを受け取る（15408）。これにより、クライアント15206は、後から起動した場合でも先に起動したサーバ15204の起動イベントを受けとることができる。
【００９２】
図１５に、イベント制御装置15202におけるそのような処理の流れを示す。
【００９３】
初期化（17000）の後、イベントが発生するのを待ち（17002）、発生したイベントがサーバ起動イベントかどうかを調べる（17300）。サーバ起動イベントならば、それが自イベント制御装置15202にて発生した擬似イベントかどうかを調べる（17302）。受けとったイベントが擬似イベントでなければ、そのサーバ起動イベントを保存し（17004）、処理17002に戻る。
【００９４】
処理17300で受けとったイベントがサーバ起動イベントでなかった場合は、次にクライアント起動イベントかどうかを調べる（17304）。クライアント起動イベントならば、すでにサーバ起動イベントが検知されているかどうかを調べ（17306）、検知されていればサーバ起動イベントが保存されているから、保存しているサーバ起動イベントを擬似発生して（17006）、処理17002に戻る。処理17304でクライアント起動イベントでないとき、あるいは処理17306でサーバ起動イベントが保存されていないときは、処理17002に戻る。
【００９５】
次に、本発明の第３の実施例を説明する。この実施例は、上述の第２の実施例におけるサーバ/クライアント起動イベントの制御方法を自動運転システムの運用ルールを記述することで実現する方法を示すものである。そのような制御を行う運用ルールを説明する前に、運用ルールで、サーバの起動イベントを受信するとクライアントがサービスを利用開始するという内容の定義を行った例を、図１６に示す。
【００９６】
図１６において、対象となるイベント（13000）はサーバ起動イベントであり、対象となる操作（13004）はクライアントのサービス利用開始コマンド（サーバのサービスの利用を開始するコマンド）である。これらのイベントおよびコマンドをセパレータ（13002）で区切っている。このような運用ルールを指定しておくことにより、サーバ起動イベント（13000）が発生するとクライアントのサービス利用開始コマンド（13004）が実行される。
【００９７】
図１７に、運用ルールで上述の第２の実施例に示した制御を実現した例を示す。本実施例では、サーバとクライアントのプロセスが実行されている計算機システムで、第３のプロセスが実行されており、その第３のプロセス（イベント制御装置と見ることができる）が図１７の運用ルールにしたがって自動運転していることを前提とする。
【００９８】
図１７の運用ルールは、図１６の運用ルールと同様の表記で記述されている。14002，14014は、イベントとコマンドとを分けるセパレータ（図１６の13002に対応）である。
【００９９】
図１７の運用ルールでは、クライアント起動イベントを検知すると（14000）、イベントが発生したことをファイルを作成することで記録しておく（14004）。また、すでにサーバ起動イベントが発生している場合（14006）、サーバの起動イベントを送信（擬似発生）する（14008）。
【０１００】
一方、サーバ起動イベントを検知すると（14012）、サーバ起動を示すファイルを作成し（14016）、クライアントがすでに起動していれば（14018）、クライアントのサービスを開始するコマンド（14020）を実行する。
【０１０１】
このような運用ルールを定義しておくことで、クライアントが後に起動しても、以前に発生したサーバ起動イベントを擬似発生することができる。
【０１０２】
【発明の効果】
以上説明したように、本発明によれば、イベント発生のタイミングや発生回数などを自動的に制御できる。また、複数のイベントが全て発生したときに処理を行うという指定が容易にできるようになる。
【０１０３】
また、イベント情報を保存するイベントは自動的に選択されるため、計算機資源の無駄な使用やユーザの手間を削減することができ、ユーザが指定する場合に比べ、指定漏れや指定誤りを減らすことができる。
【０１０４】
さらに、クライアントサーバシステムにおいて、サーバがクライアントよりも先に起動してもクライアントに対してサーバ起動イベントを自動的に送信することが可能になるため、クライアントとサーバの起動順序の制限を解消することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例のシステム構成の例を示す図
【図２】イベント検出手段のフローチャートを示す図
【図３】イベント保存条件検出手段のフローチャートを示す図
【図４】イベント管理手段のフローチャートを示す図
【図５】イベント擬似発生条件検出手段のフローチャートを示す図
【図６】イベント擬似発生手段のフローチャートを示す図
【図７】イベント保存条件抽出アルゴリズムのフローチャートを示す図
【図８】イベント擬似発生条件抽出アルゴリズムのフローチャートを示す図
【図９】イベント擬似発生条件検出アルゴリズムのフローチャートを示す図
【図１０】イベント管理手段に対するコマンド表を示す図
【図１１】クライアント起動時発生イベント一覧表を示す図
【図１２】運用ルール定義ファイルの例を示す図
【図１３】保存条件および擬似発生条件の生成例を示す図
【図１４】サーバクライアントシステムにおけるイベント発生順序の制御を示す図
【図１５】イベント発生順序の制御手順のフローチャートを示す図
【図１６】運用ルールの例を示す図
【図１７】運用ルールによる実現例を示す図
【符号の説明】
1000…計算機、1010…通信回線、1104…イベントサービス、1100…自動運転システム、1202…イベント制御装置、1300…イベント検出手段、1302…イベント保存条件検出手段、1304…イベント管理手段、1306…イベント擬似発生条件検出手段、1308…イベント擬似発生手段、1310…イベント情報、1500…運用ルール定義ファイル、1502…擬似発生条件定義ファイル、1504…クライアント起動時発生イベント一覧ファイル。
【図１】
0003741371.tif 000002
【図２】
0003741371.tif 000003
【図３】
0003741371.tif 000004
【図４】
0003741371.tif 000005
【図５】
0003741371.tif 000006
【図６】
0003741371.tif 000007
【図７】
0003741371.tif 000008
【図８】
0003741371.tif 000009
【図９】
0003741371.tif 000010
【図１０】
0003741371.tif 000011
【図１１】
0003741371.tif 000012
【図１２】
0003741371.tif 000013
【図１３】
0003741371.tif 000014
【図１４】
0003741371.tif 000015
【図１５】
0003741371.tif 000016
【図１６】
0003741371.tif 000017
【図１７】
0003741371.tif 000018