複合イベント処理

**イベント処理**は、発生した事象(イベント)に関する情報(データ)のストリームを追跡して分析（処理）し、何らかの結論を得る手法である。 **複合イベント処理**(CEP)は、複数のソースからのデータを組み合わせ、より複雑な状況を示唆するイベントやパターンを推論するイベント処理である。複合イベント処理のゴールは、意味のあるイベント（例えば何らかの機会または脅威）を明らかにして、 できるだけ速やかに対処することである。

これらのイベントは営業の引き合いや受注、お客様からの問い合わせ電話など、組織のさまざまな層で発生している。また、それらはニュース記事 やテキストメッセージ、SNSへの投稿、株式市況、交通情報、天気予報やその他の種類のデータかもしれない。 イベントは測定値が時刻や温度その他の、あらかじめ定義されていたしきい値を超えた「状態の変化」として定義されることもある。CEPは組織にリアルタイムでパターンを分析する新たな手法を与え、ビジネスサイドがITとサービス部門とのより良いコュミニケーションを実現するとアナリストは提唱している。

イベントとして利用可能な膨大な情報はイベントクラウドという名称で参照されることがある。

## 概念
入力される数千ものイベントの中で、例えば監視システムは次のような三つの情報を同じソースから受け取るかもしれない。
# 教会の鐘が鳴っている。
# タキシードを着た男性と流れるような白いドレスを身にまとった女性が現れる。
# 米粒が空に撒かれる。

これらのイベントから、監視システムは「結婚式」とい複合イベントを推論する。鐘、結婚式の盛装をした男女、空に撒かれる米粒などにCEPの技法を適用し、分析したりほかのイベントとの相関をとることで、複合イベントの発見を手助けする。

CEPは次のような技術に依存している。
* イベントのパターン検知
* イベント抽出
* イベントフィルタリング
* イベントの集約と変換
* イベント階層のモデル化
* イベント間の関連の検知（例えば因果関係、メンバーシップ、タイミングなど）
* イベント駆動処理の抽象化

CEPの商用アプリケーションは、株式のアルゴリズム取引、 クレジットカード不正使用検知、ビジネスアクティビティモニタリング、セキュリティモニタリングなど幅広い業界で使われている。

## 歴史
CEPは離散イベントシミュレーションや、アクティブデータベースとその他のプログラミング言語をルーツに持つ。この業界での活動に先立って1990年代に一連の研究プロジェクトがあった。資料 によると、一般的なCEP言語と実行モデルに道を開いた最初のプロジェクトはスタンフォード大学のRapideプロジェクトである。並行して次の三つの研究プロジェクトがあった。それらはK. Mani Cahandyが率いたカリフォルニア工科大学のInfosphere、John Batesが率いたケンブリッジ大学のApama、Opher Etzionが率いたIBMハイファ研究所のAmitである。商用製品はこれらのプロジェクトとその後の研究プロジェクトからの概念に依存している。Event Processing Technial Societyによって組織されたイベント処理シンポジウムが開催され、これは後にACM DEBSカンファレンスとなった。組織活動からの結果の一つとしてエベント処理宣言がある。

## 関連概念
CEPはオペレーショナルインテリジェンス(OI)ソリューションで使用され、ライブな入力データやイベントデータに対するクエリを実行し、ビジネスオペレーションへの知見を提供する。OIソリューションはリアルタイムデータを収集し、ヒストリカルデータと相関をとることで、現在の状況に対する知見や分析を提供する。異なる組織サイロからの複数のソースからのデータは集約され、現在の情報を使用した共通のオペレーティングピクチャを提供する。リアルタイムの知識が重要な場面では、OIソリューションが必要な情報を引き出すために使用される。

ネットワーク管理、システム管理、アプリケーション管理、サービス管理では、イベントの相関関連を参照する。CEPエンジンではイベント相関エンジン(イベントコリレーター)が大量のイベントを分析し、最も重要なものを特定し、アクションのトリガーを起こす。しかし、それらからは推測された新たなイベントが発生することはほとんどない。その代り、低レベルのイベントと高レベルのイベントとの関連付けを行う。

ルールベースの推論エンジンでは、人工知能から推測された情報を生成する。しかし、それらは一般に複合(推測された)イベントの形では情報生成しない。

## 例
CEPのよりシステム的な例として、いくつかのセンサーや各種のイベントとリアクターからなる自動車がある。タイヤの空気圧センサー、速度センサー、シートに人が座っているかどうかを検知するセンサーを想像してみてほしい。

最初の状況では、自動車は走行中であり15分の間にタイヤの空気圧が45PSIから41PSIに落ちたとする。タイヤの空気圧が下がるとタイヤ空気圧に関するいくつかのイベントが生成される。自動車のイベントプロセッサーは、比較的長い時間にタイヤ空気圧が失われた状況を検知し、"LossOfTirePressure"イベントを生成する。この新たなイベントは自動車のメンテナンスログに空気圧の喪失を記録するプロセスを発生させ、ダッシュボードを通じて運転者にタイヤの空気圧が失われたことを通知する。

2番目の状況では自動車は走行中でありタイヤの空気圧が5秒間の間に45PSIから20PSIに落ちる。短期間にタイヤの空気圧が失われたか、それぞれのイベントの値が定義されてあった制限よりも大きな値なので、異なるシチュエーションが検知される。異なるシチュエーションは"blowOutTire"というあらたなイベントを生成する。この新たなイベントは異なる反応プロセスを起こし、運転者に即時の警告を発し、スリップして自動車の制御を失わずに停車するよう運転手をアシストする車載コンピューターのルーチンを開始する。

さらに、検知された状況を表すイベントは、さらに複雑な状況を検知するために、他にベントと組み合わされる。例えば、上記自動車の例での最後の状況では、自動車は通常走行中にタイヤがパンクして、道路から外れて木に激突して運転手が車から放り出されてしまう。一連の異なる状況が素早く検知される。"blownOutTire"と"zeroSpeed"、"driverLeftSeat"が非常に短い時間に発生したならば、"occupantThrownAccident"という新たなイベントが検知されることになる。運転手が車外に放り出されたとか、事故が発生したということを結論づける直接的な検知はされていなくても、イベントの組み合わせによりその状況が検知されたことと、その状況を重要づける新たなイベントが作成される。これは複合(混合)イベントの基礎である。直接的に状況を検知することはなく、他のイベントとの組み合わせでその状況の発生を推論したり演繹しなければならないので、複雑である。

## 種類
多くのCEPソリューションと概念は次の二つのカテゴリーに分類することができる。
# 集計指向のCEP
# 検知指向のCEP

集計指向のCEPはシステムに入力されるイベントデータへの反応として、オンラインのアルゴリズムを実行することに焦点を当てている。入ってくるイベントにあるデータの平均を計算し続けるというのが簡単な例である。

検知指向のCEPではイベントパターンや状況と呼ばれるイベントの組み合わせを検知することに焦点を当てている。イベントが特定の順番で並んでいる状況を検知するというのが簡単な例である。

両方が交じり合ったアプローチもある。

## ビジネスプロセス管理との統合
CEPと自然に適合するのはビジネスプロセス管理またはBPMである。 BPMは業務環境を継続的に最適化と適合化を行うために、エントツーエンドのビジネスプロセスに焦点を当てている。

しかし、ビジネスの最適化はエンドツーエンドの個々のプロセスにだけ依存しているわけではない。一見離れているプロセスも重要な影響を及ぼすことがある。以下のシナリオを考えてみよ：宇宙航空業界ではトレンドを知る（製造プロセスや材料その他の潜在的な弱みを特定する）ために、乗り物の故障を監視することは賢明な方法である。もう一つのプロセス監視では乗り物のライフサイクルをモニタし、適切な時期に退役させている。この場面でのCEPの利用は、二つのプロセスをリンクし、初期プロセス（故障監視）が発生した時に、材料披露による故障を発見（重大なイベント）し、2番めのプロセス（ライフサイクル）を利用して、初期プロセスで故障を見つけたものと同じ材料を使用したバッチの乗り物のリコールを発行する。

CEPとBPMの統合には二つのレベルがあり、ビジネス認識レベル（ユーザーは個々のプロセスの利点を全体的な観点で理解しなければならない）と技術レベル（どのCEPがBPMの実装とやりとりをするかという要求）である。最先端のCEPとBPMのレビューではイベント駆動型ビジネスプロセス管理と呼ばれている。

計算機能中心のCEPの役割は、ビジネスルール技術との重なりが指摘されている。

例えば、顧客サービスセンターではクリックストリーム分析と顧客のエクスペリエンス管理にCEPを使用している。CEPソフトウェアは1秒当たり数百万のイベント（Webサイトのクリックやその他のイベント）を実データとしてBIツールやその他の意思決定システムに送っている。これらの「推奨アプリケーション」は個々の顧客のエクスペリエンスに応じた、パーソナライズしたサービスを提供する役に立っている。CEPアプリケーションは電話中の顧客の動作に関する情報や、支店やWebでのセルフサービス機能、SNSや電子メールその他のチャネルで顧客が企業とどのようなやりとりをしたかの情報を収集する。アプリケーションは顧客のすべてのエクスペリエンスを分析して推奨を行ったり電話対応しているエージェントに次の対応を指示し、顧客の満足度を高めるようにする。

CEPが使われるもう一つの例は医療分野である。Morcester Poytechnic InstituteとUMass Medical Schoolにより開発されたHyReminderシステムは医療従事者の衛生環境の順守（手の殺菌やマスクの着用など）について継続的に追跡し、疫病の拡散を防止するために予防衛生の実施を行うように指摘する。医療従事者はRFIDバッジを着用し、バッジにはRFIDバッジの検知によりグリーン（安全）、黄色（警告）、赤（違反）などが
表示される。

最新のソリューションの一つにはクラウドOSであるCorezoid.comがある。これはオブジェクトの状態を記述しそれらの状態の変化を監視することでビジネスプロセス管理に最適化されている。

## 金融業
金融サービス業界は、CEP技術のアーリーアダプターであり、複合イベント処理を使用して利用可能なデータを構成し明確なものにし、トレーダー（または取引プログラム）が売り買いを判定できるような機会や脅威を取引、特にアルゴリズム取引に使用できるようにした。 例えば、トレーダーが5ポイント上昇しその後4ポイント下落した株式を追跡したいとするならば、CEP技術によりそのようなイベントの追跡が可能になる。CEP技術はまたいくつもの取引での目立った上昇や下落を追跡することができる。株式市場でアルゴリズム取引は既に現実のものとなっている。米国での株式取引のうち60%がアルゴリズム取引によるものだとも言われている。CEPはアルゴリズムを改善しより効果的なものにすることで金融業界に貢献し続けることが期待されている。

CEP技術の近年の改善でより手軽なものになっており、小規模な組織でも大規模な組織に競合できる取引アルゴリズムの作成を可能にしている。CEPは黎明期の技術から多くの資本市場における基本的なプラットホームに成長した。この技術が一貫して成長してきた分野は銀行、不正利用検知、オンラインバンキング、マルチチャネルマーケティングの分野である。

今日では多くの金融アプリケーションがCEPを使用している。それらは利益、損益、リスクマネジメントシステム、発注および流動性分析、定量的取引、信号発生システム、その他である。

## 時系列データベースとの統合
時系列データベースは時系列で構成されたデータを取り扱うように最適化されたソフトウェアシステムである。時系列は有限または無限の連続したデータ項目であり、それぞれの項目には関連したタイムスタンプが付随し、そのタイムスタンプは減少することがない。時系列の要素はテックとも呼ばれることがある。タイムスタンプは昇順（単純に減少しないだけ）である必要はなく、金融システムなどで時間間隔が非常に短い（ミリ秒、マイクロ秒、時にはナノ秒）場合には、連続したイベントが同じタイムスタンプになる。

時系列データは、複合イベント処理に関連した分析で使用する履歴コンテキストを提供する。これは金融業 などの業界に適用でき、BPMなどの他の技術と共用される。
金融業で過去の価格変動を理解し、将来の価格動向の統計的しきい値を決定するシナリオを考えてみる。これは取引モデルと取引コスト分析に有用である。

理想的なCEP分析は、時系列の履歴とリアルタイムのストリーミングデータを単一の連続したものとして見ることである。昨日、先週、先月起きたことは今日起きていることとこれから起きることの単純な拡張である。例としては、現在の市場規模と過去の規模との比較、取引実行ロジックでの価格と変動との比較などがある。現在の市場価格への対応への要求は、セクターと日内と過去のトレンドゲージの変動とスムース異常値によるインデックスの動向を含むベンチマークとの比較を必要とする。

## 関連項目
* Event correlation
* Event-driven architecture — (EDA)  is a software architecture pattern promoting the production, detection, consumption of, and reaction to events.
* SEDA - Staged event-driven architecture decomposes complex, event-driven architectures into stages
* :en:Event Processing Technical Society — (EPTS) is an event processing community of interest
* Event stream processing — (ESP) is a related technology that focuses on processing streams of related data.
* Kinetic Rule Language — (KRL) is an event-condition-action rule language with an embedded complex event expression language.
* Operational intelligence — Both CEP and ESP are technologies that underpin operational intelligence.
* Pattern matching
* Real-time business intelligence — Business Intelligence is the application of knowledge derived from CEP systems
* Real-time business intelligence — CEP systems are typically real-time systems
* Real time enterprise

### 主なベンダーと製品
* *Apama* by Software AG - A Complex Event Processing Platform that monitors rapidly moving event streams, detects and analyzes important patterns, and takes action according to rules.
* Axibase Time Series Database (ATSD) Rule Engine - CEP engine optimized for streaming time-series data with support for count- and time-based windows and in-memory statistical calculations.
* Drools Fusion
* Esper Complex event processing for Java and C#.
* *EVAM Event and Action Manager* Real Time Streaming Application Platform provides a business oriented development environment
* GigaSpaces XAP
* *Informatica RulePoint* - High performant, scalable solution by Informatica
* Microsoft StreamInsight|Microsoft|Microsoft StreamInsight Microsoft CEP Engine implementation 
* openPDC — A set of applications for processing streaming time-series data in real-time.
* Oracle Event Processing|Oracle SOA Suite|Oracle Event Processing - A solution for building applications to filter, correlate, and process events in real time.
* SAP ESP - A low-latency, rapid development and deployment platform that allows processing multiple streams of data in real time 
* SQLstream SQLstream’s stream processing platform, s-Server, provides a relational stream computing platform for analyzing large volumes of service, sensor and machine and log file data in real-time.
* TIBCO BusinessEvents & Streambase - CEP platform and High Performance Low Latency Event Stream Processing
* WebSphere Business Events
* Siddhi Complex event processing written in Java. Designed as part of a series of middleware components.

## 参考文献

## 外部リンク
* Complex Event Processing & Real Time Intelligence
* Separating the Wheat from the Chaff Article about CEP as applied to RFID, appeared in RFID Journal
* Complex event processing: still on the launch pad in Computerworld
* The ACM conference on distributed event-based systems - Research articles on innovations in event-based systems