基本概念
複雜事件處理(Complex Event Processing,CEP)
事件
從字面上理解事件 可以認為是發生的一件事情,包括事物狀態和事物之間的某些動作。在信息系統中,事件可以是一些事物對象的狀態屬性,也可以是事物之間動作的記錄。 對於動作的完整描述可以用狀態機模型描述,即對初始狀態的事物做某些動作,事物由初始狀態遷移到動作後的新狀態。在事物動作過程中,可以構造三個事件信息,事物初始狀態事件,作用於事物的動作的事件,事物結果狀態事件。
事物動作的狀態機模型示意圖。
事件的關係
事件的關係主要有5種 :
1.時間順序關係
動作事件和動作事件之間,動作事件和狀態變化事件之間,都存在時間順序。
2.聚合關係
動作事件和動作事件之間,狀態事件和狀態事件之間都存在聚合關係。即個體的聚合形成整體集合。
3.層次關係
動作事件和動作事件之間,狀態事件和狀態事件之間都存在層次關係,即父類事件和子類事件的層次關係,從父類到子類是具體化,從子類到父類是泛化。
4. 依賴關係
事物的狀態屬性之間彼此的依賴關係和約束關係。
5.因果關係
對於完整的動作過程,結果狀態為果,初始狀態和動作都可以視為原因。類比哲學上論述事物如何發展也是有兩個因素的,一是內部本質,二是外部作用.
事件的處理
在套用系統里,事件處理實現的功能有幾類模式。
推斷
主要利用事物狀態之間的約束關係,從一部分狀態屬性值可以推斷出另一部分的狀態屬性值。例如當三角形1個角為90度,另一個角為45度,則推斷出第三個角為45度。
查因
當出現結果狀態,並且知道初始狀態,可以查明某個動作是原因,同樣當出現結果狀態,並且知道之前發生了什麼動作,可以查明初始狀態是原因。當然反向的推斷要求原因對結果來說必須是必要條件。
決策
想得到某個結果狀態,知道初始狀態,決定採用什麼動作。 預測 知道初始狀態,以及將要做的動作,預測結果狀態
處理的功能
事件更適合包含用於監控的內容,複雜事件處理的功能更適合做企業套用系統的監測和決策控制。一般來說,數據流中的業務數據是企業套用需要做處理的數據,這些處理包括獲取更新,傳輸轉換,存儲,計算,展現等等。業務數據代表現實世界中的事物及其狀態,對這些數據的處理代表對這些事物的處理。 通常這些處理都是用過程式語言描述的,由企業套用開發者在設計時編排確定。而事件包括事物狀態和事物之間的某些動作,即數據流中的數據和流程中對這些數據做了哪些操作,通過事件可以及時了解事物的狀態和對事物的所做的操作。 獲取這些事件後,可以按上篇中提到的事件處理模式來處理事件:
(1) 對事物的狀態進行推斷或者判斷,得到一些結論。這屬於監測的範疇。
(2) 當出現一些結果時,反向推斷出導致這些結果的原因。反向推斷要求原因對結果來反向推斷,要求原因對結果來說必須是必要條件。這也屬於監測的範疇。
(3) 基於當前事物的狀態,根據需要的結果,決定採取接下來採用什麼動作。這屬於決策範疇。
(4) 根據當前事物的狀態和對事物的動作,預測事物將來的狀態。這個有點模糊,我把它依然歸為監測範疇。 事件處理得到的結論,原因,動作決策,預測狀態,又會反作用於處理數據的流程,控制流程的分支選擇。事件處理和普通數據處理的關係見下圖