(57)【要約】【課題】複数の処理装置の間で、動的なルール移動を実現する【解決手段】制御装置は、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたり、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御し、前記所定期間経過後、前記第１の処理装置から前記特定の処理ルールの設定を解除する。【選択図】図１６
2015028679.tif 000002
【特許請求の範囲】
【請求項１】
所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含む処理ルールが設定され、イベントを振り分ける振り分け装置からイベントを受信し、自装置に設定された前記処理ルールを参照し、前記受信したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置のうち、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、制御装置。
【請求項２】
前記処理ルールが含む条件式は、前記所定の期間内に複数のイベントを検出することを規定し、
前記制御装置は、前記処理ルールによって規定される期間に基づいて決定される期間にわたって、前記特定の処理ルールが含む条件式によって検出されるイベントが、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう、前記振り分け装置を制御する、
請求項１に記載の制御装置。
【請求項３】
前記制御装置は、少なくとも前記処理ルールによって規定される期間にわたって、前記特定の処理ルールが含む条件式によって検出されるイベントが、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう、前記振り分け装置を制御する、
請求項２に記載の制御装置。
【請求項４】
前記制御装置は、前記特定の処理ルールが含む条件式において検出される全てのイベントが、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう、前記振り分け装置を制御する、
請求項１から３のいずれかに記載の制御装置。
【請求項５】
前記振り分け装置には振り分けルールが設定されており、
前記振り分けルールは、受信したイベントの内容に基づいて当該イベントを前記複数の処理装置のうちいずれの処理装置に振り分けるかを規定し、
前記振り分け装置は、イベントを受信し、自装置に設定された前記振り分けルールを参照し、前記受信したイベントと前記振り分けルールとに基づいて、前記イベントを前記処理装置に振り分け、
前記制御装置は、前記特定の処理ルールが含む条件式によって検出されるイベントが、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられることを規定する振り分けルールを生成し、前記振り分けルールを前記振り分け装置に設定する、
請求項１から４のいずれかに記載の制御装置。
【請求項６】
前記制御装置は前記所定期間経過後に前記特定の処理ルールの設定先を変更した後の状態における、前記第１の処理装置に設定されている処理ルール、および、前記第２の処理装置に設定されている処理ルールに基づいて、前記第１の処理装置および前記第２の処理装置にイベントを振り分けるように、前記振り分け装置を制御する、
請求項１から５のいずれかに記載の制御装置。
【請求項７】
前記制御装置は、前記第１の処理装置の負荷が所定の閾値を超えた場合に、前記第１の処理装置に設定されている前記特定の処理ルールの設定先を前記第１の処理装置から前記第２の処理装置に変更する、
請求項１から６のいずれかに記載の制御装置。
【請求項８】
前記第１の処理装置には複数の処理ルールが設定されており、
前記制御装置は、前記第１の処理装置に設定されている複数の処理ルールのうち、前記処理ルールによって規定される期間が短い処理ルールから優先して、前記特定の処理ルールとして選択する、
請求項１から７のいずれかに記載の制御装置。
【請求項９】
前記制御装置は、前記特定の処理ルールが含む条件式によって検出されるイベントが前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられている間、前記特定のルールが含む条件式が成立した場合に実行する処理内容を、前記第２の処理装置が実行しないように制御する、
請求項１から８のいずれかに記載の制御装置。
【請求項１０】
前記制御装置は、前記第１の処理装置に設定されている複数の処理ルールのうち、前記処理ルールによって規定される期間が短く、かつ、前記処理ルールが前記処理装置に設定されることにより、前記処理装置に発生する負荷が大きい処理ルールから優先して、前記特定の処理ルールとして選択する、
請求項８に記載の制御装置。
【請求項１１】
前記制御装置は、前記複数の処理装置のうち、前記特定の処理ルールが含む条件式によって検出されるイベントと同一のイベントを検出することを規定する条件式を含む処理ルールが既に設定されている処理装置を、前記第２の処理装置として選択する、
請求項１から８のいずれかに記載の制御装置。
【請求項１２】
複数の処理装置にイベントを振り分ける振り分け装置と、
所定の期間内にどのようなイベントを検出するかを規定する条件式、および、前記条件式が成立した場合に実行する処理内容を規定する情報を含む処理ルールが設定され、前記振り分け装置からイベントを受信し、自装置に設定された処理ルールを参照し、前記受信したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置と、
に通信可能に接続されたコンピュータの制御方法であって、
第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、
前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御し、
前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、
制御方法。
【請求項１３】
複数の処理装置にイベントを振り分ける振り分け装置と、
所定の期間内にどのようなイベントを検出するかを規定する条件式、および、前記条件式が成立した場合に実行する処理内容を規定する情報を含む処理ルールが設定され、前記振り分け装置からイベントを受信し、自装置に設定された処理ルールを参照し、前記受信したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置と、に通信可能に接続されたコンピュータに、
第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定する処理と、
前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御する処理と、
前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する処理と、を実行させるプログラム。
【請求項１４】
振り分け装置と、処理ルールが設定された複数の処理装置と、制御装置と、
を含むイベント処理システムであって、
前記振り分け装置は、前記複数の処理装置にイベントを振り分け、
前記処理ルールは、所定の期間内にどのようなイベントを検出するかを規定する条件式、および、前記条件式が成立した場合に実行する処理内容を規定する情報を含み、
前記処理装置は、前記振り分け装置からイベントを受信し、自装置に設定された処理ルールを参照し、前記受信したイベントと前記処理ルールとに基づいて前記処理内容を実行し、
前記制御装置は、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、
イベント処理システム。
【請求項１５】
所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含む処理ルールと、時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含むイベント取得ルールと、が設定され、自装置に設定されたイベント取得ルールを参照し、前記イベント取得ルールが規定するイベントを前記イベントバッファから取得し、自装置に設定された処理ルールを参照し、前記取得したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置のうち、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置から取得されるようなイベント取得ルールを生成し、前記イベント取得ルールを前記第１の処理装置と前記第２の処理装置のそれぞれに設定し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、制御装置。
【請求項１６】
所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含む処理ルールと、
時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含むイベント取得ルールと、が設定され、
自装置に設定されたイベント取得ルールを参照し、前記イベント取得ルールが規定するイベントを前記イベントバッファから取得し、
自装置に設定された処理ルールを参照し、前記取得したイベントと前記処理ルールとに基づいて前記処理内容を実行する、
複数の処理装置に、通信可能に接続されたコンピュータが、
第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、
前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置から取得されるようなイベント取得ルールを生成し、
前記イベント取得ルールを前記第１の処理装置と前記第２の処理装置のそれぞれに設定し、
前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、
制御方法。
【請求項１７】
所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含む処理ルールと、
時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含むイベント取得ルールと、が設定され、
自装置に設定されたイベント取得ルールを参照し、前記イベント取得ルールが規定するイベントを前記イベントバッファから取得し、
自装置に設定された処理ルールを参照し、前記取得したイベントと前記処理ルールとに基づいて前記処理内容を実行する、
複数の処理装置に、通信可能に接続されたコンピュータに、
第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定する処理と、
前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置から取得されるようなイベント取得ルールを生成する処理と、
前記イベント取得ルールを前記第１の処理装置と前記第２の処理装置のそれぞれに設定する処理と、
前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する処理と、
を実行させる、プログラム。
【請求項１８】
処理ルールおよびベント取得ルールが設定された複数の処理装置と、制御装置と、
を含むイベント処理システムであって、
前記処理ルールは、所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含み、
前記イベント取得ルールは、時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含み、
前記処理装置は、自装置に設定されたイベント取得ルールを参照し、前記イベント取得ルールが規定するイベントを前記イベントバッファから取得し、
前記処理装置は、自装置に設定された処理ルールを参照し、前記取得したイベントと前記処理ルールとに基づいて前記処理内容を実行し、
前記制御装置は、
第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、
前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置から取得されるようなイベント取得ルールを生成し、
前記イベント取得ルールを前記第１の処理装置と前記第２の処理装置のそれぞれに設定し、
前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、
イベント処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理装置が分散して複合イベント処理を実行する複合イベント処理システム、並びに、複合イベント処理システムを制御する制御装置、制御方法およびプログラムに関する。
【背景技術】
【０００２】
近年では、大量のセンサーが、通信ネットワーク（以下、「ネットワーク」と記載）に接続されている。これらセンサーは、例えば電力消費量、交通情報、気温、株価の変動または位置情報など、様々な情報（イベント）を収集する。
【０００３】
また、近年では、大量のアプリケーションが、ネットワークに接続されている。これらアプリケーションは、ネットワークを介して、オペレータから、または、外部装置からの操作を受け付ける。
【０００４】
このような背景に基づいて、Ｍ２Ｍ（Ｍａｃｈｉｎｅ  ｔｏ  Ｍａｃｈｉｎｅ）という技術が注目を集めている。Ｍ２Ｍという技術によれば、アプリケーションは、センサーが収集したイベントをネットワークを介して受信する。そして、アプリケーションは、受信したイベントに基づいて状況を判断したり、処理を実行したりする。このようにＭ２Ｍという技術によれば、アプリケーションは、センサーが収集したイベントに基づいて人手を介することなく自律的に制御される。
【０００５】
また、イベントストリーム処理（ＥＳＰ：Ｅｖｅｎｔ  Ｓｔｒｅａｍ  Ｐｒｏｃｅｓｓｉｎｇ）という技術が注目を集めている。イベントストリーム処理という技術は、センサーなどが生成した大量のイベントをリアルタイムに処理する。また、複合イベント処理（ＣＥＰ：  Ｃｏｍｐｌｅｘ  Ｅｖｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇ）という技術が注目を集めている。複合イベント処理という技術は、生成されたイベントの組み合わせに応じてアプリケーションが特定の処理を実行する。
【０００６】
特許文献１は、複合イベント処理システムの一例を開示する。図２８は、特許文献１が開示する複合イベント処理システムの概要を説明する図である。
【０００７】
図２８に示すように、特許文献１が開示する複合イベント処理システムは、アプリケーション（ＡＰ）５０００と、処理サーバ４０００と、コンテキスト依存振り分け器３０００と、デバイス２０００と、イベント処理分散制御装置６０００と、を含む。
【０００８】
デバイス２０００は、イベントを生成する。コンテキスト依存振り分け器３０００は、デバイス２０００が生成したイベントを処理サーバ４０００に振り分ける。処理サーバ４０００は、コンテキスト依存振り分け器３０００からイベントを受信し、受信したイベントを処理し、アプリケーション５０００にイベントの処理結果を通知する。
【０００９】
イベント処理分散制御装置６０００は、アプリケーション５０００からの要求に基づき以下に示す処理を行う。すなわちイベント処理分散制御装置６０００は、イベントの内容（コンテキスト）に基づく処理を示す処理ルールを、処理サーバ４０００に設定する。イベント処理分散制御装置６０００は、更に、処理ルールを実行するために必要なイベントが、処理サーバ４０００に適切に分配されるように、振り分けルールをコンテキスト依存振り分け器３０００に設定する。
【００１０】
コンテキスト依存振り分け器３０００には、イベント処理分散制御装置６０００により、振り分けルールがあらかじめ設定されている。コンテキスト依存振り分け器３０００は、イベントを受信する。コンテキスト依存振り分け器３０００は、受信したイベントの内容（コンテキスト）と振り分けルールとに基づいて、受信したイベントを、複数の処理サーバ４０００のうちいずれの処理サーバ４０００に転送するかを決定する。
【００１１】
処理サーバ４０００には、イベント処理分散制御装置６０００により、処理ルールがあらかじめ設定されている。処理サーバ４０００は、転送されたイベントを、処理ルールに基づいて処理する。処理サーバ４０００は、イベント処理結果をアプリケーション５０００に送信する。
【００１２】
特許文献２は、複合イベント検出条件を動的に変更する複合イベント処理装置を開示する。特許文献２が開示する技術において、ルール比較部は、複合イベント検出条件式の変更に際し、変更の前後における複合イベント条件式を比較する。そして、変更箇所特定部は、比較結果に基づいて変更箇所を特定し、並行動作部が、特定された変更箇所を含む複合イベント検出条件式について変更前後の複合イベント条件式を並行して動作させる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特許第４１６１９９８号公報
【特許文献２】特開２０１２−７９２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
特許文献１は、複数の処理装置の間で、動的に処理ルールを移動することについては何ら開示しない。
【００１５】
特許文献２は、ＣＥＰ定義データベースに登録された複合イベント検出条件を動的に変更する構成を開示する。しかし、特許文献２は、複数の処理サーバの間で、動的に処理ルールを移動することについては何ら開示しない。
【００１６】
本発明は、複数の処理装置の間で、動的なルール移動を実現することを主たる目的とする。
【課題を解決するための手段】
【００１７】
本発明の第１の側面は、所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含む処理ルールが設定され、イベントを振り分ける振り分け装置からイベントを受信し、自装置に設定された前記処理ルールを参照し、前記受信したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置のうち、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、制御装置である。
【００１８】
本発明の第２の側面は、複数の処理装置にイベントを振り分ける振り分け装置と、所定の期間内にどのようなイベントを検出するかを規定する条件式、および、前記条件式が成立した場合に実行する処理内容を規定する情報を含む処理ルールが設定され、前記振り分け装置からイベントを受信し、自装置に設定された処理ルールを参照し、前記受信したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置と、に通信可能に接続されたコンピュータの制御方法であって、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、制御方法である。
【００１９】
本発明の第３の側面は、複数の処理装置にイベントを振り分ける振り分け装置と、所定の期間内にどのようなイベントを検出するかを規定する条件式、および、前記条件式が成立した場合に実行する処理内容を規定する情報を含む処理ルールが設定され、前記振り分け装置からイベントを受信し、自装置に設定された処理ルールを参照し、前記受信したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置と、に通信可能に接続されたコンピュータに、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定する処理と、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御する処理と、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する処理と、を実行させるプログラムである。
【００２０】
本発明の第４の側面は、振り分け装置と、処理ルールが設定された複数の処理装置と、制御装置と、を含むイベント処理システムであって、前記振り分け装置は、前記複数の処理装置にイベントを振り分け、前記処理ルールは、所定の期間内にどのようなイベントを検出するかを規定する条件式、および、前記条件式が成立した場合に実行する処理内容を規定する情報を含み、前記処理装置は、前記振り分け装置からイベントを受信し、自装置に設定された処理ルールを参照し、前記受信したイベントと前記処理ルールとに基づいて前記処理内容を実行し、前記制御装置は、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置に振り分けられるよう前記振り分け装置を制御し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、イベント処理システムである。
【００２１】
本発明の第５の側面は、所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含む処理ルールと、時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含むイベント取得ルールと、が設定され、自装置に設定されたイベント取得ルールを参照し、前記イベント取得ルールが規定するイベントを前記イベントバッファから取得し、自装置に設定された処理ルールを参照し、前記取得したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置のうち、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置から取得されるようなイベント取得ルールを生成し、前記イベント取得ルールを前記第１の処理装置と前記第２の処理装置のそれぞれに設定し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、制御装置である。
【００２２】
本発明の第６の側面は、所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含む処理ルールと、時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含むイベント取得ルールと、が設定され、自装置に設定されたイベント取得ルールを参照し、前記イベント取得ルールが規定するイベントを前記イベントバッファから取得し、自装置に設定された処理ルールを参照し、前記取得したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置に、通信可能に接続されたコンピュータが、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置から取得されるようなイベント取得ルールを生成し、前記イベント取得ルールを前記第１の処理装置と前記第２の処理装置のそれぞれに設定し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、制御方法である。
【００２３】
本発明の第７の側面は、所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含む処理ルールと、時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含むイベント取得ルールと、が設定され、自装置に設定されたイベント取得ルールを参照し、前記イベント取得ルールが規定するイベントを前記イベントバッファから取得し、自装置に設定された処理ルールを参照し、前記取得したイベントと前記処理ルールとに基づいて前記処理内容を実行する、複数の処理装置に、通信可能に接続されたコンピュータに、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定する処理と、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置から取得されるようなイベント取得ルールを生成する処理と、前記イベント取得ルールを前記第１の処理装置と前記第２の処理装置のそれぞれに設定する処理と、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する処理と、を実行させる、プログラムである。
【００２４】
本発明の第８の側面は、処理ルールおよびベント取得ルールが設定された複数の処理装置と、制御装置と、を含むイベント処理システムであって、前記処理ルールは、所定の期間内にどのようなイベントを検出するかを規定する条件式と、前記条件式が成立した場合に実行する処理内容を規定する情報と、を含み、前記イベント取得ルールは、時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含み、前記処理装置は、自装置に設定されたイベント取得ルールを参照し、前記イベント取得ルールが規定するイベントを前記イベントバッファから取得し、前記処理装置は、自装置に設定された処理ルールを参照し、前記取得したイベントと前記処理ルールとに基づいて前記処理内容を実行し、前記制御装置は、第１の処理装置に設定されている特定の処理ルールの設定先を前記第１の処理装置から第２の処理装置に変更する際に、前記特定の処理ルールを前記第２の処理装置に設定し、前記特定の処理ルールが含む条件式によって検出されるイベントが、所定期間にわたって、前記第１の処理装置と前記第２の処理装置との両方の処理装置から取得されるようなイベント取得ルールを生成し、前記イベント取得ルールを前記第１の処理装置と前記第２の処理装置のそれぞれに設定し、前記特定の処理ルールの設定を、前記所定期間経過後に前記第１の処理装置から解除する、イベント処理システムである。
【００２５】
また、本発明の目的は、上記のプログラムが格納されたコンピュータ読み取り可能な記録媒体によっても達成される。
【発明の効果】
【００２６】
本発明によれば、複数の処理装置の間で、動的なルール移動を実現することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施形態における、イベント処理システム１０００の構成を示すブロック図である。
【図２】本発明の第１の実施形態における、振り分けルール１１０を説明する図である。
【図３】本発明の第１の実施形態における、制御装置３００の構成を示すブロック図である。
【図４】本発明の第１の実施形態における、振り分けルール１１１を説明する図である。
【図５】本発明の第１の実施形態における、振り分けルール１１２を説明する図である。
【図６】本発明の第１の実施形態における、イベント処理装置１０００の動作を説明するシーケンス図である。
【図７】本発明の第２の実施形態における、イベント処理システム１００１の構成を示すブロック図である。
【図８】本発明の第２の実施形態における、制御装置３０１の構成を示すブロック図である。
【図９】本発明の第２の実施形態における、イベント処理システム１００２の構成を説明するブロック図である。
【図１０】本発明の第３の実施形態における、制御装置３０２の構成を説明するブロック図である。
【図１１】本発明の第３の実施形態における、ルール移動前の振り分けルール１１３を説明する図である。
【図１２】本発明の第３の実施形態における、ルール移動後の振り分けルール１１４を説明する図である。
【図１３】本発明の第３の実施形態における、イベントコピー差分の一覧を示す図である。
【図１４】本発明の実施例における、イベント処理システム１０００の詳細な構成の一例を示すブロック図である。
【図１５】本発明の実施例における、イベント処理システム１０００の詳細な動作の一例を示すシーケンス図である。
【図１６】本発明の第４の実施形態における、イベント処理システム１００３の構成を示すブロック図である。
【図１７】本発明の第５の実施形態における、イベント処理システム１００４の構成を示すブロック図である。
【図１８】本発明の第５の実施形態における、イベントバッファ５００が記憶する情報の一例を示す図である。
【図１９】本発明の第５の実施形態における、イベント取得ルール６１０Ａを説明する図である。
【図２０】本発明の第５の実施形態における、イベント取得ルール６１０Ｂを説明する図である。
【図２１】本発明の第５の実施形態における、イベント取得ルール６１１Ａを説明する図である。
【図２２】本発明の第５の実施形態における、イベント取得ルール６１１Ｂを説明する図である。
【図２３】本発明の第５の実施形態における、イベント取得ルール６１２Ａを説明する図である。
【図２４】本発明の第５の実施形態における、イベント取得ルール６１２Ｂを説明する図である。
【図２５】本発明の第５の実施形態における、イベント処理装置１００４の動作を説明するシーケンス図である。
【図２６】本発明の第６の実施形態における、イベント処理システム１００５の構成を示すブロック図である。
【図２７】本発明の制御装置のハードウェア構成の一例を示す図である。
【図２８】特許文献１が開示する、イベント処理システムの概要を説明する図である。
【発明を実施するための形態】
【００２８】
はじめに、理解を容易にするため、本発明の実施形態における複合イベント処理について簡単に説明する。
センサが生成する情報をイベントと呼ぶ。イベントは、当該イベントを生成したセンサを識別する情報（識別子：ＩＤ）、測定値または測定時刻などを互いに関連付けた情報である。
【００２９】
イベントは、処理装置により処理される。処理装置には、処理ルールが設定されている。処理装置は、イベントを受信し、自装置に設定された処理ルールを参照する。処理装置は、受信したイベントと処理ルールとに基づいて、センサの測定対象である人、物またはコンピュータなどの状態を推定したり、情報処理を実行したりする。
以降、「イベント処理」という言葉を、イベントと処理ルールとに基づいて処理装置が実行する処理、という意味で用いる。
【００３０】
複合イベント処理における処理ルールは、所定期間内に複数のイベントの組み合わせパターンを検出することを規定する条件式(Condition)と、前記条件が成立した場合に実行する処理内容を規定する情報(Action)と、を含む。
【００３１】
処理ルールの一つ目の具体例を下記に示す。一つ目の具体例を用いて、処理装置が処理ルールをどのように参照するかを説明する。
【００３２】
処理ルール１：「Condition（温度センサＡの測定値が５０℃（摂氏）を超えていることを示すイベントを検出し、その後１０分以内に、温度センサＢの測定値が５０℃を超えていることを示すイベントを検出したら）、Action（処理Ｘを実行する）」。
【００３３】
例えば、上記処理ルール１が設定されている処理装置が、時刻Ｔに、温度センサＡの測定値が５０℃を超えていることを示すイベントを受信した場合を想定する。処理装置は、処理ルール１が規定する条件に合致したイベントを受信したことを検出する。処理装置は、「時刻Ｔに、温度センサＡの測定値が５０℃を超えていることを示すイベントを検出した」という情報（中間状態）を記憶する。
【００３４】
以下、「中間状態」という用語を、ある時点において、処理ルールが含む条件式がどれだけ満たされているかを示す情報、という意味で用いる。言い換えると、「中間状態」は、処理装置が、条件式の成立を判定するために記憶しておくべき情報である。処理装置は、時刻Ｔから少なくとも１０分間の間、中間状態を記憶する。処理装置はさらに、時刻Ｔから１０分以内に、温度センサＢの測定値が５０℃を超えていることを示すイベントを検出すれば、処理Ｘを実行する。
【００３５】
このように、処理装置は、１）処理ルールに含まれる条件式（Condition）に合致するイベントを検出する処理、２）中間状態を更新する処理、および、３）条件式が成立した場合に処理内容(Action)を実行する処理、の３つの処理を行う。処理装置は、処理ルールごとに、中間状態を管理する。
【００３６】
処理ルールの二つ目の具体例を下記に示す。二つ目の具体例を用いて、本明細書における用語の定義を説明する。
【００３７】
処理ルール２：「Condition（事象Ａを示すイベントと、事象Ｂを示すイベントと、事象Ｃを示すイベントとを、この順番に２０分以内に検出したら）、Action（処理Ｙを実行する）」。
【００３８】
以下、理解を容易にするため、例えば、上記処理ルール２は下記のように記載する。「Condition (Ａ→Ｂ→Ｃ within 20minutes)、Action（Do Ｙ）」。ここで、記号”→”は、イベントを指定された順番に検出することを表す。上記処理ルール２の条件に含まれる”within 20minutes”は、所定のイベントの組み合わせパターンが２０分以内に検出されることを示す。
【００３９】
以下、処理ルールに含まれる「within」句において規定された期間を、「処理ルールによって規定される期間」と記載する場合がある。処理装置は、少なくとも処理ルールによって規定される期間にわたり、当該処理ルールの中間状態を管理する。
【００４０】
また、処理ルールが含む条件式によって検出されるイベントを、「処理ルールが検出するイベント」と記載する場合がある。例えば、処理ルール２が検出するイベントは、イベントＡ、ＢおよびＣである。
【００４１】
以下、理解を容易にするため、事象Ａを示すイベントを、「イベントＡ」または単に「Ａ」と記載することがある。以下、理解を容易にするため、「事象Ａを示すイベント」を「センサーの識別子がＡであるセンサから受信したイベント」であるとして説明を続ける。
【００４２】
＜第１の実施形態＞
図１は、第１の実施形態にかかるイベント処理システム１０００の構成を示すブロック図である。図１に示すように、イベント処理システム１０００は、振り分け装置１００と、複数の処理装置２００と、制御装置３００とを含む。以下、複数の処理装置２００を互いに区別する必要がある場合は、処理装置２００Ａ、処理装置２００Ｂ・・・と記載する。
【００４３】
振り分け装置１００には、振り分けルール１１０が設定される。振り分け装置１００は、イベントを受信し、自装置に設定された振り分けルール１１０を参照する。振り分け装置１００は、例えば、ネットワークを介して複数のセンサと接続されていてもよい。振り分け装置１００は、これら複数のセンサからイベントを時系列データ（イベントストリーム）として受信してもよい。振り分け装置１００は、受信したイベントと振り分けルールとに基づいて、複数の処理装置２００にイベントを振り分ける。
【００４４】
処理装置２００には処理ルールが設定される。処理装置２００は、振り分け装置１００からイベントを受信し、処理ルールを参照する。処理装置２００は、受信したイベントと処理ルールとに基づいて、処理ルールにおいて規定された処理内容を実行する。
【００４５】
図２は、振り分けルール１１０を説明する図である。図２に示す振り分けルール１１０は、図１に示す振り分け装置１００に設定されている振り分けルールである。振り分けルール１１０は、振り分け装置１００が受信したイベントの内容に基づいて、当該イベントをいずれの処理装置２００に振り分けるかを規定するルールである。図２に示すように、振り分けルール１１０は、イベントの内容と、イベントの振り分け先である処理装置２００と、を関連付けた情報である。図２に示す振り分けルール１１０は、イベントの内容がＡ、Ｂ、ＣまたはＤであるイベントを、処理装置２００Ａに振り分けるように規定する。図２に示す振り分けルール１１０は、イベントの内容がＡまたはＥであるイベントを、処理装置２００Ｂに振り分けるように規定する。振り分けルール１１０が設定された振り分け装置１００は、例えば、イベントＡを受信すると、イベントＡを処理装置２００Ａおよび処理装置２００Ｂに振り分ける。振り分けルール１１０が設定された振り分け装置１００は、例えば、イベントＢを受信すると、イベントＢを処理装置２００Ａに振り分ける。振り分けルールは、後述する制御装置３００により生成され、制御装置３００により振り分け装置１００に設定される。
【００４６】
図１を参照する説明に戻る。処理装置２００には、一つまたは複数の処理ルールが設定される。処理ルールは、後述する制御装置３００により処理装置２００に設定される。図１に示す例では、処理装置２００Ａには、処理ルール２１１および処理ルール２１２が設定されている。処理装置２００Ｂには、処理ルール２１３が設定されている。
【００４７】
処理ルール２１１、２１２および２１３が規定する条件および処理内容を、下記に示す：
・処理ルール２１１：Condition (Ａ→Ｄ within 30seconds) Action (DO Ｘ)、
・処理ルール２１２：Condition (Ａ→Ｂ→Ｃ within 10seconds) Action (DO Ｙ)、
・処理ルール２１３：Condition (Ａ→Ｅ within 2minutes) Action (DO Ｚ)。
【００４８】
処理装置２００Ａは、処理ルール２１１の中間状態および処理ルール２１２の中間状態をそれぞれ管理する。処理装置２００Ｂは、処理ルール２１３の中間状態を管理する。
【００４９】
制御装置３００は、「処理ルールを移動する」ことにより、複数の処理装置２００の間での負荷分散を行う。「処理ルールを移動する」とは、ある処理装置２００に設定されている特定の処理ルールの設定先を、当該ある処理装置から他の処理装置に変更することをいう。処理ルールを移動することにより、処理ルールの移動元の処理装置の負荷は軽くなり、処理ルールの移動先の処理装置の負荷は重くなる。
【００５０】
図３は、図１に示す制御装置３００の構成を示すブロック図である。図３に示すように、制御装置３００は、第１の選択部３１０と、第２の選択部３２０と、第３の選択部３３０と、ルール移動部３４０と、を備える。
【００５１】
第１の選択部３１０は、イベント処理システム１０００に含まれる複数の処理装置２００のうちから、処理ルールの移動元の処理装置２００を選択する機能を具備する。第１の選択部３１０が具備する機能は、既存技術を組み合わせることにより実現される。第１の選択部３１０は、負荷が重い処理装置２００を、処理ルールの移動元の処理装置２００として選択する。
【００５２】
第２の選択部３２０は、イベント処理システム１０００に含まれる複数の処理装置２００のうちから、処理ルールの移動先の処理装置２００を選択する機能を具備する。第２の選択部３２０が具備する機能は、既存技術を組み合わせることにより実現される。第２の選択部３２０は、負荷が軽い処理装置２００を、処理ルールの移動先の処理装置２００として選択する。
【００５３】
以下、「処理ルールの移動元の処理装置２００」を単に「移動元処理装置２００」と記載する。「処理ルールの移動先の処理装置２００」を単に「移動先処理装置２００」と記載する。「移動元処理装置２００」は、「第１の処理装置」である。「移動先処理装置２００」は、第１の処理装置とは異なる「第２の処理装置」である。
【００５４】
以下、制御装置３００は、処理装置２００Ａを移動元処理装置２００として選択し、処理装置２００Ｂを移動先処理装置２００として選択したものとして説明を続ける。
【００５５】
第３の選択部３３０は、移動元処理装置２００に複数の処理ルールが設定されている場合に、そのうちいずれの処理ルールを移動対象とするかを選択する。すなわち、係る移動対象である処理ルールは、複数の処理ルールのうちから選択された「特定の処理ルール」である。
【００５６】
第３の選択部３３０が、どのように移動対象である処理ルールを選択するかを説明する。上述したように、処理ルールは、所定の期間を規定する。具体的には、処理ルール２１１は、３０秒という期間を規定する。処理ルール２１２は、１０秒という期間を規定する。第３の選択部３３０は、移動元処理装置２００に設定された複数のルールのうち、処理ルールによって規定される期間が短い処理ルールを優先して、移動対象である処理ルールとして選択する。上述した例では、処理ルール２１２によって規定される期間（１０秒）のほうが、処理ルール２１１によって規定される期間（３０秒）よりも短い。よって、制御装置３００は、移動元処理装置２００Ａに設定されている処理ルール２１１と処理ルール２１２のうち、処理ルール２１２を移動対象である処理ルールとして選択する。
【００５７】
ルール移動部３４０は、処理ルールを移動する。処理ルールを移動する際、ルール移動部３４０は、振り分けルールを生成して振り分け装置１００に振り分けルールを設定する。また、ルール移動部３４０は、処理装置２００に処理ルールを設定する。また、ルール移動部３４０は、処理装置２００の動作を制御する。ルール移動部３４０の詳細は後述する。
【００５８】
次に、第１の実施形態にかかるイベント処理システム１０００の動作を、図１、図２、図４、図５および図６を用いて説明する。図６は、図１に示すイベント処理システム１０００の動作を説明するシーケンス図である。
【００５９】
まず、図６と、図１、図２、図４および図５との対応関係を説明する。図１は、ルール移動前におけるイベント処理システム１０００の状態を説明する図である。図２、図４および図５は、それぞれ振り分けルール１１０、１１１および１１２を説明する図である。図２は、ルール移動開始前の状態における振り分けルール１１０を説明する図である。図４は、ルール移動開始前かつルール移動終了前の状態における振り分けルール１１１を説明する図である。図５は、ルール移動終了後の状態における振り分けルール１１２を説明する図である。
【００６０】
図６に示すシーケンス図を説明する。制御装置３００は、いずれかの処理装置２００の負荷が所定の閾値を超えたタイミング、または、いずれかの処理装置２００の負荷が閾値を超えると予想されるタイミングなどにおいて、ルール移動の動作を開始する。第１の選択部３１０は移動元処理装置２００を選択する。第２の選択部３２０は移動先処理装置２００を選択する。第３の選択部３３０は移動対象である処理ルールを選択する（ステップＳ１０１）。以下、制御装置３００は、処理装置２００Ａを移動元処理装置として選択し、処理装置２００Ｂを移動先処理装置として選択し、処理ルール２１２を移動対象である処理ルールとして選択したものとして、説明を続ける。
【００６１】
次に、ルール移動部３４０は、移動対象である処理ルール（処理ルール２１２）を移動先処理装置２００Ｂに設定する（ステップＳ１０２）。ここで、ルール移動部３４０は、移動元処理装置２００Ａと移動先処理装置２００Ｂとを、それぞれ以下のように制御する。ルール移動部３４０は、移動元処理装置２００Ａについては、１）処理ルールに含まれる条件式（Condition）に合致するイベントを検出する処理、２）中間状態を更新する処理、および、３）条件式が成立した場合に処理内容(Action)を実行する処理、を行うように制御する。
【００６２】
その一方、ルール移動部３４０は、移動先の処理装置２００Ｂについては、１）処理ルールに含まれる条件式（Condition）に合致するイベントを検出する処理、および、２）中間状態を更新する処理、を行うように制御する。言い換えると、ルール移動部３４０は、移動先の処理装置２００Ｂについては、条件式が成立したとしても処理内容(Action)を実行しないように制御する。
【００６３】
さらに、ルール移動部３４０は、処理ルール２１２が検出するイベント、すなわちイベントＡ、ＢおよびＣが、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方に振り分けられるよう規定した振り分けルール１１１を生成する。ルール移動部３４０は、振り分けルール１１１を、振り分け装置１００に設定する（ステップＳ１０３）。
【００６４】
図６におけるステップＳ１０２に示す動作またはステップＳ１０３に示す動作が行われるタイミングを、以降、
「ルール移動の開始」と記載することがある。
【００６５】
なお、図６におけるステップＳ１０２に示す動作およびステップＳ１０３に示す動作が実行される順序は、この順番には限定されない。
【００６６】
図４は、図６に示すステップＳ１０３において生成される振り分けルール１１１を説明する図である。図４に示すように、振り分けルール１１１は、処理ルール２１２が検出するイベント、すなわちイベントＡ、ＢおよびＣが、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方に振り分けられるように規定する。
【００６７】
図６を参照する説明に戻る。次に、ルール移動部３４０は、処理ルール２１２によって規定される期間、すなわち１０秒間、待機する（ステップＳ１０４）。この間、移動元処理装置２００Ａと移動先処理装置２００Ｂには、処理ルール２１２が検出するイベント、すなわちイベントＡ、ＢおよびＣが並列に振り分けられる。この間は、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置が、それぞれ別々に処理ルール２１２の中間状態を管理することになる。
【００６８】
なお、ルール移動部３４０は、処理ルール２１２が規定する期間が経過したことを、必ずしも自身で測定する必要はない。例えば、処理ルール２１２が規定する期間が経過したことを、移動先処理装置２００Ｂが測定してもよい。この場合、ルール移動部３４０は、移動先処理装置２００Ｂから上記期間が経過した旨のメッセージを受け付けてもよい。ルール移動部３４０は、当該メッセージを受け付けたことをトリガーとしてステップＳ１０５に示す動作に進んでもよい。
【００６９】
次に、ルール移動部３４０は、移動先処理装置２００Ｂに対して「ルール有効化指令」を通知する（ステップＳ１０５）。「ルール有効化指令」とは、処理装置２００に対して、条件式が成立した場合に処理内容(Action)を実行することを許可する旨の通知である。
【００７０】
次に、ルール移動部３４０は、処理ルール２１２を移動した後の状態に基づいて、振り分けルール１１２を生成する。すなわち、ルール移動部３４０は、移動元処理装置２００Ａに設定されている処理ルール（処理ルール２１１）および移動先処理装置２００Ｂに設定されている処理ルール（処理ルール２１２および処理ルール２１３）に基づいて、振り分けルール１１２を生成する。ルール移動部３４０は、生成した振り分けルール１１２を、振り分け装置１００に設定する（ステップＳ１０６）。
【００７１】
図５は、図６に示すステップＳ１０６において生成される振り分けルール１１２を説明する図である。図５に示すように、振り分けルール１１２は、移動元処理装置２００Ａには、イベントＡおよびＤが振り分けられるように、移動先処理装置２００Ｂには、イベントＡ、Ｂ、ＣおよびＥが振り分けられるように規定する。
【００７２】
図６を参照する説明に戻る。次に、ルール移動部３４０は、移動元処理装置２００Ａから、処理ルール２１２の設定を解除する（ステップＳ１０７）。「処理ルールの設定を解除する」とは、例えば、移動元処理装置２００Ａから、処理ルール２１２を削除することを意味する。「処理ルールの設定を解除する」とは、例えば、移動元処理装置２００Ａが、処理ルール２１２の中間状態を管理しないことを意味する。
【００７３】
図６におけるステップＳ１０５に示す動作またはステップ１０６に示す動作が行われるタイミングを、以降、「ルール移動の終了」と記載することがある。
なお、図６におけるステップＳ１０５に示す動作、ステップ１０６に示す動作が実行されるタイミングは、この順番には限定されない。
【００７４】
次に、第１の実施形態にかかる制御装置３００が奏する作用効果を説明する。
【００７５】
第１の実施形態にかかる制御装置３００が奏する第１の効果を説明する。制御装置３００は、ルール移動開始の前後において、動的な複合処理ルールの移動を実現することができる。
【００７６】
図６に示したステップＳ１０２およびステップＳ１０３のように、制御装置３００が備えるルール移動部３４０は、移動元処理装置２００Ａに設定されている移動対象である処理ルール（処理ルール２１２）の設定先を、移動元処理装置２００Ａから移動先処理装置２００Ｂに変更する。この際、ルール移動部３４０は、処理ルール２１２を移動先処理装置２００Ｂに設定する。また、この際、ルール移動部３４０は、処理ルール２１２が含む条件式によって検出されるイベントが、所定期間にわたり、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置２００に振り分けられるよう、振り分け装置１００を制御する。
【００７７】
かかる構成により、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置２００は、処理ルール２１２が検出するイベントを、所定期間にわたり、並列して受信する。この所定期間にわたりは、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置は、それぞれ別々に処理ルール２１２の中間状態を管理する。よって、移動元処理装置２００Ａは、ルール移動を開始した後も、所定期間にわたり、移動対象である処理ルールの中間状態を更新し続けることになる。このため、ルール移動の開始前後において、移動元処理装置２００Ａは、イベント処理システム１０００が処理するイベントの連続性の情報を失うことがない。
【００７８】
上述した作用を、簡単な具体例を用いて説明する。例えば、振り分け装置１００が、イベントＡ→イベントＢ→イベントＣという順番で３つのイベントを受信することを想定する。理解を容易にするため、振り分け装置１００がイベントＡを受信してから、イベントＣを受信するまでの時間は、処理ルール２１２によって規定される期間（１０秒）よりも短いものとする。また、振り分け装置１００がイベントを受信してから、処理装置２００が当該イベントを検出するまでの時間は無視できるものとする。
【００７９】
まず、ルール移動が行われない場合を仮定する。この場合、振り分け装置１００がイベントＣを受信した時点（より正確には、処理装置２００ＡがイベントＣを検出した時点）において、処理ルール２１２は発火する。「処理ルールが発火する」とは、すなわち、処理ルールが含む条件式が成立して、処理ルールが規定する処理内容が実行されることを表す。
【００８０】
次に、振り分け装置１００がイベントＢを受信してからイベントＣを受信するまでの間に、処理ルール２１２が移動元処理装置２００Ａから移動先処理装置２００Ｂに移動された場合を想定する。この場合、処理ルール２１２が発火するタイミングを、（ケース１）移動元処理装置２００Ａが管理する処理ルール２１２の中間状態を考慮せずにルール移動が行われる場合と、（ケース２）第１の実施形態にかかる制御装置３００を用いてルール移動が行われる場合と、を比較しながら具体的に説明する。
【００８１】
まず、（ケース１）の場合について説明する。この場合、ルール移動開始と同時に、移動元処理装置２００Ａから処理ルール２１２の設定が解除されてしまう。この場合、振り分け装置１００がイベントＣを受信した時点（より正確には、処理装置２００Ａおよび処理装置２００ＢがイベントＣを受信した時点）において、移動元処理装置２００Ａと移動先処理装置２００Ｂの両方において処理ルール２１２は発火しない。なぜなら、振り分け装置１００がイベントＣを受信した時点において、処理装置２００Ａにおいては、既に処理ルール２１２の設定が解除されているからである。また、移動先処理装置２００Ｂにおいては、移動先処理装置２００Ｂが管理する処理ルール２１２の中間状態が、イベントＡおよびイベントＢを受信したという情報を保持していないからである。よって、このタイミングでイベントＣを受信しても処理ルール２１２が含む条件式は満たされない。
【００８２】
このように、（ケース１）の場合には、ルール移動を行わないと発火するはずだった処理ルールが、ルール移動を行うと発火しないことが起こりうる。
【００８３】
次に、（ケース２）の場合について説明する。この場合、ルール移動開始直前において、移動元処理装置２００Ａは、処理ルール２１２の中間状態として、イベントＡとイベントＢとをこの順番で検出したことを示す情報を記憶している。制御装置３００は、所定期間にわたり、処理ルール２１２が検出するイベントが移動元処理装置２００Ａにも振り分けられるよう、振り分け装置１００を制御する。よって、振り分け装置１００がイベントＣを受信すると、イベントＣは移動元処理装置２００Ａに振り分けられる。移動元処理装置２００ＡはイベントＣを検出する。移動元処理装置２００ＡがイベントＣを検出すると、「イベントＡ、イベントＢおよびイベントＣをこの順番で１０秒以内に検出する」という条件式が成立するので、処理ルール２１２が発火する。
【００８４】
このように、第１の実施形態にかかる制御装置３００によれば、移動元処理装置２００Ａは、ルール移動開始の前後において、イベント処理システム１０００が処理するイベントの連続性の情報を失わない。第１の実施形態にかかる制御装置３００によれば、処理ルールの移動開始の前後において、処理ルールの移動が行われなかった場合と同じタイミングで処理ルールが発火するように、処理ルールの移動を実現することができる。
【００８５】
第１の実施形態にかかる制御装置３００が奏する第２の効果を説明する。制御装置３００は、ルール移動終了の前後において、動的に、複合処理ルールの移動を実現することができる。
【００８６】
図６に示したステップＳ１０４のように、制御装置３００が備えるルール移動部３４０はさらに、少なくとも移動対象である処理ルールにおいて規定された期間にわたり、移動対象である処理ルールが検出するイベントが、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置に振り分けられるよう、振り分け装置１００を制御する。
【００８７】
かかる構成により、ルール移動終了の時点で、移動元処理装置２００Ａが管理する処理ルール２１２の中間状態の内容と、移動先処理装置２００Ｂが管理する処理ルール２１２の中間状態の内容とは、互いに同一になることが保証される。
【００８８】
これにより、移動先処理装置２００は、ルール移動終了の前後において、イベント処理システム１０００が処理するイベントの連続性の情報を失わない。第１の実施形態にかかる制御装置３００によれば、処理ルールの移動終了の前後において、処理ルールの移動が行われなかった場合と同じタイミングで処理ルールが発火するように、処理ルールを移動することができる。
【００８９】
第１の実施形態にかかる制御装置３００が奏する第３の効果を説明する。制御装置３００は、ルール移動開始から終了までを通して、動的に、複合処理ルールを移動することができる。
【００９０】
図６に示すステップＳ１０２のように、制御装置３００が備えるルール移動部３４０はさらに、移動対象である処理ルールが検出するイベントが、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置に振り分けられる間、移動対象である処理ルールに規定された条件が成立した場合に実行する処理内容を、移動先処理装置２００Ｂが実行しないように制御する構成を備える。
【００９１】
場合によっては、処理ルールの移動を開始してから処理ルールの移動を終了するまでの間に、移動対象である処理ルールが規定する条件が満たされるようなイベント群が処理装置２００に入力されることが考えられる。このような場合、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置で、移動対象である処理ルールが重複して発火してしまうことも考えられる。
【００９２】
しかし、ルール移動部３４０が上記のように動作することにより、ルール移動部３４０は、移動対象である処理ルールが、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置で重複して発火してしまうことを防ぐことができる。
【００９３】
このように、第１の実施形態にかかる制御装置３００によれば、処理ルールの移動開始から処理ルールの移動終了までを通して、処理ルールの移動が行われなかった場合と同じタイミングで処理ルールが発火するように、処理ルールを移動することができる。
【００９４】
第１の実施形態にかかる制御装置３００が奏する第４の効果を説明する。制御装置３００は、ルールの移動を開始してから、移動元処理装置２００Ａの負荷が軽減されるまでのリードタイムを短くすることができる。
【００９５】
制御装置３００が備える第３の選択部３３０は、第１の実施形態にかかる移動元処理装置２００Ａに設定されている複数の処理ルール（処理ルール２１１および処理ルール２１２）のうち、処理ルールが規定する期間が短い処理ルール（処理ルール２１２）から優先して、移動対象である処理ルールとして選択する構成を備える。
【００９６】
上述したように、処理ルールを動的に移動するためには、処理ルールの移動を開始してから、移動対象である処理ルールにより規定される期間にわたりは、移動元処理装置２００Ａと移動先処理装置２００Ｂとの両方の処理装置に、移動対象である処理ルールが検出するイベントが振り分けられる。
【００９７】
言い換えれば、処理ルールの移動を開始してから、移動対象である処理ルールにより規定される期間にわたりは、移動元処理装置２００Ａの負荷は軽減されないということである。移動元処理装置２００Ａの負荷が軽減されるのは、ルールの移動開始から前記期間経過後、移動元処理装置２００Ａから移動対象である処理ルールの設定が解除されてからである。
【００９８】
第３の選択部３３０は、ルールの移動を開始してから移動元処理装置２００Ａの負荷を早く軽減することができるような処理ルールを優先して移動対象である処理ルールとして選択する。このため、第１の実施形態にかかる制御装置３００は、ルールの移動を開始してから、移動元処理装置２００Ａの負荷が軽減されるまでのリードタイムを短くすることができる。
【００９９】
（第１の実施形態の変形例）
複合処理ルールが含む条件式は、上述した具体例には限定されない。条件式の他の具体例を下記に示す。条件式は、所定の期間内に、順番に関係なく複数の種類のイベントを検出することを規定してもよい。条件式は、所定の期間内に、特定のイベントを検出しないことを規定してもよい。条件式は、所定の期間内に、特定のイベントを所定の回数以上検出することを規定してもよい。
【０１００】
「処理ルールによって規定される期間」は、処理ルールに含まれる「within」句に規定される期間には限定されない。「処理ルールによって規定される期間」は、処理ルールを移動する際に、移動先処理装置２００Ｂにおいて、移動元処理装置２００Ａで実行されるイベント処理と同一のイベント処理が実行されるまでに要する期間であればよい。
【０１０１】
「処理ルールによって規定される期間」の他の具体例を下記に示す。
【０１０２】
・Fixed Interval（時刻ｔ１から時刻ｔ２の間）、
・Event Interval （イベントＡを検出してからイベントＢを検出するまでの間）、
・Sliding Fixed Interval（現在時刻から過去所定期間にわたって）、
・Sliding Event Interval（過去Ｎ回前にイベントＸを検出してから最新のイベントＸを検出するまでの間）。
【０１０３】
また、「処理ルールによって規定される期間」は、処理ルールが含む条件式(Condition)が規定する期間ではなく、条件式が成立した場合に実行される処理内容(Action)によって規定されてもよい。 
「処理ルールによって規定される期間」が処理内容(Action)によって規定する具体例を下記に示す。
【０１０４】
例えば、処理ルールは、「ルールにマッチしたイベントの数を２時間おきに出力する」などの処理内容を規定してもよい。
【０１０５】
例えば、処理ルールは、「過去１０分以内に入力された温度センサＡの全てのイベントを出力する」などの処理内容を規定していてもよい。
【０１０６】
上記のような処理ルールが設定された処理装置２００は、処理ルールの中間状態として、処理装置２００が条件成立後の処理を実行するために必要な情報を記憶する。例えば、処理装置は、上記処理ルールの中間状態として、ルール条件に合致するか否かにかかわらず、過去１０分間に入力された温度センサＡの全てのイベントを記憶する。
【０１０７】
振り分け装置１００の動作は、センサからイベントを受信することには限定されない。振り分け装置１００は、例えば、時系列イベントを蓄積するバッファからイベントを取得し、当該取得したイベントを処理装置２００に振り分けてもよい。また、振り分け装置１００は、自装置の内部に備えられたセンサが生成したイベントを、処理装置２００に振り分けてもよい。
【０１０８】
上述の変形例は、他の実施形態にも適用可能である。
【０１０９】
＜第２の実施形態＞
次に、上述した第１の実施形態を基本とする第２の実施形態について説明する。図７は、第２の実施形態にかかるイベント処理システム１００１の構成を示すブロック図である。図７に示すように、イベント処理システム１００１は、第１の実施形態にかかる制御装置３００に代えて、制御装置３０１を含む。
【０１１０】
図８は、図７に示す制御装置３０１の構成を示すブロック図である。図８に示すように、第２の実施形態にかかる制御装置３０１は、第１の実施形態にかかる第３の選択部３３０に代えて、第３の選択部３３１を備える。
【０１１１】
第３の選択部３３１は、第１の実施形態にかかる第３の選択部３３０と同様、移動元処理装置２００Ａに複数の処理ルールが設定されている場合に、そのうちいずれの処理ルールを移動対象である処理ルールとするかを選択する。
【０１１２】
第３の選択部３３１は、移動元処理装置２００Ａに設定されている複数の処理ルールのうち、処理ルールによって規定される期間が短く、かつ、処理ルールが設定されることにより処理装置２００に発生する負荷が大きい処理ルールから優先して、移動対象である処理ルールとして選択する。
【０１１３】
第３の選択部３３１は、例えば、処理ルールごとに、処理ルールによって規定される期間を表す（値１）と、処理ルールが設定されることにより処理装置２００に発生する負荷を表す（値２）とをそれぞれ算出する。第３の選択部３３１は、（値１）が示す値が小さく、かつ、（値２）が示す値が大きいような処理ルールを、移動対象である処理ルールとして選択する。第３の選択部３３１は、例えば、処理ルールごとに、（値２）が示す値を（値１）が示す値で除算した値を算出する。第３の選択部３３１は、例えば、算出した値が大きい順に基づいて、移動対象である処理ルールを選択してもよい。
【０１１４】
以下、第３の選択部３３１が、処理ルールが設定されることにより処理装置２００に発生する負荷を、どのように算出するか、具体例をいくつか説明する。下記に示す説明はあくまで具体例であり、本実施例を例に説明する発明を限定的に解釈することはない。
【０１１５】
例えば、処理装置２００にかかる負荷として、処理装置２００のＣＰＵ負荷を算出する場合を想定する。この場合、第３の選択部３３１は、例えば、処理ルールごとに、当該処理ルールが含む条件式が成立する頻度と処理ルールの成立判定にかかる処理量との積を算出する。第３の選択部３３１は、例えば、条件式が成立する頻度と条件式成立時に実行する処理内容の処理量との積を算出してもよい。
【０１１６】
例えば、処理装置２００にかかる負荷として、処理装置２００のメモリ使用量を算出する場合を想定する。この場合、第３の選択部３３１は、例えば、処理ルールごとに、中間状態のサイズを測定したり、予測したりしてもよい。
【０１１７】
例えば、処理装置２００にかかる負荷として、処理装置２００の通信量を算出する場合を想定する。この場合、第３の選択部３３１は、例えば、処理ルールごとに、条件式が成立する頻度と条件式成立時に実行する処理内容の通信量との積を算出してもよい。第３の選択部３３１は、条件式が満たされるまでに必要なイベントを受信する際の通信量などを算出してもよい。
【０１１８】
他にも、処理装置２００にかかる負荷は、例えば処理装置２００のレスポンスタイムなどに基づいて算出されてもよい。
【０１１９】
第２の実施形態にかかるイベント処理システム２０００は、図示しないイベント履歴記憶部を含んでいてもよい。イベント履歴記憶部は、振り分け装置１００が受信した全てのイベントを受信し、受信したイベントを時系列順に蓄積する。第３の選択部３３１は、イベント履歴記憶部を参照する。第３の選択部３３１は、参照したイベントが処理装置２００に入力された場合に、処理ルールごとに、処理装置２００に発生する負荷を算出してもよい。
【０１２０】
次に、第２の実施形態にかかる制御装置３０１が奏する作用効果を説明する。
【０１２１】
第２の実施形態にかかる制御装置３０１は、第１の実施形態にかかる制御装置３００が奏す効果に加えて、負荷分散を効率的に実現することができる。
【０１２２】
第２の実施形態にかかる制御装置３０１は、移動元処理装置２００Ａに設定されている複数の処理ルールのうち、処理ルールによって規定される期間が短く、かつ、処理ルールが設定されることにより処理装置２００に発生する負荷が大きい処理ルールから優先して、移動対象である処理ルールとして選択する構成を備える。
【０１２３】
かかる構成により、第２の実施形態にかかる制御装置３０１は、処理装置２００に大きな負荷を発生させている、あるいは、発生させ得る処理ルールを、優先的に移動する。これにより、第２の実施形態にかかる制御装置３０１は、処理装置２００の負荷平準化のためにルールを移動する回数を、第１の実施形態にかかる制御装置３００と比較して、減らすことができる。
【０１２４】
＜第３の実施形態＞
次に、上述した第１の実施形態を基本とする第３の実施形態について説明する。図９に示すように、第３の実施形態にかかるイベント処理システム１００２は、第１の実施形態にかかる処理装置２００Ａおよび２００Ｂに代えて、２００Ｃ、２００Ｄおよび２００Ｅを含む。第３の実施形態にかかるイベント処理システム３０００は、第１の実施形態にかかる制御装置３００に代えて、制御装置３０２を含む。
【０１２５】
図１０は、図９に示す制御装置３０２の構成を示すブロック図である。図１０に示すように、第３の実施形態にかかる制御装置３０２は、第１の実施形態にかかる第２の選択部３２０および第３の選択部３３０に代えて、第４の選択部３５０を備える。
【０１２６】
第４の選択部３５０は、第１の実施形態にかかる第２の選択部３２０と同様、複数の処理装置２００のうちから移動先処理装置２００を選択する。第４の選択部３５０は更に、第１の実施形態にかかる第３の選択部３３０と同様、移動元処理装置２００に複数の処理ルールが設定されている場合に、そのうちいずれの処理ルールを移動対象である処理ルールとするかを選択する。
【０１２７】
第４の選択部３５０は、移動元処理装置２００Ａに設定されている１つまたは複数の処理ルールと、イベント処理システム１０００に含まれる複数の処理装置２００との、全ての組み合わせに対して、イベントコピー差分という指標を算出する。
【０１２８】
イベントコピー差分は、移動対象である処理ルールを移動元処理装置２００から移動先処理装置２００に移動した場合に、イベント処理システム１０００全体として、イベントのマルチキャストがどの程度増えるか（または減るか）を示す指標である。
【０１２９】
イベントコピー差分について、具体例を用いて説明する。
【０１３０】
図９を用いて、イベントコピー差分を説明する。図９は、ルール移動前における、イベント処理システム１００２の状態を表す図である。図９に示すように、処理装置２００Ｃには、処理ルール２１１および処理ルール２１２が設定されている。処理装置２００Ｄには、処理ルール２１３が設定されている。処理装置２００Ｅには、処理ルール２１４および処理ルール２１５が設定されている。処理ルール２１１〜２１５が規定する内容を下記に示す。
【０１３１】
・処理ルール２１１：Condition (Ａ→Ｄ within 30seconds) Action (DO Ｘ)、
・処理ルール２１２：Condition (Ａ→Ｂ→Ｃ within 10seconds) Action (DO Ｙ)、
・処理ルール２１３：Condition (Ａ→Ｅ within 2minutes) Action (DO Ｚ)。
【０１３２】
・処理ルール２１４：Condition (Ａ→Ｂ within 5seconds) Action (DO Ｗ)。
【０１３３】
・処理ルール２１５：Condition (Ａ→Ｃ within 45seconds) Action (DO Ｖ)。
【０１３４】
ここで、移動元処理装置２００として処理装置２００Ｃが選択されたとする。処理装置２００Ｃには、処理ルール２１１および処理ルール２１２が設定されている。よって処理ルール２１１および処理ルール２１２のいずれか片方が、移動対象ルールとして選択されることになる。
【０１３５】
ここで、処理ルール２１１を処理装置２００Ｃから処理装置２００Ｅに移動した場合を例に、イベントコピー差分を算出する。イベントコピー差分は、ルール移動後におけるイベントコピー数から、ルール移動前におけるイベントコピー数を減算することによって算出される。以下、イベントコピー数について説明する。
【０１３６】
図１１は、ルール移動前における振り分けルール１１３を説明する図である。図１１に示す振り分けルール１１３は、図９に示す状態と対応している。図１１に示すように、イベントＡは、処理装置２００Ｃ、ＤおよびＥ、すなわち３台の処理装置に振り分けられる。イベントＢは、処理装置２００ＣおよびＥ、すなわち２台の処理装置に振り分けられる。イベントＣは、処理装置２００ＣおよびＥ、すなわち２台の処理装置に振り分けられる。イベントＤは、処理装置２００Ｃ、すなわち１台の処理装置に振り分けられる。イベントＥは、処理装置２００Ｄ、すなわち１台の処理装置に振り分けられる。よって、ルール移動前におけるイベントＡ〜Ｅのイベントコピー数は、３（イベントＡ）＋２（イベントＢ）＋２（イベントＣ）＋１（イベントＤ）＋１（イベントＥ）＝９と算出される。
【０１３７】
図１２は、ルール移動後における振り分けルール１１４を説明する図である。図１２に示すように、イベントＡは、処理装置２００Ｃ、ＤおよびＥ、すなわち３台の処理装置に振り分けられる。イベントＢは、処理装置２００Ｅ、すなわち１台の処理装置に振り分けられる。イベントＣは、処理装置２００Ｅ、すなわち１台の処理装置に振り分けられる。イベントＤは、処理装置２００Ｃ、すなわち１台の処理装置に振り分けられる。イベントＥは、処理装置２００Ｄ、すなわち１台の処理装置に振り分けられる。よって、ルール移動後におけるイベントＡ〜Ｅのイベントコピー数は、３（イベントＡ）＋１（イベントＢ）＋１（イベントＣ）＋１（イベントＤ）＋１（イベントＥ）＝７と算出される。
【０１３８】
よって、処理ルール２１１を処理装置２００Ｃから処理装置２００Ｅに移動した場合のイベントコピー差分は、
ルール移動後におけるイベントコピー数から、ルール移動前におけるイベントコピー数を減算することによって算出されるので、７−９＝−２と算出される。
【０１３９】
このように、第４の選択部３５０は、移動元処理装置２００Ａに設定されている複数の処理ルールと、イベント処理システム１００２に含まれる複数の処理装置２００との、全ての組み合わせに対して、イベントコピー差分を算出する。図１３は、第４の選択部３５０が算出したイベントコピー差分の一覧を示す図である。
【０１４０】
第４の選択部３５０は、例えば、処理ルールが規定する期間を表す（値３）と、イベントコピー差分（値４）とをそれぞれ算出する。第３の選択部３３１は、（値３）が示す値が小さく、かつ、（値４）が示す値も小さいような処理ルールを、移動対象である処理ルールとして選択する。
【０１４１】
イベントコピー差分が小さい値であるほど、当該ルール移動はイベント処理システム３００のリソースを効率的に使用するようなルール移動であるといえる。なぜなら、イベントコピー差分が小さくなるようにルール移動するということは、同じイベントが同じ処理装置で処理されるようにルール移動するということであり、イベント処理システム１００２全体で処理するイベントの数を減らすことができるからである。
【０１４２】
イベントコピー差分が小さくなるようにルール移動する、ということは、言い換えると、移動対象のイベントが検出するイベントと同一のイベントを検出する処理ルールが既に設定されている処理装置を、移動先処理装置として選択する、ということでもある。
【０１４３】
次に、第３の実施形態にかかる制御装置３０２が奏する効果を説明する。
【０１４４】
第３の実施形態にかかる制御装置３０２は、第１の実施形態にかかる制御装置３００が奏す効果に加えて、イベント処理システム１００２全体の負荷が減るように処理ルールを移動することができる。
【０１４５】
制御装置３０２は、イベントコピー差分が小さくなるようなルールを移動対象ルールとして選択し、イベントコピー差分が小さくなるような処理装置２００を移動先処理装置２００として選択する構成を有する。イベント処理システム３０００におけるイベントコピー数が小さいと、１イベントを処理する処理装置２００の台数が少なくなるため、イベント処理システム１００２全体の負荷が減ることになる。
【０１４６】
（実施例）
次に、上述した第１の実施形態にかかるイベント処理システム１０００および制御装置３００の、構成および動作について、より詳細に説明する。下記に説明する実施例は構成および動作の例示に過ぎず、第１の実施形態を限定的に解釈するためのものではない。
【０１４７】
図１４に示すように、イベント処理システム１０００は、更に負荷情報収集部４００を含んでもよい。処理装置２００は、負荷出力部２０１を含んでもよい。
【０１４８】
負荷出力部２０１は、処理装置２００の負荷情報を出力する。負荷情報は、例えば、処置装置２００のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）使用率、メモリ使用量、ネットワーク通信量またはレスポンス時間の長短などの測定値である。負荷情報は、これら測定値に基づいて算出された値でもよい。負荷情報には、少なくとも、処理装置２００の識別子（ＩＤ）と、負荷を測定した時刻と、負荷の値と、が含まれる。
【０１４９】
負荷情報収集部４００は、複数の処理装置（処理装置２００Ａおよび処理装置２００Ｂ）にそれぞれ含まれる負荷出力部（負荷出力部２０１Ａおよび負荷出力部２０１Ｂ）から、それぞれ負荷情報を受信する。負荷情報収集部４００は、それぞれの負荷出力部から受信した負荷情報を、まとめて、第１の選択部３１０および第２の選択部３２０に送信する。
【０１５０】
第１の選択部３１０は、負荷の閾値を記憶している。第１の選択部３１０は、負荷情報収集部４１０から受信した負荷情報と、閾値とを比較して、負荷が閾値を超えている処理装置を、移動元処理装置２００として選択する。第１の選択部３１０は、選択した移動元処理装置２００を識別する情報を、第３の選択部３３０に通知する。
【０１５１】
第２の選択部３２０は、負荷情報を参照して、負荷が軽い処理装置２００を、移動先処理装置２００として選択する。第２の選択部３２０は、選択した移動先処理装置２００を識別する情報、ルール移動部３４０に通知する。
【０１５２】
第３の選択部３３０は、第１の選択部３１０から移動元処理装置２００を識別する情報を受け付ける。第３の選択部３３０は、移動元処理装置２００から、移動元処理装置２００に現在設定されている処理ルールの一覧を取得する。第３の選択部３３０は、移動元処理装置２００に設定されている複数の処理ルールのうち、処理ルールにより規定される期間が短いような処理ルールを、優先して、移動対象である処理ルールとして決定する。
【０１５３】
第３の選択部３３０は、移動元処理装置２００を識別する情報と、移動対象である処理ルールを識別する情報とを、ルール移動部３４０に通知する。また、第３の選択部３３０は、移動元処置装置２００および移動先処理装置２００から、移動元処置装置２００および移動先処理装置２００に設定されている処理ルールの一覧を取得し、ルール移動部３４０に通知する。
【０１５４】
ルール移動部３４０は、処理ルールを移動する。ルール移動部３４０は、振り分けルールを生成して振り分け装置１００に振り分けルールを設定したり、処理装置２００に処理ルールを設定したり、処理装置２００の動作を制御したりする。ルール移動部３４０の詳細は後述する。
【０１５５】
次に、図１５に示すシーケンス図を用いて、ルール移動部３４０の動作をより詳細に説明する。
【０１５６】
図１５におけるステップＳ２０１に示す動作は、図６におけるステップＳ１０１に示す動作と同様である。図１５におけるステップＳ２０２に示す動作は、図６におけるステップＳ１０２に示す動作と同様である。移動先処理装置２００Ｂは、移動対象である処理ルールの中間状態を更新する処理を開始した旨の通知を、ルール移動部３４０に送信する（ステップＳ２０３）。
【０１５７】
図１５におけるステップＳ２０４に示す動作は、図６におけるステップＳ１０３に示す動作と同様である。ルール移動部３４０は、ステップＳ２０３における通知を受け取ったことをトリガーとして、ステップＳ２０４に示す動作を実行する。ルール移動部３４０は、移動元処置装置２００および移動先処理装置２００に設定されている処理ルールの一覧に基づいて、振り分けルール１１１を生成し、振り分け装置１００に設定する。
【０１５８】
図１５におけるステップＳ２０５に示す動作は、図６におけるステップＳ１０４に示す動作と同様である。図１５におけるステップＳ２０６に示す動作は、図６におけるステップＳ１０５に示す動作と同様である。移動先処理装置２００Ｂは、処理ルールの条件式が成立した場合に処理ルールが規定する処理内容を実行する許可を受け取った旨の通知を、ルール移動部３４０に送信する（ステップＳ２０７）。
【０１５９】
図１５におけるステップＳ２０８に示す動作は、図６におけるステップＳ１０６に示す動作と同様である。ルール移動部３４０は、ステップＳ２０７における通知を受け取ったことをトリガーとして、ステップＳ２０８に示す動作を実行する。ルール移動部３４０は、移動元処置装置２００および移動先処理装置２００に設定されている処理ルールの一覧に基づいて、振り分けルール１１２を生成し、振り分け装置１００に設定する。
【０１６０】
図１５におけるステップＳ２０９に示す動作は、図６におけるステップＳ１０７に示す動作と同様である。
【０１６１】
上述した実施例によれば、第１の実施形態にかかるイベント処理システム１０００または制御装置３００が奏する作用効果と、同様の作用効果を奏することができる。
【０１６２】
上述した実施例は、他の実施形態にも適用可能である。
【０１６３】
＜第４の実施形態＞
図１６は、第４の実施形態にかかるイベント処理システム１００３の構成を示すブロック図である。図１６に示すように、イベント処理システム１００３は、振り分け装置１０３と、複数の処理装置２０３と、制御装置３０３とを含む。
【０１６４】
振り分け装置１０３は、複数の処理装置２０３にイベントを振り分ける。
【０１６５】
処理装置２０３には、処理ルールが設定されている。処理ルールは、所定の期間内にどのようなイベントを検出するかを規定する条件式、および、前記条件式が成立した場合に実行する処理内容を規定する情報を含む。
【０１６６】
処理装置２０３は、振り分け装置１０３からイベントを受信し、自装置に設定された処理ルールを参照し、受信したイベントと処理ルールとに基づいて処理内容を実行する。
【０１６７】
制御装置３０３は、移動元処理装置２０３Ａに設定されている移動対象である処理ルールの設定先を、移動元処理装置から移動先処理装置に変更する。制御装置３０３は、その際に、移動対象である処理ルールを移動先処理装置に設定し、移動対象である処理ルールが含む条件式によって検出されるイベントが、所定期間にわたり、移動元処理装置と移動先処理装置との両方の処理装置に振り分けられるよう振り分け装置１０３を制御する。制御装置３０３は、所定期間経過後、移動元処理装置から移動対象である処理ルールの設定を解除する。
【０１６８】
第４の実施形態にかかる制御装置３０３によれば、複合処理ルールを動的に移動することができる。
【０１６９】
＜第５の実施形態＞
次に、上述した第１の実施形態を基本とする第５の実施形態について説明する。図１７は、第５の実施形態にかかるイベント処理システム１００４の構成を示すブロック図である。図１７に示すように、第５の実施形態にかかるイベント処理システム１００４は、イベントバッファ５００を含む。イベント処理システム１００４は、処理装置２００に代えて、処理装置６００を含み、制御装置３００に代えて、制御装置３０４を含む。
【０１７０】
第５の実施形態では、処理装置６００は、イベントバッファ５００からイベントを取得する。
【０１７１】
イベントバッファ５００は、センサ等が生成したイベントを時系列に記憶する。
【０１７２】
処理装置６００には、イベント取得ルール６１０と、処理ルール６２０とが設定されている。図１７に示すように、処理装置６００Ａには、イベント取得ルール６１０Ａ、処理ルール６２１および処理ルール６２２が設定されている。処理装置６００Ｂには、イベント取得ルール６１０Ｂおよび処理ルール６２３が設定されている。処理ルール６２１〜６２３は、第１の実施形態にかかる処理ルール２１１〜２１３と同様であるので、説明を省略する。
【０１７３】
処理装置６００は、イベントバッファ５００からイベントを取得する。処理装置６００は、処理ルール６２０を参照し、取得したイベントと処理ルール６２０とに基づいて、イベント処理を実行する。
【０１７４】
イベント取得ルール６１０は、処理装置６００が取得すべきイベントの内容を規定する。処理装置６００は、イベント取得ルール６１０を参照し、自装置に設定されたイベント取得ルール６１０が規定するイベントと合致するイベントを、イベントバッファ５００から取得する。
【０１７５】
図１８は、イベントバッファ５００が記憶する情報の一例を示す図である。図１８に示すように、イベントバッファ５００は、センサーが生成したイベントを時系列に記憶する。一つのイベントは、図１８における１行に示される情報に相当する。
【０１７６】
図１９は、処理装置６００Ａに設定されているイベント取得ルール６１０Ａを説明する図である。図１９に示すように、イベント取得ルール６１０Ａは、イベントＡ、Ｂ、ＣおよびＤを、イベントバッファ５００から取得することを規定する。
【０１７７】
図２０は、処理装置６００Ｂに設定されているイベント取得ルール６１０Ｂを説明する図である。図２０に示すように、イベント取得ルール６１０Ｂは、イベントＡおよびＥを、イベントバッファ５００から取得することを規定する。
【０１７８】
制御装置３０４は、第１の実施形態にかかる制御装置３００が備えるルール移動部３４０に代えて、ルール移動部３４４を備える。ルール移動部３４４の詳細は後述する。
【０１７９】
次に、第５の実施形態にかかるイベント処理システム１００４の動作を、図１７、図１９〜図２５を用いて説明する。図２５は、イベント処理システム１００４の動作を説明するシーケンス図である。
【０１８０】
まず、図２５と、図１７および図１９〜図２４との対応関係を説明する。図１７は、ルール移動前におけるイベント処理システム１００４の状態を説明する図である。図１９〜図２４は、いずれもイベント取得ルールを説明する図である。図１９および図２０は、ルール移動前、すなわち、図２５におけるステップＳ３０３実行前のイベント取得ルール６１０Ａと６１０Ｂをそれぞれ説明する図である。図２１および図２２は、ルール移動中、すなわち、図２５におけるステップＳ３０３実行後Ｓ３０６実行前のイベント取得ルール６１１Ａと６１１Ｂをそれぞれを説明する図である。図２３および図２４は、ルール移動後、すなわち、図２５におけるステップＳ３０６実行後のイベント取得ルール６１２Ａと６１２Ｂをそれぞれ説明する図である。
【０１８１】
図２５に示すシーケンス図を説明する。図２５に示すステップＳ３０１の動作は、図６に示すステップＳ１０１の動作と同様である。以下、制御装置３０４は、処理装置６００Ａを移動元処理装置として選択し、処理装置６００Ｂを移動先処理装置として選択し、処理ルール６２２を移動対象である処理ルールとして選択したものとして、説明を続ける。
【０１８２】
ルール移動部３４４は、移動対象である処理ルール（処理ルール６２２）を移動先処理装置６００Ｂに設定する（ステップＳ３０２）。ここで、ルール移動部３４４は、移動元処理装置６００Ａと移動先処理装置６００Ｂとを、それぞれ以下のように制御する。ルール移動部３４４は、移動元処理装置６００Ａについては、１）処理ルールに含まれる条件式（Condition）に合致するイベントを検出する処理、２）中間状態を更新する処理、３）条件式が成立した場合に処理内容(Action)を実行する処理、を行うように制御する。
【０１８３】
その一方、ルール移動部３４４は、移動先の処理装置６００Ｂについては、１）処理ルールに含まれる条件式（Condition）に合致するイベントを検出する処理、２）中間状態を更新する処理、を行うように制御する。言い換えると、ルール移動部３４４は、移動先の処理装置６００Ｂについては、条件式が成立したとしても処理内容(Action)を実行しないように制御する。
【０１８４】
ルール移動部３４４は、処理ルール６２２が検出するイベント、すなわちイベントＡ、ＢおよびＣが、移動元処理装置６００Ａと移動先処理装置６００Ｂとの両方から取得されるよう規定したイベント取得ルール６１１Ａおよび６１１Ｂを生成する。ルール移動部３４４は、生成したイベント取得ルールを、処理装置６００Ａと処理装置６００Ｂにそれぞれ設定する（ステップＳ３０３）。
【０１８５】
図２１は、図１６に示すステップＳ３０３において生成され、処理装置６００Ａに設定されるイベント取得ルール６１１Ａを説明するための図である。
【０１８６】
図２２は、図１６に示すステップＳ３０３において生成され、処理装置６００Ｂに設定されるイベント取得ルール６１１Ｂを説明するための図である。
【０１８７】
図２１および図２２に示すように、イベント取得ルール６１１Ａおよび６１１Ｂは、処理ルール６２２が検出するイベント、すなわちイベントＡ、ＢおよびＣを、移動元処理装置６００Ａと移動先処理装置６００Ｂとの両方が取得するように規定する。
【０１８８】
図２５を参照する説明に戻る。ルール移動部３４４は、処理ルール６２２によって規定される期間、すなわち１０秒間、待機する（ステップＳ３０４）。この間、移動元処理装置６００Ａと移動先処理装置６００Ｂは、処理ルール６２２が検出するイベント、すなわちイベントＡ、ＢおよびＣを並列に取得する。この間は、移動元処理装置６００Ａと移動先処理装置６００Ｂとの両方の処理装置が、それぞれ別々に処理ルール６２２の中間状態を管理することになる。
【０１８９】
なお、ルール移動部３４４は、処理ルール６２２が規定する期間が経過したことを、必ずしも自身で測定する必要はない。例えば、処理ルール６２２が規定する期間が経過したことを、移動先処理装置６００Ｂが測定してもよい。この場合、ルール移動部３４４は、移動先処理装置６００Ｂから上記期間が経過した旨のメッセージを受け付けてもよい。ルール移動部３４４は、当該メッセージを受け付けたことをトリガーとしてステップＳ３０５に示す動作に進んでもよい。
【０１９０】
ルール移動部３４４は、ステップＳ３０３に示す動作を行ってから、処理ルール２１２が規定する期間経過後、移動先処理装置６００Ｂに対して「ルール有効化指令」を通知する（ステップＳ３０５）。「ルール有効化指令」とは、処理装置６００に対して、条件式が成立した場合に処理内容(Action)を実行することを許可する旨の通知である。
【０１９１】
ルール移動部３４４は、処理ルール６２２を移動した後の状態における、移動元処理装置６００Ａに設定されている処理ルール（処理ルール６２１）および移動先処理装置６００Ｂに設定されている処理ルール（処理ルール６２２および処理ルール６２３）に基づいて、イベント取得ルール６１２Ａおよび６１２Ｂを生成する。ルール移動部３４４は、生成したイベント取得ルール６１２Ａおよび６１２Ｂを、処理装置６００Ａおよび６００Ｂにそれぞれ設定する（ステップＳ３０６）。
【０１９２】
図２３は、図１６に示すステップＳ３０６において生成され、処理装置６００Ａに設定されるイベント取得ルール６１２Ａを説明するための図である。
【０１９３】
図２４は、図１６に示すステップＳ３０６において生成され、処理装置６００Ｂに設定されるイベント取得ルール６１２Ｂを説明するための図である。
【０１９４】
図２５を参照する説明に戻る。ルール移動部３４４は、移動元処理装置６００Ａから、処理ルール６２２を削除する。言い換えると、ルール移動部３４４は、移動元処理装置６００Ａから、処理ルール６２２の設定を解除する（ステップＳ３０７）。
【０１９５】
次に、第５の実施形態にかかる制御装置３０４が奏する作用効果を説明する。
【０１９６】
第５の実施形態にかかる制御装置３０４によれば、処理装置６００が、イベントバッファ５００からイベントを取得する構成を有する場合であっても、第１の実施形態にかかる制御装置３００が奏する作用効果と同様の作用効果を奏することができる。
【０１９７】
＜第６の実施形態＞
図２６は、第６の実施形態におけるイベント処理システム１００５の構成を示すブロック図である。図２６に示すように、イベント処理システム１００５は、イベントバッファ５０１と、処理装置６０１と、制御装置３０５とを含む。処理装置６０１には、処理ルールとイベント取得ルールとが設定されている。
【０１９８】
処理ルールは、所定の期間内にどのようなイベントを検出するかを規定する条件式、および、前記条件式が成立した場合に実行する処理内容を規定する情報を含む。
【０１９９】
イベント取得ルールは、時系列順にイベントを記憶するイベントバッファから取得すべきイベントを規定する情報を含む。
【０２００】
処理装置６０１は、自装置に設定されたイベント取得ルールを参照し、イベント取得ルールが規定するイベントをイベントバッファ５０１から取得する。処理装置は、自装置に設定された処理ルールを参照し、取得したイベントと処理ルールとに基づいて処理内容を実行する。
【０２０１】
制御装置３０５は、移動元処理装置６０１Ａに設定されている移動対象である処理ルールの設定先を、移動元処理装置６０１Ａから移動先処理装置６０１Ｂに変更する。制御装置３０５は、この際、移動対象である処理ルールを移動先処理装置６０１Ｂに設定し、移動対象である処理ルールが含む条件式によって検出されるイベントが、所定期間にわたり、移動元処理装置６０１Ａと移動先処理装置６０１Ｂとの両方の処理装置６０１から取得されるようなイベント取得ルールを作成し、前記イベント取得ルールを移動元処理装置６０１Ａと移動先処理装置６０１Ｂのそれぞれに設定する。制御装置３０５は、所定期間経過後、移動元処理装置６０１Ａから移動対象である処理ルールの設定を解除する。
【０２０２】
第６の実施形態にかかる制御装置３０５によれば、処理ルールを動的に移動することができる。
【０２０３】
＜各実施形態における制御装置のハードウェア構成の一例＞
図２７は、各実施形態における制御装置のハードウェア構成の一例を示す図である。各実施形態における制御装置（コンピュータ）１００を構成するハードウェアは、ＣＰＵ１、メモリ２、記憶装置３、通信インターフェース（Ｉ／Ｆ）４を備える。制御装置は、入力装置５または出力装置６を備えていてもよい。制御装置の機能は、例えばＣＰＵ１が、メモリ２に読み出されたコンピュータプログラム（ソフトウェアプログラム、以下単に「プログラム」と記載する）を実行することにより実現される。実行に際して、ＣＰＵ１は、通信インターフェース４、入力装置５および出力装置６を適宜制御する。
【０２０４】
尚、本実施形態および前述した各実施形態を例として説明される本発明は、係るプログラムが格納されたコンパクトディスク等の不揮発性の記憶媒体８によっても構成される。記憶媒体８が格納するプログラムは、例えばドライブ装置７により読み出される。
【０２０５】
制御装置が実行する通信は、例えばＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が提供する機能を使ってアプリケーションプログラムが通信インターフェース４を制御することによって実現される。入力装置５は、例えばキーボード、マウスまたはタッチパネルである。出力装置６は、例えばディスプレイである。制御装置は、２つ以上の物理的に分離した装置が有線または無線で接続されることによって構成されていてもよい。
【０２０６】
なお、制御装置およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０２０７】
（各実施形態の変形例）
振り分け装置１００、処理装置２００、処理装置６００、制御装置３００、制御装置３０１、制御装置３０２、制御装置３０３、制御装置３０４、制御装置３０５、および、イベントバッファ５００は、それぞれ専用の装置であってもよいし、ソフトウェアによって実現される機能であってもよい。
【０２０８】
振り分けルールは、必ずしも振り分け装置１００の内部に実装される記憶装置に記憶される必要なはい。振り分けルールと振り分け装置１００とが互いに対応していれば、振り分けルールは、振り分け装置１００とネットワークを介して接続された外部装置に記憶されていてもよい。
【０２０９】
イベント取得ルールは、必ずしも振り分け装置１００の内部に実装される記憶装置に記憶される必要なはい。イベント取得ルールと振り分け装置１００とが互いに対応していれば、イベント取得ルールは、振り分け装置１００とネットワークを介して接続された外部装置に記憶されていてもよい。
【０２１０】
処理ルールは、必ずしも処理装置２００の内部に実装される記憶装置に記憶される必要なはい。処理ルールと処理装置２００とが互いに対応していれば、処理ルールは、処理装置２００とネットワークを介して接続された外部装置に記憶されていてもよい。
【０２１１】
上記の変形例は、他の実施形態にも適用可能である。
【０２１２】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０２１３】
各ブロック図に示したブロック分けは、説明の便宜上から表された構成である。各実施形態を例に説明された本発明は、その実装に際して、各ブロック図に示した構成には限定されない。
【０２１４】
以上、本発明を実施するための形態について説明したが、上記各実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。
【産業上の利用可能性】
【０２１５】
上述した実施形態を例に説明した本発明は、複数の処理装置が分散して複合イベント処理を実行する、複合イベント処理システム、並びに、複合イベント処理システムを制御する制御装置、制御方法およびプログラムに用いることができる。
【０２１６】
このような複合イベント処理システムは、例えば以下のような領域に応用することができる。例えば、イベント処理システムが、数百万台の自動車に搭載されたセンサから走行位置をリアルタイムに読み取り、事故現場を通過すると予測された車両のみに、わずか数秒のルール処理で警告を発信する、というような用途への応用が期待されている。
【０２１７】
他にも、複合イベント処理システムは、金融商品のトレーディングやリスク分析、インターネットで高鮮度の情報を収集する検索システム、放射線やCO2濃度のリアルタイム監視、携帯電話や街中のセンサ・カメラからの情報を高速処理し子供や高齢者の安全を図る見守りサービスなど、ビジネスから社会の安全性を高めるインフラ整備まで様々な領域への応用が期待されている。
【符号の説明】
【０２１８】
１  ＣＰＵ
２  メモリ
３  記憶装置
４  通信インターフェース
５  入力装置
６  出力装置
７  ドライブ装置
８  記憶媒体
１００  振り分け装置
１０３  振り分け装置
１１０  振り分けルール
１１１  振り分けルール
１１２  振り分けルール
１１３  振り分けルール
１１４  振り分けルール
２００  処理装置
２０１  負荷出力部
２０３  処理装置
２１１  処理ルール
２１２  処理ルール
２１３  処理ルール
２１４  処理ルール
２１５  処理ルール
３００  制御装置
３０１  制御装置
３０２  制御装置
３０３  制御装置
３０４  制御装置
３０５  制御装置
３１０  第１の選択部
３２０  第２の選択部
３３０  第３の選択部
３４０  ルール移動部
３４４  ルール移動部
３５０  第４の選択部
４００  負荷情報収集部
５００  イベントバッファ
５０１  イベントバッファ
６００  処理装置
６０１  処理装置
６１０  イベント取得ルール
６１１  イベント取得ルール
６１２  イベント取得ルール
６２１  処理ルール
６２２  処理ルール
６２３  処理ルール
１０００  イベント処理システム
１００１  イベント処理システム
１００２  イベント処理システム
１００３  イベント処理システム
１００４  イベント処理システム
１００５  イベント処理システム
２０００  デバイス
３０００  コンテキスト依存振り分け器
４０００  処理サーバ
５０００  アプリケーション
６０００  イベント処理分散制御装置
【図１】
2015028679.tif 000003
【図２】
2015028679.tif 000004
【図３】
2015028679.tif 000005
【図４】
2015028679.tif 000006
【図５】
2015028679.tif 000007
【図６】
2015028679.tif 000008
【図７】
2015028679.tif 000009
【図８】
2015028679.tif 000010
【図９】
2015028679.tif 000011
【図１０】
2015028679.tif 000012
【図１１】
2015028679.tif 000013
【図１２】
2015028679.tif 000014
【図１３】
2015028679.tif 000015
【図１４】
2015028679.tif 000016
【図１５】
2015028679.tif 000017
【図１６】
2015028679.tif 000018
【図１７】
2015028679.tif 000019
【図１８】
2015028679.tif 000020
【図１９】
2015028679.tif 000021
【図２０】
2015028679.tif 000022
【図２１】
2015028679.tif 000023
【図２２】
2015028679.tif 000024
【図２３】
2015028679.tif 000025
【図２４】
2015028679.tif 000026
【図２５】
2015028679.tif 000027
【図２６】
2015028679.tif 000028
【図２７】
2015028679.tif 000029
【図２８】
2015028679.tif 000030