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