(57)【要約】【課題】  分析ルールの動的な移動を実現する複合イベント処理システム等を提供する。【解決手段】  複合イベント処理システムが備える制御装置は、分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、分析ルールが必要とするイベントを分配するように制御し、移動対象の分析ルールを複製して移動先の処理装置に配置し、移動元の処理装置と、移動先の処理装置とで、ステートが同期したら、分配装置が、移動元の処理装置へのイベントの分配を停止するように制御すると共に、移動元の処理装置に配置される移動対象の分配ルールを削除する制御手段を備える。【選択図】      図１
2016042286.tif 000002
【特許請求の範囲】
【請求項１】
分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置と、前記分配装置と前記処理装置とを制御する制御装置とを備え、
前記制御装置は、
前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御し、
前記移動対象の分析ルールを複製して前記移動先の処理装置に配置し、
前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する制御手段を備えた
複合イベント処理システム。
【請求項２】
前記分配装置は、前記イベントに識別子を付与する識別子付与手段を備え、
前記処理装置は、複合イベント処理の処理結果の出力を制御する出力制御手段を備え、
前記制御装置の制御手段は、
前記分配装置から前記移動元の処理装置に分配されたイベントが、当該移動元の処理装置から前記移動先の処理装置に供給されるように制御し、
前記移動先の処理装置が備える出力制御手段は、
前記移動元の処理装置から前記供給された供給イベントを蓄積すると共に、前記分配装置から分配されたイベントを前記配置された分析ルールに従って複合イベント処理した処理結果である移動先イベントセットを蓄積し、前記識別子に基づいて、前記移動先イベントセットから前記供給イベントと重複するイベントを削除した結果を、処理結果として出力する
請求項１記載の複合イベント処理システム。
【請求項３】
前記分配装置は、前記イベントに識別子を付与する識別子付与手段を備え、
前記処理装置は、複合イベント処理の処理結果の出力を制御する出力制御手段を備え、
前記制御装置の制御手段は、
前記移動元の処理装置が前記移動対象の分析ルールに従って複合イベント処理した処理結果である移動元イベントセットが、当該移動元の処理装置から前記移動先の処理装置に供給されるように制御し、
前記移動先の処理装置が備える出力制御手段は、前記移動元の処理装置から前記供給された移動元イベントセットを蓄積すると共に、前記分配装置から分配されたイベントを前記配置された分析ルールに従って複合イベント処理した処理結果である移動先イベントセットを蓄積し、前記識別子に基づいて、前記移動先イベントセットから前記移動元イベントセットと重複するイベントセットを削除した結果を、処理結果として出力する
請求項１記載の複合イベント処理システム。
【請求項４】
前記分配装置は、前記イベントに特定情報を付与する特定情報付与手段を備え、
前記処理装置は、前記処理結果の出力を制御する出力制御手段を備え、
前記制御装置の制御手段は、前記移動元の処理装置と、前記移動先の処理装置とで、前記ステートが同期した際に、前記特定情報付与手段に、イベントに特定情報を付与することを指示し、
前記移動元の処理装置が備える出力制御手段は、前記移動対象の分析ルールに従って複合イベント処理した処理結果として、前記特定情報が付与されたイベントを含まないイベントセットを出力し、
前記移動先の処理装置が備える出力制御手段は、前記移動対象の分析ルールに従って複合イベント処理した処理結果として、前記特定情報が付与されたイベントを含むイベントセットを出力する
請求項１記載の複合イベント処理システム。
【請求項５】
前記制御装置に制御される逐次化分配装置をさらに備え、
前記制御装置の制御手段は、
前記逐次化分配装置が、前記分配装置の代わりに、前記移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記イベントを分配するように制御し、
前記移動対象の分析ルールを複製すると共に、前記移動先の処理装置に配置し、
前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記逐次化分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する
請求項１記載の複合イベント処理システム。
【請求項６】
分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置とを制御する制御装置と、
前記分配装置が分配するイベントに識別子を付与する識別子付与装置と、
前記複数の処理装置による複合イベント処理の処理結果の出力を制御する出力制御装置とを備え、
前記制御装置は、
前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御し、
前記移動対象の分析ルールを複製して前記移動先の処理装置に配置し、
前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する制御手段を備えた
複合イベント処理システム。
【請求項７】
分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置を制御する制御装置であって、
前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御し、
前記移動対象の分析ルールを複製して前記移動先の処理装置に配置し、
前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する制御手段を備えた
制御装置。
【請求項８】
前記制御手段は、
前記分配装置から前記移動元の処理装置に分配されたイベントが、当該移動元の処理装置から前記移動先の処理装置に供給されるように制御し、
前記移動先の処理装置が備える、複合イベント処理の処理結果の出力を制御する出力制御手段が、
前記移動元の処理装置から前記供給された供給イベントを蓄積すると共に、前記分配装置から分配されたイベントを前記配置された分析ルールに従って複合イベント処理した処理結果である移動先イベントセットを蓄積し、前記分配装置がイベントに付与する識別子に基づいて、前記移動先イベントセットから前記供給イベントと重複するイベントを削除した結果を、処理結果として出力するように制御する
請求項６記載の制御装置。
【請求項９】
分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置を制御する制御方法であって、
前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御し、
前記移動対象の分析ルールを複製して前記移動先の処理装置に配置し、
前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する
制御方法。
【請求項１０】
分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置を制御する制御装置に、
前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御する処理と、
前記移動対象の分析ルールを複製して前記移動先の処理装置に配置する処理と、
前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する処理とを
実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複合イベント処理システムに関し、処理装置を動的に追加または削減するために、分析ルールを動的に移動することを可能とする複合イベント処理システム、並びに、複合イベント処理システムを制御する制御装置、制御方法および制御プログラムに関する。
【背景技術】
【０００２】
ＣＰＳ（Ｃｙｂｅｒ  Ｐｈｙｓｉｃａｌ  Ｓｙｓｔｅｍ）あるいはＭ２Ｍ（Ｍａｃｈｉｎｅ  ｔｏ  Ｍａｃｈｉｎｅ）と呼ばれる形態のシステムがある。ＣＰＳとは、実世界（フィジカル空間）に遍在するセンサ、機器等から様々な実世界データ（これをイベントと呼ぶ）を収集し、ＩＴ（サイバー空間）のコンピューティング能力で分析することにより、様々なサービスを実現するシステムである。
【０００３】
ＣＰＳの一例としては、配水制御システムがある。
【０００４】
配水制御システムとは、実世界の水道配管から振動センサ、水圧センサ等を用いて配管振動、水圧などのイベントを収集し、それらイベントを分析して配管劣化や水圧不足を検出する。そして、配水制御システムは、それらを補うようにポンプやバルブを制御することで、安心安全な水を安価に供給する。
【０００５】
ＣＰＳにおけるイベント分析には、複合イベント処理（Ｃｏｍｐｌｅｘ  Ｅｖｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇ：ＣＥＰ）と呼ばれる分析処理が用いられる事が多い。複合イベント処理とは、大量のイベント時系列から、複数のイベントからなる特定のパターンをリアルタイムに検出することで、「今、何が起きているか」を分析することである。
【０００６】
例えば、配水制御システムは、大量のセンサイベント（、あるいはセンサイベントを前処理したイベント）の中から、「特定の配管の振動に異常値がある」、「その配管の前段では、水圧は正常」、「その配管の後段では、水圧は低下」「これら状況が一定時間続いている」といったイベントパターンを検出する。そして、配水制御システムは、「その配管で漏水が発生している」という状況を分析する。
【０００７】
特許文献１には、複合イベント処理システムの一例が記載されている。
図５４は、特許文献１記載の複合イベント処理システムの概要を説明する図である。図５４に示すように、特許文献１記載の複合イベント処理システムは、分析ルールと分配ルールの配置、削除を行う制御装置と、イベントを生成する複数のデバイスと、分配ルールに基づきイベントを適切な処理装置に分配する分配装置と、分析ルールに基づき複合イベント処理を実行する複数の処理装置と、複合イベント処理の処理結果を元に何らかの処理を行う複数のアプリケーションと、を備える。
【０００８】
制御装置は、分析ルールを入力とし、出力として分析ルールを処理サーバに配置する。分析ルールとは、検出するイベントパターンと、検出結果の出力先とが記述されたものである。検出するイベントパターンとは、例えば「イベントA発生の後、10秒以内にさらにイベントBが発生」といったパターンである。以降、簡易化のため上記イベントパターンを「A→B in 10秒」と記載する。
【０００９】
出力先とは、上記イベントパターンが検出された場合（これを「イベントが分析ルールにマッチする」と呼称する）、処理結果としてマッチしたイベントのセットを出力する先である。出力先がアプリケーション１（ＡＰ１）の場合、分析ルールは「A→B in 10秒 to アプリケーション１」と記載する。
【００１０】
また、制御装置は、出力として分配ルールを分配装置に配置する。分配ルールとは、処理装置への分析ルールの配置に応じて、イベントを必要とする処理装置に分配するためのルールである。例えば、「A→B in 10秒 to アプリケーション1」という分析ルールが処理装置１（ＥＰ１）に配置された場合、処理装置１は、イベントAとイベントBを必要とする。したがって、「イベントAを処理装置１に分配する」、「イベントBを処理装置１に分配する」という分配ルールが配置される。以降、簡易化のため上記分配ルールを、「A to 処理装置1」「B to 処理装置1」と表記する。
【００１１】
デバイスは、イベントを生成し、出力する。
【００１２】
分配装置は、イベントを入力とし、分配ルールに基づき、イベントを適切な処理装置に出力する。
【００１３】
処理装置は、イベントを入力とし、配置された分析ルールに基づき複合イベント処理を実行し、処理結果としてマッチしたイベントセットを出力する。例えば、「A→B in 10秒 to アプリケーション1」という分析ルールが配置されるとする。ここで、イベントAが入力されると、処理装置はイベントパターン「A→B in 10秒」のうち、イベントAまで検出したと記憶する。この記憶をステート（ＳＴ）と呼ぶ。以降、簡易化のため、上記ステートを「A→」と記載する。
【００１４】
ステートは 分析ルールのinで示された時間だけ保持される。この時間を分析ルールの有効時間と呼ぶ。よって、ここで10秒以内にさらにイベントBが入力されれば、処理装置は保持したステート「A→」と併せてイベントパターン「A→B in 10秒」を検出し、分析ルールがマッチしたとして、マッチしたイベントのセット{A,B}をアプリケーション１に出力する。
【００１５】
イベントA入力後、10秒以内にイベントBが入力されない場合、ステートは破棄される。よって、10秒後にイベントBが入力されても分析ルールはマッチせず、何も出力されない。また、先にイベントBが入力された場合、ステートが存在しないので、やはり分析ルールはマッチせず、何も出力されない。また、すでにステート「A→」が保持されている状態で、さらにイベントAが入力された場合、別のステート「A→」が生成される。
【００１６】
なお、分析ルールは１つに限らず、複数配置される場合もある。
【００１７】
アプリケーションは、マッチしたイベントセットを入力とし、なんらかの処理を行う。
【００１８】
以上のような構成をとることで、特許文献１記載の複合イベント処理システムは、クラウドデータセンタなど複数の計算機を利用できる環境において、各計算機に処理装置の機能を割り当てることにより分散並列処理を行い、大規模な複合イベント処理を実現することが出来る。
【００１９】
実世界のデータであるイベントは、実世界の状況によって、その量が大きく変わる。
【００２０】
例えば、配水制御では、震災などで水道配管全体に多くの異常が発生した場合、「振動の異常値」イベントが急増する。あるいは、水需要が短期間で大きく増加した場合、「水圧の低下」イベントが急増する。
【００２１】
イベント量が変化すれば、複合イベント処理システムに要求される処理能力も変化する。特許文献１記載の複合イベント処理システムにおいて、処理能力を変更するには、処理装置を追加または削減すればよい。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特許第４１６１９９８号公報
【発明の概要】
【発明が解決しようとする課題】
【００２３】
クラウドデータセンタでは、複数の計算機を利用できるので、複合イベント処理システムの処理能力を変更するために、処理装置を用意することは可能である。しかし、特許文献１記載の複合イベント処理システムは、用意した処理装置を、システムを止めずに、すなわち動的に追加することが出来ない。より厳密には、既存の処理装置で処理されている分析ルールを、追加した処理装置に動的に移動させることができない。
【００２４】
また、特許文献１記載の複合イベント処理システムでは、既存の処理装置を、システムを止めずに（すなわち動的に）、システムから削減することも出来ない。より厳密には、削減する処理装置で処理されている分析ルールを、他の処理装置に動的に移動させることが出来ない。
【００２５】
すなわち、特許文献１記載の複合イベント処理システムは、分析ルールを動的に移動することができないという課題がある。
【００２６】
ここで、図５５を用いて、分析ルールを動的に移動できない理由を説明する。
【００２７】
図５５は、特許文献１記載の複合イベント処理システムの一部を抽出した図である。図５５の左側には、処理装置１に「A→B in 10秒 to アプリケーション１」という分析ルールが配置されていて、ある時点で「A→」というステートを保持していることが示される。また、分配装置には「A to 処理装置1」、「B to 処理装置1」という分配ルールが配置されているとする。
【００２８】
ここで、分析ルールを処理装置１から処理装置２に移動するには、以下のように動作する。まず、制御装置は、処理装置１から分析ルールを削除する（ステップ１）。次に、制御装置は、処理装置２に分析ルールを配置する（ステップ２）。最後に、制御装置は、分配装置の「A to 処理装置1」、「B to 処理装置1」という分配ルールを削除し、新たに「A to 処理装置2」、「B to 処理装置2」という分配ルールを配置する（ステップ３）。
【００２９】
上記のように動作することで、図５５の右側に示すように、分析ルールは処理装置２に移動し、以降、処理装置２にイベントA、イベントBが分配され、分析ルールに基づき複合イベント処理が実行される。しかし、配置・削除を前提としている分析ルール、分配ルールと異なり、ステートはメモリに格納される情報のため、異なる処理装置間で移動させることが一般に困難である。
【００３０】
したがって、分析ルール移動時にステートが破棄されてしまう。そのため、実行中の複合イベント処理を、一貫性を維持したまま継続することができない。
【００３１】
以上の理由から、分析ルールを動的に移動できないので、要求された処理能力を実現するには、システム全体を停止し、処理装置等の構成を変更したあとに、再起動させる必要がある。システムを停止させている間は当然、サービスを提供することはできない。
【００３２】
なお、要求処理能力以下の処理能力でシステムを運用し続けると、システムはイベントを処理しきれず、破綻してしまう。また、システムを要求処理能力以上の処理能力で運用を続けると、複合イベント処理は継続できるが、不要な計算リソースを確保しつづけるので、コストがかかる。
【００３３】
本願発明は、上記課題を鑑みてなされたものであり、分析ルールの動的な移動を実現する複合イベント処理システム等を提供することを主要な目的とする。
【課題を解決するための手段】
【００３４】
本発明の第１の複合イベント処理システムは、分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置と、前記分配装置と前記処理装置とを制御する制御装置とを備え、前記制御装置は、前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御し、前記移動対象の分析ルールを複製して前記移動先の処理装置に配置し、前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する制御手段を備える。
【００３５】
本発明の第２の複合イベント処理システムは、分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置とを制御する制御装置と、前記分配装置が分配するイベントに識別子を付与する識別子付与装置と、前記複数の処理装置による複合イベント処理の処理結果の出力を制御する出力制御装置とを備え、前記制御装置は、前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御し、前記移動対象の分析ルールを複製して前記移動先の処理装置に配置し、前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する制御手段を備える。
【００３６】
本発明の第１の制御装置は、分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置を制御する制御装置であって、前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御し、前記移動対象の分析ルールを複製して前記移動先の処理装置に配置し、前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する制御手段を備える。
【００３７】
本発明の第１の制御方法は、分配ルールにしたがってイベントを分配する分配装置と、前記分配装置から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する複数の処理装置を制御する制御方法であって、前記分配装置が、移動対象の分析ルールが配置される移動元の処理装置と、当該分析ルールの移動先の処理装置とに、前記分析ルールが必要とするイベントを分配するように制御し、前記移動対象の分析ルールを複製して前記移動先の処理装置に配置し、前記移動元の処理装置と、前記移動先の処理装置とで、ステートが同期したら、前記分配装置が、前記移動元の処理装置への前記イベントの分配を停止するように制御すると共に、前記移動元の処理装置に配置される前記移動対象の分配ルールを削除する。
【００３８】
なお同目的は、上記の各構成を有する制御装置および制御方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００３９】
本発明によれば、複合イベント処理システムにおいて、分析ルールの動的な移動を実現することができるという効果が得られる。
【図面の簡単な説明】
【００４０】
【図１】本発明の第１の実施の形態に係る複合イベント処理システムの構成を示すブロック図である。
【図２】本発明の第１の実施の形態に係る複合イベント処理システムの動作を示すシーケンス図である。
【図３】本発明の第１の実施の形態に係る複合イベント処理システムの通常時状態を示す図である。
【図４】本発明の第１の実施の形態に係る複合イベント処理システムの分配制御開始状態を示す図である。
【図５】本発明の第１の実施の形態に係る複合イベント処理システムの出力制御開始状態を示す図である。
【図６】本発明の第１の実施の形態に係る複合イベント処理システムのID付与開始状態を示す図である。
【図７】本発明の第１の実施の形態に係る複合イベント処理システムの並列実行開始状態を示す図である。
【図８】本発明の第１の実施の形態に係る複合イベント処理システムのステート同期状態を示す図である。
【図９】本発明の第１の実施の形態に係る複合イベント処理システムの分配制御終了状態を示す図である。
【図１０】本発明の第１の実施の形態に係る複合イベント処理システムの移動元ステート消滅状態を示す図である。
【図１１】本発明の第１の実施の形態に係る複合イベント処理システムの並列実行終了状態を示す図である。
【図１２】本発明の第１の実施の形態に係る複合イベント処理システムの出力調整状態を示す図である。
【図１３】本発明の第１の実施の形態に係る複合イベント処理システムの蓄積結果出力状態を示す図である。
【図１４】本発明の第１の実施の形態に係る複合イベント処理システムのID付与終了状態を示す図である。
【図１５】本発明の第１の実施の形態に係る複合イベント処理システムの移動完了状態を示す図である。
【図１６】本発明の第２の実施の形態に係る複合イベント処理システムの構成を示すブロック図である。
【図１７】本発明の第２の実施の形態に係る複合イベント処理システムの動作を示すシーケンス図である。
【図１８】本発明の第２の実施の形態に係る複合イベント処理システムの通常時状態を示す図である。
【図１９】本発明の第２の実施の形態に係る複合イベント処理システムの分配制御開始状態を示す図である。
【図２０】本発明の第２の実施の形態に係る複合イベント処理システムの出力制御開始状態を示す図である。
【図２１】本発明の第２の実施の形態に係る複合イベント処理システムのID付与開始状態を示す図である。
【図２２】本発明の第２の実施の形態に係る複合イベント処理システムの並列実行開始状態を示す図である。
【図２３】本発明の第２の実施の形態に係る複合イベント処理システムのステート同期状態を示す図である。
【図２４】本発明の第２の実施の形態に係る複合イベント処理システムの分配制御終了状態を示す図である。
【図２５】本発明の第２の実施の形態に係る複合イベント処理システムの移動元ステート消滅状態を示す図である。
【図２６】本発明の第２の実施の形態に係る複合イベント処理システムの並列実行終了状態を示す図である。
【図２７】本発明の第２の実施の形態に係る複合イベント処理システムの出力調整状態を示す図である。
【図２８】本発明の第２の実施の形態に係る複合イベント処理システムの蓄積結果出力状態を示す図である。
【図２９】本発明の第２の実施の形態に係る複合イベント処理システムのID付与終了状態を示す図である。
【図３０】本発明の第２の実施の形態に係る複合イベント処理システムの移動完了状態を示す図である。
【図３１】本発明の第３の実施の形態に係る複合イベント処理システムの構成を示すブロック図である。
【図３２】本発明の第３の実施の形態に係る複合イベント処理システムの動作を示すシーケンス図である。
【図３３】本発明の第３の実施の形態に係る複合イベント処理システムの通常時状態を示す図である。
【図３４】本発明の第３の実施の形態に係る複合イベント処理システムの分配制御開始状態を示す図である。
【図３５】本発明の第３の実施の形態に係る複合イベント処理システムの出力制御開始状態を示す図である。
【図３６】本発明の第３の実施の形態に係る複合イベント処理システムの並列実行開始状態を示す図である。
【図３７】本発明の第３の実施の形態に係る複合イベント処理システムのステート同期状態を示す図である。
【図３８】本発明の第３の実施の形態に係る複合イベント処理システムのマーク付与開始、出力切り替え状態を示す図である。
【図３９】本発明の第３の実施の形態に係る複合イベント処理システムの分配制御終了状態を示す図である。
【図４０】本発明の第３の実施の形態に係る複合イベント処理システムの移動元ステート消滅状態を示す図である。
【図４１】本発明の第３の実施の形態に係る複合イベント処理システムの並列実行終了状態を示す図である。
【図４２】本発明の第３の実施の形態に係る複合イベント処理システムの出力制御終了状態を示す図である。
【図４３】本発明の第３の実施の形態に係る複合イベント処理システムのマーク付与終了状態を示す図である。
【図４４】本発明の第４の実施の形態に係る複合イベント処理システムの構成を示すブロック図である。
【図４５】本発明の第５の実施の形態に係る複合イベント処理システムの構成を示すブロック図である。
【図４６】本発明の第５の実施の形態に係る複合イベント処理システムの動作を示すシーケンス図である。
【図４７】本発明の第５の実施の形態に係る複合イベント処理システムの通常時状態を示す図である。
【図４８】本発明の第５の実施の形態に係る複合イベント処理システムの分配制御前処理状態を示す図である。
【図４９】本発明の第５の実施の形態に係る複合イベント処理システムの分配制御開始状態を示す図である。
【図５０】本発明の第５の実施の形態に係る複合イベント処理システムの移動完了状態を示す図である。
【図５１】本発明の第５の実施の形態に係る複合イベント処理システムの分配制御後処理状態を示す図である。
【図５２】本発明の第６の実施の形態に係る複合イベント処理システムの構成を示すブロック図である。
【図５３】本発明の各実施形態に係る複合イベント処理システムを構成する装置のハードウエア構成を例示する図である。
【図５４】本発明と関連する複合イベント処理システムの概要を説明する図である。
【図５５】本発明と関連する複合イベント処理システムの一部を抽出した図である。
【発明を実施するための形態】
【００４１】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００４２】
第１の実施形態
［構成の説明］
図１は、本発明の第１の実施の形態に係る複合イベント処理システム１００の構成を示すブロック図である。複合イベント処理システム１００は、制御装置１１０、分配装置１２０、複数の処理装置１３０、１３０２、・・・、１３０ｎ（ｎは整数）を備える。
【００４３】
制御装置１１０は、分配装置１２０と処理装置１３０、１３０２、・・・、１３０ｎを制御する。制御装置１１０は、制御部１１１を備える。分配装置１２０は、分配ルール１２１に基づきイベントを適切な処理装置１３０、１３０２、・・・、１３０ｎに分配する。分配装置１２０は、またイベントに固有のID（IDentification）を付与するID付与部１２２を備える。
【００４４】
処理装置１３０、１３０２、・・・、１３０ｎは、それぞれ分析ルール１３１、１３１２、・・・、１３１ｎに基づき複合イベント処理を実行する。処理装置１３０、１３０２、・・・、１３０ｎは、また、複合イベント処理の処理結果の出力を制御する出力制御部１３２、１３２２、・・・１３２ｎを備える。
【００４５】
図１では、処理装置１３０、１３０２、・・・、１３０ｎを、それぞれ処理装置１、２、・・・、ｎとも示す。以降の説明では、処理装置１３０、１３０２、・・・、１３０ｎを、それぞれ処理装置１、２、・・・、ｎと表記する場合がある。また、説明の便宜上、処理装置１３０、１３０２、・・・、１３０ｎのいずれかを、「処理装置１３０」と表記する場合がある。同様に、分析ルール１３１、１３１２、・・・、１３１ｎのいずれかを「分析ルール１３１」と、出力制御部１３２、１３２２、・・・１３２ｎのいずれかを「出力制御部１３２」と、それぞれ表記する場合がある。また、以降の説明または図面において、処理装置、分析ルール、出力制御部などの符号が省略される場合がある。
【００４６】
各構成要素の詳細について説明する。
【００４７】
制御装置１１０は、分析ルール、分配ルール、宛先ルールの生成、配置、削除、および各部（手段）への動作指示を行う。
【００４８】
具体的には、制御装置１１０は、１つ以上の分析ルールを入力とし、分析ルールをどの処理装置１３０に配置すべきか決定し、決定した処理装置１３０に、分析ルールを配置する。分析ルールの形式、および配置先決定手順は、特許文献１記載の複合イベント処理システムと同様のため、説明を省略する。
【００４９】
また、制御装置１１０は、入力された分析ルールを元に分配ルールを生成し、出力として分配装置に配置する。分配ルールの形式、および分配ルール生成手順は、特許文献１記載の複合イベント処理システムと同様のため、説明を省略する。上記分配ルールの生成、配置によって、分配装置は配置された分析ルールに必要なイベントを分析ルールが配置された処理装置に分配する。
【００５０】
また、制御装置１１０は、分配制御を開始するために、イベントを複製分配する分配ルールを生成し、分配装置１２０に、生成した分配ルールを配置する（ここでの生成を、「生成１−１」と称する）。生成する分配ルールは、移動対象となった分析ルールにイベントを分配する分配ルールの分配対象と同じイベントを分配対象とし、分配先を移動先である処理装置１３０としたものである。
【００５１】
例えば、移動対象となった分析ルールが処理装置１に配置されていて、イベントを分配する分配ルールが「A to 処理装置1」、「B to 処理装置1」で、移動先である処理装置が処理装置２である場合、生成される分配ルールは、「A to 処理装置2」、「B to 処理装置2」である。上記分配ルールの生成、配置によって、分配装置１２０は、イベントA、Bを移動元である処理装置に加え、移動先である処理装置２にも分配する。
【００５２】
また、制御装置１１０は、出力制御を開始するために、イベントを転送する分析ルールを生成し、出力として、移動元である処理装置に、生成した分析ルールを配置する（ここでの生成を、「生成１−２」と称する）。生成する分析ルールは、移動対象となった分析ルールが必要とするイベントのみを対象とし、有効時間を0とし、出力先を移動先である処理装置１３０の出力制御部としたものである。
【００５３】
例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」で、移動先である処理装置が処理装置２である場合、生成される分析ルールは、「A to 処理装置２の出力制御部」、「B to 処理装置２の出力制御部」となる。有効時間が0のため、「in 0」の表記は省略されてよい。
【００５４】
また、有効時間が0のため、処理装置は対象となるイベントを検出したらすぐにマッチし、イベントは処理装置２の出力制御部に出力される。
【００５５】
上記分析ルールの生成、配置によって、移動元である処理装置１は、移動対象となった分析ルールが必要とするイベントが入力されると、移動対象となった分析ルールによる複合イベント処理と同時に、移動先である処理装置の出力制御部に転送する。
【００５６】
また、制御装置１１０は、出力制御を開始するために、移動先である処理装置の出力制御部に出力制御の開始を指示する。
【００５７】
また、制御装置１１０は、ID付与を開始するために、分配装置１２０のID付与部１２２にID付与の開始を指示する。
【００５８】
また、制御装置１１０は、並列実行を開始するために、移動対象となった分析ルールを元に、このルールと同じ複合イベント処理を実行する分析ルールを生成し、移動先である処理装置に、生成した分析ルールを配置する。生成する分析ルールは、移動対象となった分析ルールと同じイベントパターンを持ち、出力先を移動先である処理装置の出力制御部としたものである。
【００５９】
例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」で、移動先である処理装置が処理装置２であった場合、生成される分析ルールは「A→B in 10秒 to 処理装置２の出力制御部」となる。
【００６０】
上記分析ルールの生成、配置によって、移動先である処理装置２も、移動元である処理装置１と同様の複合イベント処理を実行し、その処理結果を移動先である処理装置２の出力制御部に出力する。
【００６１】
また、制御装置１１０は、分配制御を終了するために、分配装置１２０から分配ルールを削除する。削除する分配ルールは、移動対象となった分析ルールが必要とするイベントを、移動元である処理装置に分配することを示す分配ルールである。なお、上記「生成１−１」において生成、配置した分配ルールは削除しない。
【００６２】
上記分配ルールの削除によって、分配装置１２０は、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置に分配しなくなる。
【００６３】
また、制御装置１１０は、並列実行を終了するために、移動元である処理装置から移動対象となった分析ルール、および「生成１−２」において生成、配置した分析ルールを削除する。
【００６４】
上記分析ルールの削除によって、移動元である処理装置では複合イベント処理が停止する。
【００６５】
また、制御装置１１０は、出力調整を開始するために、移動先である処理装置の出力制御部に出力調整の開始を指示する。
【００６６】
また、制御装置１１０は、蓄積結果出力を開始するために、移動対象となった分析ルールを元に、出力制御部が処理結果を出力する先を指定する宛先ルールを生成し、移動先である処理装置の出力制御部に生成した宛先ルールを配置し、蓄積結果出力の開始を指示する。
【００６７】
生成する宛先ルールは、移動対象となった分析ルールと同じ出力先を出力先としたものである。例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」である場合、生成される宛先ルールは「to アプリケーション１」である。
【００６８】
上記分析ルールの生成、配置によって、移動先である処理装置の出力制御部は、移動対象となったルールと同じ出力先に処理結果を出力する。
【００６９】
また、制御装置１１０は、ID付与を終了するために、出力として分配装置１２０のID付与部１２２にID付与の終了を指示する。
【００７０】
分配装置１２０は、ID付与部１２２を備える以外は、例えば特許文献１記載の複合イベント処理装置の分配装置と同様のため、詳細な説明は省略する。
【００７１】
ID付与部１２２は、イベントを入力とし、イベントに固有のIDを付与し、IDを付与したイベントを出力する。なお、IDは固有であればよく、連番である必要はない。
【００７２】
処理装置は、出力制御部を備える以外は、例えば特許文献１記載の複合イベント処理装置の処理装置と同様のため、詳細な説明は省略する。
【００７３】
出力制御部は、移動元である処理装置から転送されるイベントと、移動先である処理装置の処理結果であるイベントセットを入力とし、イベントとイベントセットを比較して重複するか判定し、重複したイベントセットを削除する。重複判定手順は以下のように行う。
【００７４】
まず、出力制御部は、２つのキューQ1、Q2を用意する。キューQ1には、移動元である処理装置から転送されるイベントを蓄積する。キューQ2には、移動先である処理装置の処理結果であるイベントセットを蓄積する。なお、イベントには固有のIDが付与されているので、各キューのイベントおよびイベントセットはそれぞれ識別できる。なお、イベントを識別することが重要であるので、イベントそのものではなく、IDのみを蓄積しても構わない。
【００７５】
そして、出力制御部は、キューQ2に蓄積されたイベントセットのうち、キューQ1に蓄積されたイベントの幾つかで完全に構成されうるイベントセットを重複イベントセットと判定する。
【００７６】
例えば、キューQ1には[B,A,B1,A2,B3,A4,B5,A6]というイベントが蓄積され、キューQ2には[{A4,B5},{A6,B7},{A8,B9},{A10,B11},{A12,B13}]というイベントセットが蓄積されているとする。
【００７７】
キューQ2のイベントセット{A4,B5}は、キューQ1にイベントA4、イベントA5共に蓄積されているので、重複イベントセットと判定される。また、キューQ2のイベントセット{A6,B7}は、キューQ1にイベントA6は蓄積されているがイベントB7が蓄積されていないので、重複イベントセットとは判定されない。また、キューQ2のイベントセット{A8,B9},{A10,B11},{A12,B13}は、キューQ1に対応するイベントが蓄積されていないので、重複イベントセットとは判定されない。
【００７８】
また、出力制御部は、宛先ルールを入力とし、重複イベントセットが削除された残りの蓄積イベントセットを、宛先ルールに従い出力する。
［動作の説明］
次に、図１および図２を参照して、第１の実施の形態の動作について説明する。図２は、第１の実施の形態に係る複合イベント処理システムの動作を示すシーケンス図である。
【００７９】
まず、初期状態として、分析ルールが制御装置１１０に入力され、制御装置１１０は、上記分析ルールを適当な処理装置に配置する。また、制御装置１１０は、分配ルールを生成し、分配装置１２０に配置する。分配装置１２０は、イベントを分配する。分析ルールを配置された処理装置は、複合イベント処理を実行している。すなわち、図３の状態（通常時状態）である。
【００８０】
図３では、分配装置１２０は、分配ルールとして、「A to 処理装置1（ＥＰ１）」、「B to 処理装置1（ＥＰ１）」が配置され、イベントA、Bを処理装置１に分配する。
【００８１】
処理装置１は、分析ルールとして「A→B in 10秒 to アプリケーション１」が配置され、複合イベント処理を実行し、処理結果をアプリケーション１に出力している。
【００８２】
処理装置２は何も処理を行っていない。
【００８３】
なお、説明を簡略化するために表記してないが、処理装置１や処理装置２には他の分析ルールが配置され、分配装置１２０にはそれに応じた分配ルールが配置され、処理装置１や処理装置２が他の複合イベント処理を実行していても構わない。
【００８４】
ここで、上記分析ルールを移動対象とし、移動元である処理装置１から移動先である処理装置２に移動するとする。
【００８５】
次に、制御装置１１０は、分配制御を開始するために、イベントを複製分配する分配ルールを生成し、分配装置１２０に生成した分配ルールを配置する（ステップ１−１）。その結果、分配装置１２０は、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置１と移動先である処理装置２に同じイベントを分配する。すなわち、図４の状態（分配制御開始状態）である。
【００８６】
図４では、分配装置１２０は、分配ルールとして、「A to 処理装置１」、「B to 処理装置１」に加えて「A to 処理装置２」、「B to 処理装置２」が配置され、イベントA、Bを移動元である処理装置１と移動先である処理装置２に分配している。
【００８７】
次に、制御装置１１０は、出力制御を開始するために、イベントを移動先である処理装置２の出力制御部（Ｏ２）に転送する分析ルールを生成し、移動元である処理装置１に、生成した分析ルールを配置する（ステップ１−２）。その結果、移動元である処理装置１は、分配されたイベントを、複合イベント処理すると同時に、移動先である処理装置２の出力制御部に転送する。
【００８８】
また、制御装置１１０は、出力制御を開始するために、移動先である処理装置２の出力制御部に出力制御の開始を指示する。出力制御の開始を指示された出力制御部は、２つのキューQ1、Q2を用意し、キューQ1には移動元である処理装置１から転送されるイベントを蓄積し、キューQ2には移動先である処理装置２の処理結果であるイベントセットを蓄積する。
【００８９】
ただし、この時点では、移動先である処理装置２は、複合イベント処理を実行していないので、処理結果を出力しない。すなわち、図５の状態（出力制御開始状態）である。図５では、移動元である処理装置１は、分析ルールとして、「A to 処理装置２の出力制御部（Ｏ２）」、「B to 処理装置２の出力制御部（Ｏ２）」が追加配置され、イベントA、Bを複合イベント処理すると同時に、移動先である処理装置２の出力制御部に転送している。
【００９０】
次に、制御装置１１０は、ID付与を開始するために、分配装置１２０のID付与部１２２にID付与の開始を指示する（ステップ１−３）。ID付与の開始を指示された分配装置１２０のID付与部１２２は、イベントに固有のIDを付与し、出力する。
【００９１】
その結果、複合イベント処理の結果であるイベントセットに含まれるイベントにも固有のIDが付与され、識別可能となる。また、転送されたキューQ2に蓄積されるイベントにも固有のIDが付与され、識別可能となる。すなわち、図６の状態（ID付与開始状態）である。図６では、ID付与部１２２は、イベントAとイベントBに選択的にIDが付与しているが、それ以外のイベントにIDを付与しても構わない。
【００９２】
次に、制御装置１１０は、並列実行を開始するために、移動対象となった分析ルールを元に、このルールと同じ複合イベント処理を実行し処理結果を移動先である処理装置２の出力制御部に出力する分析ルールを生成し、移動先である処理装置２に、生成した分析ルールを配置する（ステップ１−４）。
【００９３】
その結果、移動先である処理装置２も移動元である処理装置１と同じ複合イベント処理を実行し、処理結果を移動先である処理装置２の出力制御部に出力する。これを並列実行と呼ぶ。すなわち、図７の状態（並列実行開始状態）である。
【００９４】
図７では、移動先である処理装置２は、分析ルール「A→B in 10秒 to 処理装置２の出力制御部」を配置され、複合イベント処理を実行し、処理結果を移動先である処理装置２の出力制御部に出力している。
【００９５】
出力制御部は、上記処理結果をキューQ2に蓄積している。つまり、キューQ2には処理装置１の処理結果と重複するかもしれないが並列実行以降すべての処理装置２の処理結果が欠落無く蓄積される。ただし、この時点では、移動先である処理装置２のステートが無いので、イベントBではルールがマッチせず、処理結果は出力しない状況である。
【００９６】
なお、移動元である処理装置１は、複合イベント処理の処理結果を通常通りアプリケーション１に出力している。すなわち、複合イベント処理システム全体で移動元である処理装置１の処理結果のみを出力している。
【００９７】
次に、制御装置１１０は、移動元である処理装置１と移動先である処理装置２でステートを同期させるため一定時間待機する（ステップ１−５）。待機時間は、移動対象となった分析ルールの有効時間以上である。その結果、並列実行開始時に２つの処理装置間でステートが異なっていても、それらのステートは破棄され、同じイベントが分配されるため同じステートが保持されるようになり、実行される複合イベント処理やその処理結果も同じになる。これをステートの同期と呼ぶ。すなわち、図８の状態（ステート同期状態）である。
【００９８】
図８では、移動元である処理装置１のステートと移動先である処理装置２のステートが、ともに「A4→」と示されるように、同期している。
【００９９】
次に、制御装置１１０は、分配制御を終了するために、分配装置１２０から分配ルールを削除する（ステップ１−６）。削除する分配ルールは、移動対象となった分析ルールが必要とするイベントを移動元である処理装置に分配する分配ルールである。その結果、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置１に分配されなくなる。すなわち、図９の状態（分配制御終了状態）である。
【０１００】
図９では、分配装置１２０は、分配ルール「A to 処理装置１」、「B to 処理装置１」を削除され、イベントA、Bを移動先である処理装置２にのみ分配している。なお、分配が行われなくなっても、分配装置１２０と処理装置間の通信遅延などによりタイミングによってはイベントが移動元である処理装置１に入力され、複合イベント処理を実行して処理結果を出力したり、入力イベントを転送したりする場合がある。
【０１０１】
次に、制御装置１１０は、移動元である処理装置１でステートが消滅するまで一定時間待機する（ステップ１−７）。待機時間は移動対象となった分析ルールの有効時間以上である。その結果、移動元である処理装置１でステートは消滅する。すなわち、図１０の状態（移動元ステート消滅状態）である。
【０１０２】
図１０では、移動元である処理装置１の移動対象となった分析ルールのステートが消滅している。なお、待機中でも、分配装置１２０と処理装置間の通信遅延などによりタイミングによっては、イベントが移動元である処理装置１に入力され、処理装置１は、複合イベント処理を実行して処理結果を出力したり、入力イベントを転送したりする場合がある。
【０１０３】
次に、制御装置１１０は、並列実行を終了するために、移動元である処理装置１から移動対象となった分析ルール、およびステップ１−２で生成、配置した分析ルールを削除する（ステップ１−８）。その結果、移動元である処理装置１から移動対象となった分析ルールは削除され、複合イベント処理を停止するが、移動先である処理装置２で同等の複合イベント処理が継続される。すなわち、図１１の状態（並列実行終了状態）である。
【０１０４】
図１１では、移動元である処理装置１は、分析ルールが削除され、複合イベント処理を停止している。
【０１０５】
次に、制御装置１１０は、出力調整を開始するために、出力として移動先である処理装置２の出力制御部に出力調整の開始を指示する（ステップ１−９）。その結果、出力制御部は、移動元である処理装置１から転送されるイベントと、移動先である処理装置２の処理結果であるイベントセットを比較して重複するか判定し、重複したイベントセットを削除する。すなわち、図１２の状態（出力調整状態）である。
【０１０６】
図１２では、キューQ2のイベントセット{A4,B5}は、キューQ1にイベントA4、イベントA5共に蓄積されているので、重複イベントセットと判定され削除される。また、キューQ2のイベントセット{A6,B7}は、キューQ1にイベントA6は蓄積されているがイベントB7が蓄積されていないので、重複イベントセットとは判定されない。また、キューQ2のイベントセット{A8,B9},{A10,B11},{A12,B13}は、キューQ1に対応するイベントが蓄積されていないので、重複イベントセットとは判定されない。キューQ2には処理装置１の処理結果と重複しているかもしれないが並列実行以降すべての処理装置２の処理結果が欠落なく蓄積されているので、上記重複削除処理により、キューQ2には処理装置１と重複なくかつ欠落のない処理結果が蓄積されることとなる。なお、出力調整中もキューQ2には移動先である処理装置２の処理結果が継続して蓄積される。
【０１０７】
次に、制御装置１１０は、蓄積結果出力を開始するために、移動対象となった分析ルールを元に、出力制御部が処理結果を出力する先を指定する宛先ルールを生成し、移動先である処理装置の出力制御部に、生成した宛先ルールを配置し、蓄積結果出力の開始を指示する（ステップ１−１０）。その結果、出力制御部は重複イベントセットを削除して残った蓄積イベントセットを宛先ルールに従い出力する。すなわち、図１３の状態（蓄積結果出力状態）である。
【０１０８】
図１３では、出力制御部は宛先ルールとして「to アプリケーション１」が配置され、キューQ2に蓄積されたイベントセットを処理結果としてアプリケーション１に出力している。
【０１０９】
次に、制御装置１１０は、ID付与を終了するために、分配装置１２０のID付与部１２２にID付与の終了を指示する（ステップ１−１１）。その結果、ID付与部１２２はイベントへのID付与を終了する。すなわち、図１４の状態（ID付与終了状態）である。図１４では、分配装置１２０が分配したイベントにIDが付与されていない。
【０１１０】
なお、ステップ１−１０〜１−１１の間も、キューQ2には移動先である処理装置２の処理結果が継続して蓄積され、また蓄積された処理結果が出力され続ける。一般に、複合イベント処理より単なる結果出力のほうが早いため、やがてキューQ2は空となる。キューQ2が空となった時点で、分析ルールの移動は完了する。すなわち、図１５の状態（移動完了状態）である。
【０１１１】
図１５では、移動先である処理装置２が移動対象となった分析ルールに基づき複合イベント処理を実行し、出力制御部を介して処理結果を出力している。その際、キューQ2を経由してもしなくても構わない。また、キューQ1に蓄積されたイベント、あるいはキューQ1は削除したほうがリソース消費の面から望ましいが、削除しなくても構わない。
【０１１２】
以上のように、本第１の実施形態によれば、複合イベント処理システムにおいて、分析ルールの動的な移動を実現できるという効果が得られる。その理由は、分配装置１２０が分配ルールを複製することにより、分析ルールの移動元と、移動先とで、復号イベント処理を並列実行するので、ステートを処理装置間で移動させる必要がないためである。
【０１１３】
また、本第１の実施形態によれば、複合イベント処理システムにイベントが連続的に入力される場合でも、処理結果の重複あるいは欠落なしに、分析ルールを動的に移動できるという効果が得られる。その理由は、分析ルールの移動先の処理装置は、移動元の処理装置に入力されたイベントを並列実行の少し前からすべて蓄積し、上記のイベントと多少重複しても構わないように移動先の処理装置の処理結果であるイベントセットを並列実行以降からすべて蓄積する。そして、移動先の処理装置は、移動元である処理装置に入力されたイベントと、移動先である処理装置の処理結果であるイベントセットとを比較して重複するか判定し、重複したイベントセットを削除する。これにより、複合イベント処理システムは、残った欠落なくかつ重複のない処理結果であるイベントセットを出力するからである。
【０１１４】
第２の実施形態
次に、本発明の第２の発明を実施するための最良の形態について図面を参照して詳細に説明する。
［構成の説明］
図１６は、本発明の第２の実施の形態に係る複合イベント処理システム２００の構成を示すブロック図である。複合イベント処理システム２００は、制御装置１１０、分配装置１２０、複数の処理装置１３０、１３０２、・・・、１３０ｎを備える。
【０１１５】
制御装置１１０と、分配装置１２０は、上記第１の実施形態と同様である。処理装置１３０、１３０２、・・・、１３０ｎは、それぞれ、分析ルール１３１、１３１２、・・・、１３１ｎ、転送用出力制御部１３３、１３３２、・・・、１３３ｎ、調整用出力制御部１３４、１３４２、・・・、１３４ｎを備える。
【０１１６】
説明の便宜上、転送用出力制御部１３３、１３３２、・・・、１３３ｎのいずれかを「転送用出力制御部１３３」と、調整用出力制御部１３４、１３４２、・・・、１３４ｎのいずれかを「調整用出力制御部１３４」と、それぞれ表記する場合がある。また、以降の説明または図面において、処理装置、分析ルール、転送用出力制御部、調整用出力制御部などの符号が省略される場合がある。
【０１１７】
各構成要素の詳細について説明する。
【０１１８】
制御装置１１０は、分析ルール、分配ルール、宛先ルールの生成、配置、削除、および各部（手段）への動作指示を行う。
【０１１９】
具体的には、制御装置１１０は、１つ以上の分析ルールを入力とし、入力された分析ルールの出力先を変更した分析ルールを生成し、生成した分析ルールをどの処理装置１３０に配置すべきか決定し、出力として決定した処理装置１３０に、生成した分析ルールを配置する。分析ルールの形式、配置先決定手順は特許文献１記載の複合イベント処理システムと同様のため、説明を省略する。生成される分析ルールは、入力された分析ルールと同じイベントパターンを持ち、出力先を、配置する処理装置１３０の転送用出力制御部とするものである。例えば、入力された分析ルールが「A→B in 10秒 to アプリケーション１」で、配置先が処理装置１である場合、生成される分析ルールは「A→B in 10秒 to 処理装置１の転送用出力制御部」である。上記分析ルールの生成、配置によって、分析ルールを配置された処理装置１３０は、複合イベント処理を実行し、処理結果を転送用出力制御部に出力する。
【０１２０】
また、制御装置１１０は、入力された分析ルールを元に宛先ルールを生成し、分析ルールを配置した処理装置１３０の転送用出力制御部に、生成した宛先ルールを配置する（ここでの生成を、「生成２−１」と称する）。生成される宛先ルールは、入力された分析ルールと同じ宛先を持つ。
【０１２１】
例えば、入力された分析ルールが「A→B in 10秒 to アプリケーション１」である場合、生成される宛先ルールは「to アプリケーション１」である。上記宛先ルールの生成、配置によって、分析ルールを配置された処理装置１３０の転送用出力制御部１３３は、入力された複合イベント処理の処理結果を、入力された分析ルールと同じ宛先に出力する。
【０１２２】
また、制御装置１１０は、入力された分析ルールを元に分配ルールを生成し、分配装置１２０に生成した分配ルールを配置する。分配ルールの形式、および分配ルール生成手順は、特許文献１記載の複合イベント処理システムと同様のため、説明を省略する。上記分配ルールの生成、配置によって、分配装置１２０は配置された分析ルールに必要なイベントを分析ルールが配置された処理装置１３０に分配する。
【０１２３】
また、制御装置１１０は、分配制御を開始するために、イベントを複製分配する分配ルールを生成し、分配装置１２０に、生成した分配ルールを配置する（ここでの生成を、「生成２−２」と称する）。生成する分配ルールは、移動対象となった分析ルールにイベントを分配する分配ルールの分配対象と同じイベントを分配対象とし、分配先を移動先である処理装置１３０としたものである。
【０１２４】
例えば、移動対象となった分析ルールが処理装置１に配置されていて、イベントを分配する分配ルールが「A to 処理装置1」、「B to 処理装置1」で、移動先である処理装置が処理装置２である場合、生成される分配ルールは、「A to 処理装置2」、「B to 処理装置2」である。上記分配ルールの生成、配置によって、分配装置１２０は、イベントA、Bを移動元である処理装置に加え、移動先である処理装置にも分配する。
【０１２５】
また、制御装置１１０は、出力制御を開始するために、複合イベント処理の処理結果を転送する宛先ルールを生成し、移動元である処理装置の転送用出力制御部に、生成した宛先ルールを配置する。生成する宛先ルールは、宛先を移動先である処理装置の調整用出力制御部としたものである。例えば、移動先である処理装置が処理装置２であった場合、生成される宛先ルールは「to 処理装置２の調整用出力制御部」となる。上記宛先ルールの生成、配置によって、移動元である処理装置１の転送用出力制御部は、処理結果が入力されると、上記「生成２−１」で配置した宛先ルールの宛先に加え、移動先である処理装置の調整用出力制御部にも処理結果を転送する。
【０１２６】
また、制御装置１１０は、出力制御を開始するために、移動先である処理装置の調整用出力制御部に出力制御の開始を指示する。
【０１２７】
また、制御装置１１０は、ID付与を開始するために、分配装置のID付与部にID付与の開始を指示する。
【０１２８】
また、制御装置１１０は、並列実行を開始するために、移動対象となった分析ルールを元に、このルールと同じ複合イベント処理を実行する分析ルールを生成し、移動先である処理装置に、生成した分析ルールを配置する。生成する分析ルールは、移動対象となった分析ルールと同じイベントパターンを持ち、出力先を移動先である処理装置の調整用出力制御部としたものである。
【０１２９】
例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」で、移動先である処理装置が処理装置２である場合、生成される分析ルールは、「A→B in 10秒 to 処理装置２の調整用出力制御部」である。
【０１３０】
上記分析ルールの生成、配置によって、移動先である処理装置も、移動元である処理装置と同様の複合イベント処理を実行し、その処理結果を移動先である処理装置の調整用出力制御部に出力する。
【０１３１】
また、制御装置１１０は、分配制御を終了するために、分配装置１２０から分配ルールを削除する。削除する分配ルールは、移動対象となった分析ルールが必要とするイベントを、移動元となる処理装置に分配することを示す分配ルールである。なお、上記「生成２−２」において生成、配置した分配ルールは削除しない。
【０１３２】
上記分配ルールの削除によって、分配装置１２０は、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置に分配しなくなる。
【０１３３】
また、制御装置１１０は、並列実行を終了するために、移動元である処理装置から移動対象となった分析ルールを削除する。
【０１３４】
また、制御装置１１０は、移動元である処理装置の転送用出力制御部から宛先ルールを削除する。上記ルールの削除によって、移動元である処理装置では複合イベント処理が停止する。
【０１３５】
また、制御装置１１０は、出力調整を開始するために、出力として移動先である処理装置の調整用出力制御部に出力調整の開始を指示する。
【０１３６】
また、制御装置１１０は、蓄積結果出力を開始するために、移動対象となった分析ルールを元に、調整用出力制御部が処理結果を出力する先を指定する宛先ルールを生成し、移動先である処理装置の調整用出力制御部に生成した宛先ルールを配置し、蓄積結果出力の開始を指示する。生成する宛先ルールは、移動対象となった分析ルールと同じ出力先を出力先としたものである。
【０１３７】
例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」である場合、生成される宛先ルールは「to アプリケーション１」である。上記分析ルールの生成、配置によって、移動先である処理装置の調整用出力制御部は、移動対象となったルールと同じ出力先に処理結果を出力する。
【０１３８】
また、制御装置１１０は、ID付与を終了するために、分配装置１２０のID付与部１２２にID付与の終了を指示する。
【０１３９】
分配装置１２０は、第１の実施の形態の分配装置１２０と同様のため、詳細な説明は省略する。
【０１４０】
ID付与部１２２は、第１の実施の形態のID付与部１２２と同様のため、詳細な説明は省略する。
【０１４１】
処理装置１３０は、転送用出力制御部と調整用出力制御部を備える以外は、例えば特許文献１記載の複合イベント処理装置の処理装置と同様のため、詳細な説明は省略する。
【０１４２】
転送用出力制御部１３３は、宛先ルール１３５と入力とし、宛先を認識する。また、転送用出力制御部１３３は、複合イベント処理の処理結果を示すイベントセットを入力とし、宛先ルール１３５で指定された宛先にイベントセットを出力する。なお、転送用出力制御部１３３は、イベントセットそのものではなく、イベントセットを構成するイベントのIDのみを出力してもかまわない。
【０１４３】
調整用出力制御部１３４は、移動元である処理装置の処理結果であるイベントセットと、移動先である処理装置の処理結果であるイベントセットを入力とし、イベントセット同士を比較して重複するか判定し、重複した移動先である処理装置の処理結果であるイベントセットを削除する。重複判定手順は以下のように行う。
【０１４４】
まず、調整用出力制御部１３４は、２つのキューQ1、Q2を用意する。キューQ1には移動元である処理装置の処理結果であるイベントセットを蓄積する。キューQ2には移動先である処理装置の処理結果であるイベントセットを蓄積する。なお、イベントには固有のIDが付与されているので、各キューのイベントセットはそれぞれ識別できる。なお、イベントを識別することが重要であるので、イベントそのものではなく、IDのみを蓄積しても構わない。
【０１４５】
そして、調整用出力制御部１３４は、キューQ2に蓄積されたイベントセットのうち、キューQ1に蓄積されたイベントセットのいずれかと同じイベントセットを重複イベントセットと判定する。
【０１４６】
例えば、キューQ1には[{A,B},{A,B1},{A2,B3},{A4,B5}]というイベントが蓄積され、キューQ2には[{A4,B5},{A6,B7},{A8,B9},{A10,B11},{A12,B13}]というイベントセットが蓄積されているとする。キューQ2のイベントセット{A4,B5}は、キューQ1にイベントセット{A4,B5}が蓄積されているので、重複イベントセットと判定される。また、キューQ2の他のイベントセットは、キューQ1に蓄積されていないので、重複イベントセットとは判定されない。
【０１４７】
なお、分配装置１２０と移動先である処理装置間の通信遅延などによってキューQ2にIDが付与されてないイベントを含むイベントセットが蓄積される場合がある。その場合に備え、上記処理の前にキューQ2から、IDが付与されていないイベントを含むイベントセットを削除する処理を行う。
【０１４８】
また、調整用出力制御部１３４は、宛先ルールを入力とし、重複イベントセットが削除された残りの蓄積イベントセットを、宛先ルールに従い出力する。
［動作の説明］
次に、図１６および図１７を参照して、第２の実施の形態の動作について説明する。図１７は、第２の実施の形態に係る複合イベント処理システムの動作を示すシーケンス図である。
【０１４９】
まず、初期状態として、分析ルールが制御装置１１０に入力され、制御装置１１０は、出力先を変更した分析ルールを生成し適当な処理装置に配置する。また、制御装置１１０は、宛先ルールを生成し、分析ルールを配置した処理装置の転送用出力制御部に配置する。また、制御装置１１０は、分配ルールを生成し分配装置１２０に配置する。分配装置１２０はイベントを分配し、分析ルールを配置された処理装置は、複合イベント処理を実行している。すなわち、図１８の状態（通常時状態）である。
【０１５０】
図１８では、制御装置１１０に、分析ルールとして「A→B in 10秒 to アプリケーション１」が入力される。分配装置１２０は、分配ルールとして「A to 処理装置1」、「B to 処理装置1」が配置され、イベントA、Bを処理装置１に分配する。処理装置１は、出力先を変更した分析ルールとして「A→B in 10秒 to 処理装置１の転送用出力制御部」が配置され、複合イベント処理を実行し、処理結果を転送用出力制御部に出力する。転送用出力制御部は、宛先ルールとして「to アプリケーション１」が配置され、処理結果をアプリケーション１に出力している。処理装置２は何も処理を行っていない。
【０１５１】
なお、説明を簡略化するために表記してないが、処理装置１や処理装置２には他の分析ルール等が配置され、分配装置１２０にはそれに応じた分配ルールが配置され、処理装置１や処理装置２が他の複合イベント処理を実行していても構わない。
【０１５２】
ここで、分析ルール「A→B in 10秒 to アプリケーション１」を移動対象とし、移動元である処理装置１から移動先である処理装置２に移動するとする。なお、実際には分析ルール「A→B in 10秒 to アプリケーション１」は分析ルール「A→B in 10秒 to 処理装置１の転送用出力制御部」と宛先ルール「to アプリケーション１」に分解されているため、この２つのルールの移動を行うとする。
【０１５３】
次に、制御装置１１０は、分配制御を開始するために、イベントを複製分配する分配ルールを生成し、分配装置１２０に生成した分配ルールを配置する（ステップ２−１）。その結果、分配装置１２０は、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置１と移動先である処理装置２に同じイベントを分配する。すなわち、図１９の状態（分配制御開始状態）である。
【０１５４】
図１９では、分配装置１２０は、分配ルールとして「A to 処理装置１」、「B to 処理装置１」に加えて「A to 処理装置２」、「B to 処理装置２」が配置され、イベントA、Bを移動元である処理装置１と移動先である処理装置２に分配している。
【０１５５】
次に、制御装置１１０は、出力制御を開始するために、複合イベント処理の処理結果を移動先である処理装置２の調整用出力制御部に転送する宛先ルールを生成し、移動元である処理装置１の転送用出力制御部に、生成した宛先ルールを配置する（ステップ１−２）。その結果、移動元である処理装置１の転送用出力制御部は、処理結果が入力されると、アプリケーション１に加え、移動先である処理装置２の調整用出力制御部にも処理結果を転送する。
【０１５６】
また、制御装置１１０は、出力制御を開始するために、移動先である処理装置２の調整用出力制御部に出力制御の開始を指示する。出力制御の開始を指示された調整用出力制御部は、２つのキューQ1、Q2を用意し、キューQ1には移動元である処理装置１の処理結果であるイベントセットを蓄積し、キューQ2には移動先である処理装置２の処理結果であるイベントセットを蓄積する。ただし、この時点では、移動先である処理装置２は、複合イベント処理を実行していないので、処理結果を出力しない。すなわち、図２０の状態（出力制御開始状態）である。
【０１５７】
図２０では、移動元である処理装置１の転送用出力制御部は、宛先ルールとして「処理装置２の調整用出力制御部」が追加配置され、処理結果であるイベントセットをアプリケーション１に加え、移動先である処理装置２の調整用出力制御部に転送している。
【０１５８】
次に、制御装置１１０は、ID付与を開始するために、分配装置１２０のID付与部１２２にID付与の開始を指示する（ステップ２−３）。ID付与の開始を指示された分配装置１２０のID付与部１２２は、イベントに固有のIDを付与し、出力する。その結果、複合イベント処理の結果であるイベントセットに含まれるイベントにも固有のIDが付与され、識別可能となる。また、転送されキューQ2に蓄積されるイベントにも固有のIDが付与され、識別可能となる。すなわち、図２１の状態（ID付与開始状態）である。
【０１５９】
図２１では、ID付与部１２２は、イベントAとイベントBに選択的にIDが付与しているが、それ以外のイベントにIDを付与しても構わない。
【０１６０】
次に、制御装置１１０は、並列実行を開始するために、移動対象となった分析ルールを元に、このルールと同じ複合イベント処理を実行し処理結果を移動先である処理装置２の調整用出力制御部に出力する分析ルールを生成し、移動先である処理装置２に生成した分析ルールを配置する（ステップ２−４）。
【０１６１】
その結果、移動先である処理装置２も移動元である処理装置１と同じ複合イベント処理を実行し、処理結果を移動先である処理装置２の調整用出力制御部に出力する。
すなわち、図２２の状態（並列実行開始状態）である。
【０１６２】
図２２では、移動先である処理装置２は、分析ルール「A→B in 10秒 to 処理装置２の調整用出力制御部」を配置され、複合イベント処理を実行し、処理結果を移動先である処理装置２の調整用出力制御部に出力している。
【０１６３】
調整用出力制御部は上記処理結果をキューQ2に蓄積している。つまり、キューQ2には処理装置１の処理結果と重複するかもしれないが並列実行以降すべての処理装置２の処理結果が欠落無く蓄積される。ただし、この時点では移動先である処理装置２のステートが無いので、イベントBではルールがマッチせず、処理結果は出力しない状況である。
【０１６４】
なお、移動元である処理装置１は複合イベント処理の処理結果を通常通りアプリケーション１に出力している。すなわち、複合イベント処理システム全体で移動元である処理装置１の処理結果のみを出力している。
【０１６５】
次に、制御装置１１０は、移動元である処理装置１と移動先である処理装置２でステートを同期させるため一定時間待機する（ステップ２−５）。待機時間は、移動対象となった分析ルールの有効時間以上である。その結果、並列実行開始時に２つの処理装置間でステートが異なっていても、それらのステートは破棄され、同じイベントが分配されるため同じステートが保持されるようになり、実行される複合イベント処理やその処理結果も同じになる。すなわち、図２３の状態（ステート同期状態）である。
【０１６６】
図２３では、移動元である処理装置１のステートと移動先である処理装置２のステートが、ともに「A4→」と示されるように、同期している。
【０１６７】
次に、制御装置１１０は、分配制御を終了するために、分配装置１２０から分配ルールを削除する（ステップ２−６）。削除する分配ルールは、移動対象となった分析ルールが必要とするイベントを移動元となる処理装置に分配する分配ルールである。その結果、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置１に分配されなくなる。すなわち、図２４の状態（分配制御終了状態）である。
【０１６８】
図２４では、分配装置１２０は、分配ルール「A to 処理装置１」、「B to 処理装置１」を削除され、イベントA、Bを移動先である処理装置２にのみ分配している。なお、分配が行われなくなっても、分配装置１２０と処理装置間の通信遅延などによりタイミングによってはイベントが移動元である処理装置１に入力され、複合イベント処理を実行して処理結果を出力したり、転送したりする場合がある。
【０１６９】
次に、制御装置１１０は、移動元である処理装置１でステートが消滅するまで一定時間待機する（ステップ２−７）。待機時間は移動対象となった分析ルールの有効時間以上である。その結果、移動元である処理装置１でステートは消滅する。すなわち、図２５の状態（移動元ステート消滅状態）である。
【０１７０】
図２５では、移動元である処理装置１の移動対象となった分析ルールのステートが消滅している。
【０１７１】
なお、待機中でも、分配装置１２０と処理装置間の通信遅延などによりタイミングによっては、イベントが移動元である処理装置１に入力され、処理装置１は、複合イベント処理を実行して処理結果を出力したり、転送したりする場合がある。
【０１７２】
次に、制御装置１１０は、並列実行を終了するために、移動元である処理装置１から移動対象となった分析ルールを削除する。また、制御装置１１０は、移動元である処理装置１の転送用出力制御部から宛先ルールを削除する（ステップ２−８）。その結果、移動元である処理装置１から移動対象となった分析ルールは削除され、複合イベント処理を停止するが、移動先である処理装置２で同等の複合イベント処理が継続される。すなわち、図２６の状態（並列実行終了状態）である。
【０１７３】
図２６では、移動元である処理装置１は、分析ルールが削除され、複合イベント処理を停止している。
【０１７４】
次に、制御装置１１０は、出力調整を開始するために、出力として移動先である処理装置２の調整用出力制御部に出力調整の開始を指示する（ステップ２−９）。その結果、調整用出力制御部は、移動元である処理装置１の処理結果であるイベントセットと、移動先である処理装置の処理結果であるイベントセットを比較して重複するか判定し、重複した移動先である処理装置２の処理結果であるイベントセットを削除する。すなわち、図２７の状態である。
【０１７５】
図２７では、キューQ2のイベントセット{A4,B5}は、キューQ1にイベントセット{A4,B5}が蓄積されているので、重複イベントセットと判定される。また、キューQ2の他のイベントセットは、キューQ1に蓄積されていないので、重複イベントセットとは判定されない。キューQ2には処理装置１の処理結果と重複しているかもしれないが並列実行以降すべての処理装置２の処理結果が欠落なく蓄積されているので、上記重複削除処理により、キューQ2には、処理装置１と重複なくかつ欠落のない処理結果が蓄積されることとなる。なお、出力調整中もキューQ2には移動先である処理装置２の処理結果が継続して蓄積される。
【０１７６】
次に、制御装置１１０は、蓄積結果出力を開始するために、移動対象となった分析ルールを元に、調整用出力制御部が処理結果を出力する先を指定する宛先ルールを生成し、移動先である処理装置の調整用出力制御部に生成した宛先ルールを配置し、蓄積結果出力の開始を指示する（ステップ２−１０）。その結果、調整用出力制御部は重複イベントセットを削除して残った蓄積イベントセットを宛先ルールに従い出力する。すなわち、図２８の状態（蓄積結果出力状態）である。
【０１７７】
図２８では、出力制御部は宛先ルールとして「to アプリケーション１」が配置され、キューQ2に蓄積されたイベントセットを処理結果としてアプリケーション１に出力している。
【０１７８】
次に、制御装置１１０は、ID付与を終了するために、分配装置１２０のID付与部１２２にID付与の終了を指示する（ステップ２−１１）。その結果、ID付与部１２２はイベントへのID付与を終了する。すなわち、図２９の状態（ID付与終了状態）である。図２９では、分配装置１２０が分配したイベントにIDが付与されていない。
【０１７９】
なお、ステップ２−１０〜２−１１の間も、キューQ2には移動先である処理装置２の処理結果が継続して蓄積され、また蓄積された処理結果が出力され続ける。一般に、複合イベント処理より単なる結果出力のほうが早いため、やがてキューQ2は空となる。キューQ2が空となった時点で、分析ルールの移動は完了する。すなわち、図３０の状態（移動完了状態）である。
【０１８０】
図３０では、移動先である処理装置２が移動対象となった分析ルールに基づき複合イベント処理を実行し、調整用出力制御部を介して処理結果を出力している。その際、キューQ2を経由してもしなくても構わない。また、キューQ1に蓄積されたイベント、あるいはキューQ1は削除したほうがリソース消費の面から望ましいが、削除しなくても構わない。
【０１８１】
以上のように、本第２の実施形態によれば、
第１の実施の形態で得られる効果に加え、移動元である処理装置から移動先である処理装置に転送するデータ量、および移動先である処理装置に蓄積されるデータ量を削減できる。その理由は、処理装置に入力されるイベントは全てマッチするわけではないため、複合イベント処理の処理結果であるイベントセットは入力されるイベントと同等以下の量であり、そのイベントセットのみを転送、蓄積するからである。
【０１８２】
第３の実施形態
次に、本発明の第３の発明を実施するための最良の形態について図面を参照して詳細に説明する。
［構成の説明］
図３１は、本発明の第３の実施の形態に係る複合イベント処理システム３００の構成を示すブロック図である。複合イベント処理システム３００は、制御装置１１０、分配装置１２０、複数の処理装置１３０、１３０２、・・・、１３０ｎを備える。
【０１８３】
制御装置１１０と、処理装置１３０、１３０２、・・・、１３０ｎは、上記第１の実施形態と同様である。
【０１８４】
分配装置１２０は、上記第１の実施形態において説明した分配装置１２０が備えるID付与部１２２に代えて、マーク付与部１２３を備える。マーク付与部１２３は、イベントに、特定のイベントと判別するためのマーク（特定情報）を付与する。
【０１８５】
処理装置１３０が備える出力制御部１３２は、マークの有無に基づいて、複合イベント処理の処理結果の出力を制御する。
【０１８６】
各構成要素の詳細について説明する。
【０１８７】
制御装置１１０は、分析ルール、分配ルール、宛先ルールの生成、配置、削除、および各部（手段）への動作指示を行う。
【０１８８】
具体的には、制御装置１１０は、１つ以上の分析ルールを入力とし、入力された分析ルールの出力先を変更した分析ルールを生成し、生成した分析ルールをどの処理装置に配置すべきか決定し、出力として処理装置に生成した分析ルールを配置する。分析ルールの形式、配置先決定手順は特許文献１記載の複合イベント処理システムと同様のため、説明を省略する。生成される分析ルールは、入力された分析ルールと同じイベントパターンを持ち、出力先を配置する処理装置の出力制御部としたものである。
【０１８９】
例えば、入力された分析ルールが「A→B in 10秒 to アプリケーション１」で、配置先が処理装置１である場合、生成される分析ルールは、「A→B in 10秒 to 処理装置１の出力制御部」である。上記分析ルールの生成、配置によって、分析ルールを配置された処理装置は、複合イベント処理を実行し、処理結果を出力制御部に出力する。
【０１９０】
また、制御装置１１０は、入力された分析ルールを元に宛先ルールを生成し、分析ルールを配置した処理装置１３０の出力制御部１３２に、生成した宛先ルールを配置する（ここでの生成を、「生成３−１」と称する）。生成される宛先ルールは、入力された分析ルールと同じ宛先を持つ。
【０１９１】
例えば、入力された分析ルールが「A→B in 10秒 to アプリケーション１」である場合、生成される宛先ルールは「to アプリケーション１」である。上記宛先ルールの生成、配置によって、分析ルールを配置された処理装置１３０の出力制御部１３２は、入力された複合イベント処理の処理結果を、入力された分析ルールと同じ宛先に出力する。
【０１９２】
また、制御装置１１０は、入力された分析ルールを元に分配ルールを生成し、生成した分配装置１２０に分配ルールを配置する。分配ルールの形式、および分配ルール生成手順は、特許文献１記載の複合イベント処理システムと同様のため、説明を省略する。上記分配ルールの生成、配置によって、分配装置１２０は配置された分析ルールに必要なイベントを分析ルールが配置された処理装置１３０に分配する。
【０１９３】
また、制御装置１１０は、分配制御を開始するために、イベントを複製分配する分配ルールを生成し、分配装置１２０に、生成した分配ルールを配置する（ここでの生成を、「生成３−２」と称する）。生成する分配ルールは、移動対象となった分析ルールにイベントを分配する分配ルールとの分配対象と同じイベントを分配対象とし、分配先を移動先である処理装置１３０としたものである。
【０１９４】
例えば、移動対象となった分析ルールが処理装置１に配置されていて、イベントを分配する分配ルールが「A to 処理装置1」、「B to 処理装置1」で、移動先である処理装置が処理装置２である場合、生成される分配ルールは、「A to 処理装置2」、「B to 処理装置2」である。上記分配ルールの生成、配置によって、分配装置１２０は、イベントA、Bを移動元である処理装置に加え、移動先である処理装置にも分配する。
【０１９５】
また、制御装置１１０は、出力制御を開始するために、複合イベント処理の処理結果を出力する先を指定する宛先ルールを生成し、出力として移動先である処理装置１３０の出力制御部１３２に、生成した宛先ルールを配置する。
【０１９６】
生成する宛先ルールは、上記「生成３−１」で生成した宛先ルールと同様である。また、制御装置１１０は、出力制御を開始するために、出力として移動元である処理装置１３０の出力制御部１３２に、マークが付与されたイベントを含むイベントセットは破棄するように指示する。また、制御装置１１０は、出力制御を開始するために、出力として移動先である処理装置１３０の出力制御部１３２に、マークが付与されたイベントを含まないイベントセットは破棄するように指示する。
【０１９７】
また、制御装置１１０は、並列実行を開始するために、移動対象となった分析ルールを元に、このルールと同じ複合イベント処理を実行する分析ルールを生成し、出力として移動先である処理装置に生成した分析ルールを配置する。生成する分析ルールは、移動対象となった分析ルールと同じイベントパターンを持ち、出力先を移動先である処理装置の出力制御部としたものである。
【０１９８】
例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」で、移動先である処理装置が処理装置２である場合、生成される分析ルールは、「A→B in 10秒 to 処理装置２の出力制御部」となる。上記分析ルールの生成、配置によって、移動先である処理装置も移動元である処理装置と同様の複合イベント処理を実行し、その処理結果を移動先である処理装置の出力制御部に出力する。
【０１９９】
また、制御装置１１０は、マーク付与を開始するために、出力として分配装置１２０のマーク付与部１２３にマーク付与の開始を指示する。
【０２００】
また、制御装置１１０は、分配制御を終了するために、出力として分配装置１２０から分配ルールを削除する。削除する分配ルールは、移動対象となった分析ルールが必要とするイベントを、移動元である処理装置に分配することを示す分配ルールである。なお、上記「生成３−２」において生成、配置した分配ルールは削除しない。
【０２０１】
上記分配ルールの削除によって、分配装置１２０は、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置に分配しなくなる。
【０２０２】
また、制御装置１１０は、並列実行を終了するために、移動元である処理装置から移動対象となった分析ルールを削除する。また、制御装置１１０は、出力として移動元である処理装置の出力制御部から宛先ルールを削除する。上記ルールの削除によって、移動元である処理装置では複合イベント処理が停止する。
【０２０３】
また、制御装置１１０は、出力制御を終了するために、移動元である処理装置の出力制御部と移動先である処理装置の出力制御部に、マークによるイベントセットの出力制御を終了するように指示する。本指示によって、各出力制御部は入力されたイベントセットを無条件に宛先ルールで指定された出力先に出力するようになる。
【０２０４】
また、制御装置１１０は、マーク付与を終了するために、出力として分配装置１２０のマーク付与部１２３にマーク付与の終了を指示する。
【０２０５】
分配装置１２０は、マーク付与部１２３を備える以外は、例えば特許文献１記載の複合イベント処理装置の分配装置１２０と同様のため、詳細な説明は省略する。
【０２０６】
マーク付与部１２３は、イベントを入力とし、イベントに特定のイベントと判別するためのマークを付与し、マークを付与したイベントを出力する。マークは予め決められた文字列等が考えられるが、これに限定するものではない。
【０２０７】
処理装置１３０は、出力制御部を備える以外は、例えば特許文献１記載の複合イベント処理装置の処理装置と同様のため、詳細な説明は省略する。
【０２０８】
出力制御部１３２は、宛先ルールを入力とし、宛先を認識する。また、出力制御部１３２は、複合イベント処理の処理結果であるイベントセットを入力とし、制御装置１１０からの指示に基づいたフィルタリングを行い、イベントセットを宛先ルールに従い出力する。
【０２０９】
フィルタリングは以下の３つの種類がある。
１．入力されたイベントセットをフィルタリングせず無条件に出力する。
２．入力されたイベントセットのうち、マークが付与されたイベントを含むイベントセットを破棄し、それ以外のイベントセットを出力する。
３．入力されたイベントセットのうち、マークが付与されたイベントを含まないイベントセットを破棄し、それ以外のイベントセットを出力する。
初期状態では、無条件に出力される。
［動作の説明］
次に、図３１および図３２を参照して、第３の実施の形態の動作について説明する。図３２は、第３の実施の形態に係る複合イベント処理システムの動作を示すシーケンス図である。
【０２１０】
まず、初期状態として、分析ルールが制御装置１１０に入力され、制御装置１１０は、出力先を変更した分析ルールを生成し適当な処理装置に配置する。また、制御装置１１０は、宛先ルールを生成し分析ルールを配置した処理装置の出力制御部に配置する。また、制御装置１１０は、分配ルールを生成し分配装置１２０に配置する。分配装置１２０は、イベントを分配し、分析ルールを配置された処理装置が複合イベント処理を実行している。すなわち、図３３の状態である。
【０２１１】
図３３では、制御装置１１０に、分析ルールとして「A→B in 10秒 to アプリケーション１」が入力される。分配装置１２０は、分配ルールとして「A to 処理装置1」、「B to 処理装置1」が配置され、イベントA、Bを処理装置１に分配する。処理装置１は、出力先を変更した分析ルールとして「A→B in 10秒 to 処理装置１の出力制御部」が配置され、複合イベント処理を実行し、処理結果を出力制御部に出力する。出力制御部は、宛先ルールとして「to アプリケーション１」が配置され、処理結果をアプリケーション１に出力している。処理装置２は何も処理を行っていない。
【０２１２】
なお、説明を簡略化するために表記してないが、処理装置１や処理装置２には他の分析ルール等が配置され、分配装置１２０にはそれに応じた分配ルールが配置され、処理装置１や処理装置２が他の複合イベント処理を実行していても構わない。
【０２１３】
また、説明のためにイベントには識別子を付記しているが、これは第１の実施の形態などのIDとは異なり、実際にイベントに何らかの情報が付記されているわけではない。そのため、本実施形態では、分配装置１２０に入力される段階で、イベントに識別子が付与されている状態に基づいて説明する。また、説明のために、処理装置が出力したイベントセットは過去のステップに遡ってすべて記載される。
【０２１４】
ここで、分析ルール「A→B in 10秒 to アプリケーション１」を移動対象とし、移動元である処理装置１から移動先である処理装置２に移動するとする。なお、実際には分析ルール「A→B in 10秒 to アプリケーション１」は、分析ルール「A→B in 10秒 to 処理装置１の転送用出力制御部」と宛先ルール「to アプリケーション１」に分解されているため、この２つのルールの移動を行うとする。
【０２１５】
次に、制御装置１１０は、分配制御を開始するために、イベントを複製分配する分配ルールを生成し、分配装置１２０に生成した分配ルールを配置する（ステップ３−１）。その結果、分配装置１２０は、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置１と移動先である処理装置２に同じイベントを分配する。
すなわち、図３４の状態（分配制御開始状態）である。
【０２１６】
図３４では、分配装置１２０は、分配ルールとして「A to 処理装置１」、「B to 処理装置１」に加えて「A to 処理装置２」、「B to 処理装置２」が配置され、イベントA、Bを移動元である処理装置１と移動先である処理装置２に分配している。
【０２１７】
次に、制御装置１１０は、出力制御を開始するために、処理結果を出力する先を指定する宛先ルールを生成し、移動先である処理装置２の出力制御部に、生成した宛先ルールを配置する（ステップ３−２）。
【０２１８】
また、制御装置１１０は、出力制御を開始するために、移動元である処理装置の出力制御部に、マークが付与されたイベントを含むイベントセットは破棄するように指示する。
【０２１９】
また、制御装置１１０は、出力制御を開始するために、移動先である処理装置の出力制御部に、マークが付与されたイベントを含まないイベントセットは破棄するように指示する。
【０２２０】
その結果、移動元である処理装置１の出力制御部は、処理結果が入力されると、マークが付与されたイベントを含まないイベントセットのみを出力する。
【０２２１】
また、移動先である処理装置２の出力制御部は、処理結果が入力されると、マークが付与されたイベントを含むイベントセットのみを出力する。すなわち、図３５の状態（出力制御開始状態）である。図３５では、移動元である処理装置の出力制御部は、まだマークが付与されたイベントを含むイベントセットが入力されていないため、入力されたイベントセットをそのまま出力している。
【０２２２】
移動先である処理装置の出力制御部は、宛先ルール「to アプリケーション１」が配置されているが、まだ複合イベント処理が実行されていないため入力が無い。
【０２２３】
次に、制御装置１１０は、並列実行を開始するために、移動対象となった分析ルールを元に、このルールと同じ複合イベント処理を実行し処理結果を移動先である処理装置２の出力制御部に出力する分析ルールを生成し、移動先である処理装置２に、生成した分析ルールを配置する（ステップ３−３）。
【０２２４】
その結果、移動先である処理装置２も移動元である処理装置１と同じ複合イベント処理を実行し、処理結果を移動先である処理装置２の出力制御部に出力する。すなわち、図３６の状態（並列実行開始状態）である。
【０２２５】
図３６では、移動先である処理装置２は、分析ルール「A→B in 10秒 to 処理装置２の出力制御部」を配置され、複合イベント処理を実行し、処理結果を移動先である処理装置２の出力制御部に出力する。ただし、この時点では、移動先である処理装置２のステートが無いので、イベントBではルールがマッチせず、処理結果は出力しない状況である。
【０２２６】
なお、移動元である処理装置１は、複合イベント処理の処理結果を、通常通りアプリケーション１に出力している。すなわち、複合イベント処理システム全体で移動元である処理装置１の処理結果のみを出力している。
【０２２７】
次に、制御装置１１０は、移動元である処理装置１と移動先である処理装置２でステートを同期させるため、一定時間待機する（ステップ３−４）。待機時間は移動対象となった分析ルールの有効時間以上である。その結果、並列実行開始時に２つの処理装置間でステートが異なっていても、それらのステートは破棄され、同じイベントが分配されるため同じステートが保持されるようになり、実行される複合イベント処理やその処理結果も同じになる。すなわち、図３７の状態（ステート同期状態）である。
【０２２８】
図３７では、移動元である処理装置１のステートと移動先である処理装置２のステートが、ともに「A4→」と示されるように、同期している。
【０２２９】
また、移動先である処理装置２は、複合イベント処理の処理結果として、イベントセット{A9,B10}を生成しているが、移動先である処理装置２の出力制御部がマークが付与されたイベントを含まないイベントセットを破棄するので、実際には出力されず、図３７では、点線で表記されている。
【０２３０】
以降のステップの図では、点線で表記されたイベントセットは、出力制御部によって破棄され出力されないイベントセットを表す。
【０２３１】
次に、制御装置１１０は、マーク付与を開始するために、分配装置１２０のマーク付与部１２３にマーク付与の開始を指示する（ステップ３−５）。マーク付与の開始を指示された分配装置１２０のマーク付与部１２３は、イベントに固有のマークを付与し、出力する。その結果、複合イベント処理の結果であるイベントセットに含まれるイベントにもマークが付与され、識別可能となる。
【０２３２】
そして、移動元である処理装置の出力制御部は、マークが付与されたイベントを含むイベントセットは破棄するので、以降、処理結果を出力しなくなる。
【０２３３】
また、移動先である処理装置の出力制御部は、マークの付与されたイベントを含むイベントセットのみを出力するので、以降、処理結果を出力する。つまり、マークの付与されたイベントを含むイベントセットを起点に、処理結果を出力する処理装置が、移動元である処理装置１から移動先である処理装置２に、重複や欠落なく切り替わる。すなわち、図３８の状態（マーク付与開始、出力切り替え状態）である。
【０２３４】
図３８では、マーク付与部がイベントB12にマークを付与している。マークは、イベントの識別子に下線を付記して表現される。移動元である処理装置１は、処理結果を出力しないので、イベントセット{A11,B12}は、点線で表記されている。移動先である処理装置２は、処理結果を出力するので、イベントセット{A11,B12}は実線で表記されている。
【０２３５】
次に、制御装置１１０は、分配制御を終了するために、分配装置１２０から分配ルールを削除する（ステップ３−６）。削除する分配ルールは、移動対象となった分析ルールが必要とするイベントを移動元である処理装置に分配する分配ルールである。その結果、移動対象となった分析ルールが必要とするイベントに関しては、移動元である処理装置１に分配されなくなる。すなわち、図３９の状態（分配制御終了状態）である。
【０２３６】
図３９では、分配装置１２０は、分配ルール「A to 処理装置１」、「B to 処理装置１」を削除され、イベントA、Bを移動先である処理装置２にのみ分配している。
【０２３７】
なお、分配が行われなくなっても、分配装置１２０と処理装置間の通信遅延などにより、タイミングによっては、イベントが移動元である処理装置１に入力され、処理装置１は、複合イベント処理を実行して処理結果を生成する場合がある。しかしながら、生成された処理結果は、マークの付与されたイベントを含むイベントセットであるので、出力されない。
【０２３８】
次に、制御装置１１０は、移動元である処理装置１でステートが消滅するまで一定時間待機する（ステップ３−７）。待機時間は移動対象となった分析ルールの有効時間以上である。その結果、移動元である処理装置１でステートは消滅する。すなわち、図４０の状態（移動先ステート消失状態）である。
【０２３９】
図４０では、移動元である処理装置１の移動対象となった分析ルールのステートが消滅している。
【０２４０】
なお、待機中でも、分配装置１２０と処理装置間の通信遅延などによりタイミングによっては、イベントが移動元である処理装置１に入力され、処理装置１は、複合イベント処理を実行して処理結果を生成する場合がある。しかしながら、生成された処理結果は、マークの付与されたイベントを含むイベントセットであるので、出力されない。
【０２４１】
次に、制御装置１１０は、並列実行を終了するために、移動元である処理装置１から移動対象となった分析ルールを削除する。また、制御装置１１０は、移動元である処理装置１の出力制御部から宛先ルールを削除する（ステップ３−８）。
【０２４２】
その結果、移動元である処理装置１から移動対象となった分析ルールは削除され、複合イベント処理は停止されるが、移動先である処理装置２で同等の複合イベント処理が継続される。すなわち、図４１の状態（並列実行終了状態）である。
【０２４３】
図４１では、移動元である処理装置１は、分析ルールが削除され、複合イベント処理を停止している。
【０２４４】
次に、制御装置１１０は、出力制御を終了するために、移動元である処理装置の出力制御部と移動先である処理装置の出力制御部に、マークによるイベントセットの出力制御を終了するように指示する。
【０２４５】
その結果、各出力制御部は、入力されたイベントセットを無条件に宛先ルールで指定された出力先に出力するようになる。すなわち、図４２の状態（出力制御終了状態）である。図４２では、どちらの出力制御部も出力制御を行っていない。
【０２４６】
次に、制御装置１１０は、マーク付与を終了するために、分配装置１２０のマーク付与部１２３にマーク付与の終了を指示する（ステップ３−１０）。その結果、マーク付与部１２３はイベントへのマーク付与を終了する。移動先である処理装置２の出力制御部は、出力制御を終了しているため、マークが付与されていなくても、処理結果を出力する。すなわち、図４３の状態（マーク付与終了状態）である。
【０２４７】
図４３では、分配装置１２０が分配したイベントB22にマークが付与されておらず、また、移動先である処理装置２はマークが付与されていないイベントB22を含むイベントセット{A21,B22}を出力している。
【０２４８】
以上ように動作することで分析ルールの移動は完了する。
【０２４９】
以上のように、本第３の実施形態によれば、第１の実施の形態で得られる効果に加え、イベントやイベントセットの転送および重複イベントセットの削除といった処理を行う必要がなく、通信量や処理量を削減できる。その理由は、イベントにマークを付与することで、どのイベントまで複合イベント処理が実行されたかを認識し、処理結果の出力を重複や欠落がないように切り替えるからである。
【０２５０】
第４の実施形態
次に、本発明の第４の発明を実施するための最良の形態について図面を参照して詳細に説明する。
［構成の説明］
図４４は、本発明の第４の実施の形態に係る複合イベント処理システム４００の構成を示すブロック図である。複合イベント処理システム４００は、制御装置１１０、分配装置１５０、ID／マーク付与装置１４０、複数の処理装置１６０、複数の出力制御装置１７０を備える。
【０２５１】
制御装置１１０は、上記第１の実施形態と同様である。
【０２５２】
分配装置１５０は、分配ルール１５１を備え、分配ルールに基づきイベントを適切な処理装置に分配する。
【０２５３】
ID/マーク付与装置１４０は、イベントに固有のID、もしくは特定のイベントと判別するためのマークを付与する装置であり、第１の実施の形態のID付与部１２２、第２の実施の形態のID付与部１２２、または第３の実施の形態のマーク付与部１２３と同様である。
【０２５４】
複数の処理装置１６０は、それぞれ分析ルールを備え、分析ルールに基づき複合イベント処理を実行する。
【０２５５】
複数の出力制御装置１７０は、複合イベント処理の処理結果の出力を制御する装置であり、第１の実施の形態の出力制御部１３２、第２の実施の形態の転送用出力制御部１３３および調整用出力制御部１３４、または第３の実施の形態の出力制御部１３２と同様である。
【０２５６】
本実施の形態に係る複合イベント処理システム４００は、ID/マーク付与装置１４０と、出力制御装置１７０が、分配装置１５０と処理装置１６０から独立している。その他の構成は、第１の実施の形態、第２の実施の形態、または第３の実施の形態と同様であるので、構成要素の詳細な説明、および動作の説明は省略する。
【０２５７】
以上のように、本第４の実施形態によれば、第１の実施の形態、第２の実施の形態、または第３の実施の形態で得られる効果に加え、既存の複合イベント処理システムを改造する必要がなく、アドオンする形で実現できる。その理由は、欠落や重複のない分析ルールの動的移動を実現するために既存の複合イベント処理システムに機能を追加する手段であるID/マーク付与装置１４０および出力制御装置１７０を、既存の複合イベント処理システムを構成する分配装置１５０および処理装置１７０から独立させたためである。
【０２５８】
なお、欠落や重複のない分析ルールの動的移動を実現するために、分配装置１５０に分配ルールの配置削除や処理装置１６０に分析ルールの配置削除は行う必要がある。しかしながら、これらの機能は既存の複合イベント処理システムが備えているので、やはり改造をおこなう必要はない。
【０２５９】
第５の実施形態
次に、本発明の第５の発明を実施するための最良の形態について図面を参照して詳細に説明する。
［構成の説明］
図４５は、本発明の第５の実施の形態に係る複合イベント処理システム５００の構成を示すブロック図である。複合イベント処理システム５００は、制御装置１１０、逐次化分配装置１８０、分配装置１９０、複数の処理装置１３０を備える。
【０２６０】
制御装置１１０は、逐次化分配装置１８０、分配装置１９０、および複数の処理装置１３０を制御する。制御装置１１０は、制御部１１１を備える。複数の分配装置１９０は、分配ルール１９１に基づきイベントを適切な処理装置に分配する。
【０２６１】
逐次化分配装置１８０は、複数の分配装置１９０からの分配イベントを逐次化して、分配ルールに基づき、イベントを、移動元である処理装置と移動先である処理装置に分配する。逐次化分配装置１８０は、分配ルール１８１と、イベントに固有のID、もしくは特定のイベントと判別するためのマークを付与するID/マーク付与部１８２を備える。
【０２６２】
複数の処理装置１３０は、分析ルールに基づき複合イベント処理を実行する。処理装置１３０は、分析ルール１３１と、複合イベント処理の処理結果の出力を制御する出力制御部１３２を備える。
【０２６３】
各構成要素の詳細について説明する。
【０２６４】
制御装置１１０は、分析ルール、分配ルール、宛先ルールの生成、配置、削除、および各部（手段）への動作指示を行う。
【０２６５】
具体的には、制御装置１１０は、分配制御前処理のために、イベントを複製分配する分配ルールを生成し、逐次化分配装置（ＳＤ）１８０に、生成した分配ルールを配置する。生成する分配ルールは、移動対象となった分析ルールにイベントを分配する分配ルールの分配対象と同じイベントを分配対象とし、分配先を移動元である処理装置、あるいは移動先である処理装置としたものである。
【０２６６】
例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」で、移動元である処理装置１に配置されていて、イベントを分配する分配ルールが「A to 処理装置1」、「B to 処理装置1」で、移動先である処理装置が処理装置２である場合、生成される分配ルールは、「A to 処理装置1」、「B to 処理装置1」、「A to 処理装置2」、「B to 処理装置2」である。上記分配ルールの生成、配置によって、逐次化分配装置１８０は、イベントA、Bを処理装置１と処理装置２に複製分配するようになる。
【０２６７】
また、制御装置１１０は、分配制御開始のために、イベントを逐次化分配装置１８０に分配する分配ルールを生成し、出力として各分配装置から元々分配している分配ルールを削除し、生成した分配ルールを配置する。生成する分配ルールは、移動対象となった分析ルールにイベントを分配する分配ルールの分配対象と同じイベントを分配対象とし、分配先を逐次化分配装置１８０としたものである。削除する分配ルールは、移動対象となった分析ルールにイベントを分配している分配ルールである。
【０２６８】
例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」で、移動元である処理装置１に配置されていて、移動対象となった分析ルールにイベントを分配する分配ルールが「A to 処理装置1」、「B to 処理装置1」で、各分配装置に配置されていて、移動先である処理装置が処理装置２である場合、生成される分配ルールは、「A to 逐次化分配装置」、「B to 逐次化分配装置」、削除される分配ルールは、「A to 処理装置1」、「B to 処理装置1」である。上記分配ルールの生成、配置によって、各分配装置１９０は、イベントA、Bを処理装置１ではなく逐次化分配装置１８０に分配するようになる。
【０２６９】
また、制御装置１１０は、分配制御後処理のために、出力として逐次化分配装置１８０から分配ルールを削除する。
【０２７０】
また、制御装置１１０は、分配制御後処理のために、移動した分析ルールにイベントを分配する分配ルールを生成し、各分配装置から逐次化分配装置１８０にイベントを分配する分配ルールを削除し、生成した分配ルールを配置する。
【０２７１】
例えば、移動対象となった分析ルールが「A→B in 10秒 to アプリケーション１」で、移動先である処理装置２に配置されていて、各分配装置には分配ルール「A to 逐次化分配装置」、「B to 逐次化分配装置」が配置されていた場合、生成される分配ルールは、「A to 処理装置2」、「B to 処理装置2」、削除される分配ルールは、「A to 逐次化分配装置」、「B to 逐次化分配装置」である。上記分配ルールの生成、配置によって、各分配装置は、イベントA、Bを逐次化分配装置１８０ではなく処理装置２に分配するようになる。
【０２７２】
上記以外の制御装置１１０の機能は、第２の実施の形態の制御装置１１０、または第３の実施の制御装置１１０と同様であるため、説明を省略する。
【０２７３】
分配装置１９０は、例えば特許文献１記載の複合イベント処理装置の分配装置と同様のため、説明は省略する。
【０２７４】
逐次化分配装置１８０は、第２の実施の形態の分配装置１２０、または第３の実施の形態の分配装置１２０と同様であるため、説明を省略する。
【０２７５】
処理装置１３０は、第２の実施の形態の処理装置１３０、または第３の実施の形態の処理装置１３０と同様であるため、説明を省略する。
【０２７６】
ID/マーク付与部１８２は、第２の実施の形態のID付与部１２２、または第３の実施の形態のマーク付与部１２３と同様であるため、説明を省略する。
【０２７７】
出力制御部１３２は、第２の実施の形態の転送用出力制御部１３３および調整用出力制御部１３４、または第３の実施の形態の出力制御部１３２と同様であるため、説明を省略する。
［動作の説明］
次に、図４５および図４６を参照して、第５の実施の形態の動作について説明する。図４６は、第５の実施の形態に係る複合イベント処理システムの動作を示すシーケンス図である。
【０２７８】
まず、初期状態として、分析ルールが制御装置１１０に入力され、制御装置１１０は、出力先を変更した分析ルールを生成し適当な処理装置に配置する。また、制御装置１１０は、宛先ルールを生成し分析ルールを配置した処理装置の出力制御部に配置する。また、制御装置１１０は、分配ルールを生成し各分配装置に配置する。分配装置は、イベントを分配し、分析ルールを配置された処理装置が、複合イベント処理を実行している。すなわち、図４７の状態である。
【０２７９】
図４７では、制御装置１１０に分析ルールとして「A→B in 10秒 to アプリケーション１」が入力され、各分配装置１９０は、分配ルールとして「A to 処理装置1」、「B to 処理装置1」が配置され、イベントA、Bを処理装置１に分配する。処理装置１は、出力先を変更した分析ルールとして「A→B in 10秒 to 処理装置１の出力制御部」が配置され、複合イベント処理を実行し、処理結果を出力制御部に出力する。出力制御部は、宛先ルールとして「to アプリケーション１」が配置され、処理結果をアプリケーション１に出力している。処理装置２および逐次化分散装置１８０は、何も処理を行っていない。
【０２８０】
これは、分配装置１９０が複数ある以外は、第２の実施の形態における初期状態、あるいは第３の実施の形態における初期状態と同等である。
【０２８１】
ここで、分析ルール「A→B in 10秒 to アプリケーション１」を移動対象とし、移動元である処理装置１から移動先である処理装置２に移動するとする。なお、実際には分析ルール「A→B in 10秒 to アプリケーション１」は、分析ルール「A→B in 10秒 to 処理装置１の転送用出力制御部」と宛先ルール「to アプリケーション１」に分解されているため、この２つのルールの移動を行うとする。
【０２８２】
次に、制御装置１１０は、分配制御前処理のために、イベントを複製分配する分配ルールを生成し、逐次化分配装置１８０に生成した分配ルールを配置する（ステップ５−１）。
【０２８３】
その結果、逐次化分配装置１８０は、イベントA、Bを移動元である処理装置１と移動先である処理装置２に複製分配するようになる。すなわち、図４８の状態（分配制御前処理状態）である。
【０２８４】
図４８では、逐次化分配装置１８０は、分配ルールとして「A to 処理装置１」、「B to 処理装置１」、「A to 処理装置２」、「B to 処理装置２」が配置され、イベントA、Bを、移動元である処理装置１と移動先である処理装置２に分配するようになっている。ただし、この時点では、逐次化分配装置１８０にイベントが分配されないため、分配は行われない。
【０２８５】
次に、制御装置１１０は、分配制御を開始するために、イベントを逐次化分配装置１８０に分配する分配ルールを生成し、各分配装置から元々分配している分配ルールを削除し、生成した分配ルールを配置する。その結果、各分配装置は、イベントA、Bを処理装置１でなく逐次化分配装置１８０に分配するようになる。すなわち、図４９の状態（分配制御開始状態）である。
【０２８６】
図４９では、各分配装置は、分配ルール「A to 処理装置１」、「B to 処理装置１」が削除され、かわりに分配ルール「A to 逐次化分配装置（ＳＤ）」、「B to 逐次化分配装置（ＳＤ）」が配置され、イベントA、Bを処理装置１ではなく逐次化分配装置１８０に分配している。
【０２８７】
逐次化分配装置１８０は、分配されたイベントA,Bをさらに移動元である処理装置１と移動先である処理装置２に分配している。逐次化分配装置１８０を経由するので、処理装置１と処理装置２に入力されるイベントの順序は保証される。これを、「逐次化」と呼ぶ。
【０２８８】
次に、制御装置１１０は、ルールの移動処理のために、第２の実施の形態のステップ２−３〜ステップ２−１１、あるいは第３の実施の形態のステップ３−２〜ステップ３−１０を、逐次化分配装置１８０を１つの分配装置とみたてて実行する（ステップ５−３）。その結果、処理装置１の分析ルールと宛先ルールは処理装置２に移動する。
【０２８９】
移動処理が完了した時点で、図５０の状態（移動完了状態）となる。図５０では、各分配装置は、分配ルール「A to 逐次化分配装置」、「B to 逐次化分配装置」が配置され、イベントA、Bを処理装置１ではなく逐次化分配装置１８０に分配する。逐次化分配装置１８０は、分配されたイベントA,Bをさらに移動先である処理装置２に分配する。処理装置２は、移動した分析ルールに基づき複合イベント処理を実行し、処理結果を宛先ルールに従いアプリケーション１に出力している。処理装置１は、複合イベント処理を実行せず処理結果を出力していない。
【０２９０】
次に、制御装置１１０は、分配制御後処理のために、移動した分析ルールにイベントを分配する分配ルールを生成し、各分配装置から逐次化分配装置１８０にイベントを分配する分配ルールを削除し、生成した分配ルールを配置する。その結果、各分配装置はイベントA、Bを逐次化分配装置１８０ではなく移動先である処理装置２に分配するようになる。すなわち、図５１の状態（分配制御後処理状態）である。
【０２９１】
図５１では、各分配装置は、分配ルールとして「A to 処理装置２」、「B to 処理装置２」が配置され、イベントA、Bを処理装置２に分配する。処理装置２は、分析ルール「A→B in 10秒 to 処理装置１の出力制御部」が配置され、複合イベント処理を実行し、処理結果を出力制御部に出力する。処理装置２の出力制御部は、宛先ルールとして「to アプリケーション１」が配置され、処理結果をアプリケーション１に出力している。
【０２９２】
以上ように動作することで分析ルールの移動は完了する。
【０２９３】
以上のように、本第５の実施形態によれば、第２の実施の形態、もしくは第３の実施の形態で得られる効果に加え、分配装置を複数並列実行させ負荷分散させることで、より大規模のイベントを処理できるという効果が得られる。その理由は、複数の分配装置が分配する移動対象となった分析ルールが必要とするイベントを逐次化分配装置１８０を経由して複製分配することで逐次化し、移動元である処理装置と移動先である処理装置への入力順序を保証するからである。
【０２９４】
逐次化分配装置１８０を経由しない場合、各分配装置でイベントを複製分配すると、移動元である処理装置と移動先である処理装置への入力順序が入れ替わる場合がある。例えば、分配装置１がイベントAを処理装置１と処理装置２に分配し、分配装置２がイベントBを処理装置１と処理装置２に分配したとする。この場合、処理装置１に分配されるイベントAは、分配装置１と処理装置１とを接続するコネクションで、処理装置２に分配されるイベントAは、分配装置１と処理装置２とを接続するコネクションで、処理装置１に分配されるイベントBは、分配装置２と処理装置１とを接続するコネクションで、処理装置２に分配されるイベントAは、分配装置２と処理装置２とを接続するコネクションで、それぞれ独立して送信される。
【０２９５】
そのため、通信遅延によっては処理装置１にはA、Bの順で、処理装置２にはB、Aの順でイベントが入力される可能性がある。イベントの入力順序が異なると複合イベント処理の処理結果も異なるため、処理結果を比較したり判定したりする第２の実施の形態、もしくは第３の実施の形態は期待通りに動作しない。
【０２９６】
一方、逐次化分配装置１８０を経由して複製分配する場合、処理装置１に分配されるイベントはAもBも逐次化分配装置１８０と処理装置１とを接続するコネクションで、処理装置２に分配されるイベントはAもBも逐次化分配装置１８０と処理装置２とを接続するコネクションで、それぞれ独立して送信される。各コネクションにおいて送信順序が入れ替わることはないため、逐次化分配装置１８０が分配された順に同じ順序でイベントをコネクションで送信すれば、処理装置１と処理装置２へのイベントの入力順序は保証される。イベントの入力順序が同じなら複合イベント処理の処理結果も同じになるため、第２の実施の形態、もしくは第３の実施の形態で複数の分配装置があっても期待通りに動作する。
【０２９７】
なお、第１の実施の形態は、入力イベントと処理結果を比較するため、イベントの入力順序が異なっても問題ない。
【０２９８】
第６の実施形態
図５２は、本発明の第６の実施の形態に係る複合イベント処理システム６００の構成を示すブロック図である。複合イベント処理システム６００は、分配装置６１０、制御装置６２０、複数の処理装置６３０を備える。
【０２９９】
分配装置６２０は、分配ルールにしたがってイベントを分配する。処理装置６３０は、分配装置６２０から供給されたイベントを分析ルールに従って複合イベント処理するとともに処理結果を出力する。制御装置６２０は、分配装置６１０と複数の処理装置６３０とを制御する。
【０３００】
制御装置６２０は、分配装置６１０が、移動対象の分析ルールが配置される移動元の処理装置６３０と、当該分析ルールの移動先の処理装置６３０とに、分析ルールが必要とするイベントを分配するように制御し、移動対象の分析ルールを複製して移動先の処理装置６３０に配置し、移動元の処理装置６３０と、移動先の処理装置６３０とで、ステートが同期したら、分配装置６１０が、移動元の処理装置６３０へのイベントの分配を停止するように制御すると共に、移動元の処理装置６３０に配置される移動対象の分配ルールを削除する制御部６２１を備える。
【０３０１】
上記構成を採用することにより、本第６の実施形態によれば、複合イベント処理システム６００は、分析ルールの動的な移動を実現することができるという効果が得られる。
【０３０２】
以上、本発明を実施するための最良の形態について説明したが、本発明は以上の実施の形態に限定されず、その他各種の付加変更が可能である。また、各発明を実施するための最良の形態を組み合わせた形態も可能である。
【０３０３】
なお、各図に示した制御装置は、図５３に例示するハードウエア資源において実現されてもよい。すなわち、各図に示した制御装置における各機能ブロックは、図５３に示すメモリ１１に記憶されたコンピュータ・プログラムおよび各種データをメモリ１１において実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５によって構成される。なお、制御装置およびその各機能ブロックのハードウエア構成は、上述の構成に限定されない。
【０３０４】
また、各実施形態を例に説明した本発明は、制御装置に対して、上記説明した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、ＣＰＵ１５が実行することによって達成される。
【０３０５】
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【産業上の利用可能性】
【０３０６】
本発は、例えば、イベント量が多く、その変動が大きい領域において、変動に応じた処理能力によって適切なサービスを継続し続けるCPSといった用途に適用できる。
【符号の説明】
【０３０７】
１１  メモリ
１２  ＲＯＭ
１３  外部接続インタフェース
１４  記録媒体
１５  ＣＰＵ
１００、２００、３００、４００、５００  複合イベント処理システム
１１０  制御装置
１１１  制御部
１２０、１５０、１９０  分配装置
１２１、１８１、１９１  分配ルール
１２２  ID付与部
１３０、１６０  処理装置
１３１  分析ルール
１３２  出力制御部
１３３  転送用出力制御部
１３４  調整用出力制御部
１３５  宛先ルール
１４０、１８２  ID／マーク付与装置
１７０  出力制御装置
１８０  逐次化分配装置
【図１】
2016042286.tif 000003
【図２】
2016042286.tif 000004
【図３】
2016042286.tif 000005
【図４】
2016042286.tif 000006
【図５】
2016042286.tif 000007
【図６】
2016042286.tif 000008
【図７】
2016042286.tif 000009
【図８】
2016042286.tif 000010
【図９】
2016042286.tif 000011
【図１０】
2016042286.tif 000012
【図１１】
2016042286.tif 000013
【図１２】
2016042286.tif 000014
【図１３】
2016042286.tif 000015
【図１４】
2016042286.tif 000016
【図１５】
2016042286.tif 000017
【図１６】
2016042286.tif 000018
【図１７】
2016042286.tif 000019
【図１８】
2016042286.tif 000020
【図１９】
2016042286.tif 000021
【図２０】
2016042286.tif 000022
【図２１】
2016042286.tif 000023
【図２２】
2016042286.tif 000024
【図２３】
2016042286.tif 000025
【図２４】
2016042286.tif 000026
【図２５】
2016042286.tif 000027
【図２６】
2016042286.tif 000028
【図２７】
2016042286.tif 000029
【図２８】
2016042286.tif 000030
【図２９】
2016042286.tif 000031
【図３０】
2016042286.tif 000032
【図３１】
2016042286.tif 000033
【図３２】
2016042286.tif 000034
【図３３】
2016042286.tif 000035
【図３４】
2016042286.tif 000036
【図３５】
2016042286.tif 000037
【図３６】
2016042286.tif 000038
【図３７】
2016042286.tif 000039
【図３８】
2016042286.tif 000040
【図３９】
2016042286.tif 000041
【図４０】
2016042286.tif 000042
【図４１】
2016042286.tif 000043
【図４２】
2016042286.tif 000044
【図４３】
2016042286.tif 000045
【図４４】
2016042286.tif 000046
【図４５】
2016042286.tif 000047
【図４６】
2016042286.tif 000048
【図４７】
2016042286.tif 000049
【図４８】
2016042286.tif 000050
【図４９】
2016042286.tif 000051
【図５０】
2016042286.tif 000052
【図５１】
2016042286.tif 000053
【図５２】
2016042286.tif 000054
【図５３】
2016042286.tif 000055
【図５４】
2016042286.tif 000056
【図５５】
2016042286.tif 000057