1. 程式人生 > >複雜事件處理(Complex Event Processing)--3. 複雜事件處理引擎產品

複雜事件處理(Complex Event Processing)--3. 複雜事件處理引擎產品

3. 複雜事件處理引擎產品

複雜事件處理的核心產品其實就是規則引擎,規則引擎的工作原理如下圖所示。


(1) 開發者使用規則語言或者狀態機定義一系列的規則,這些規則定義了系統中實體應對外界變化的反應規律。即一個實體物件當受到外部的作用,內部狀態發生了變化,滿足一定條件的內部狀態又觸發對外部的反應,執行一定的動作。無數的有著自身行為規則的物件,彼此相互作用,共同決定了系統整體的行為。 應用系統採用這種邏輯處理方式,模擬了真實世界的行為方式,是真正的面向物件的處理方式。

(2) 所有規則在規則引擎裡構造為 Rete network 結構,用於做規則的快速匹配。

(3)

包含狀態資訊的物件,代表外界對系統作用和系統對外界作用的事件物件,都儲存在引擎的記憶體裡。

(4) 當外部事件產生時,規則引擎對所有定義的規則做匹配,選擇出滿足條件可以執行的規則策略。這些規則按定義好的優先順序排列,預備按順序執行。

(5) 如果規則執行的結果不影響記憶體裡任何物件的狀態,那繼續第二條規則的執行,直至列表中的規則都執行完畢。否則重複之前的過程。

(6) 在處理過程中,記憶體裡的狀態物件和事件物件是可以刪除的,當然也可以建立新的狀態物件和事件物件。

(7) 這種程式不會結束,除非內部所有的物件都被清除,或者外部沒有任何新的事件發生。

總之,使用複雜事件處理規則引擎來構建開發系統,是一種更貼合真實世界執行狀況的描述形式。這裡大量的具備自由行為規則的物件決定了系統整體的行為表現。所以我說這才是真正的面向物件的程式設計方式。

在經濟等其他領域,這也是一種好的結構模式。:)

基於規則引擎開發的應用程式,包含如下內容。

(1) 包含各種狀態資訊的物件的類定義。

(2) 事件物件的類定義。

(3) 描述物件狀態變化和行為反應的規則和狀態機模型。

(4) 一些常量定義。

(5) 輸入事件和輸出事件的訊息通道。

(6) 需要查詢或者載入的歷史資料。

這種應用程式的處理邏輯如下圖所示。

 

(1) 外部作用系統的事件產生。對這些事件做過濾,刪除不需要的事件。

(2) 過濾出的事件賦值給內部的物件,開始做事件的聚合,事件的泛化。

(3) 根據定義的規則和系統的需求,進行事件的匹配,判斷和推理。最後得到一個判斷結論,或者找到一個導致事故的原因,決定一個決策,或者一個對系統未來變化的一個預測。

(4) 這些結果會發布出去,作用於其他系統。

最後有個很重要的問題需要闡述一下,就是什麼樣的系統適合用事件處理規則引擎來做,即行為規則宣告式開發方式,什麼樣的系統適合傳統的過程式開發方式(不管是過程式的程式設計,還是過程式的圖形化流程編排)。我的答案是:

(1) 抽象一些這個問題是,使用系統整體過程的描述方式,還是使用系統個體行為規則的描述方式。所以如果系統包含的內部物件很多,每個物件都有自己的行為反應規則,系統整體行為依賴於所有個體的行為規則,那就使用規則引擎來開發。反之,如果系統包含的物件不多,系統有一套比較固定的,依賴很少的影響因素的行為,則使用過程式開發比較便利。

(2) 不論整體描述形式,還是個體描述形式,如果行為規則很多且在系統執行階段規則變化比較頻繁,則適合使用規則引擎。 畢竟規則引擎使用很優化的規則匹配演算法,使用過程式的程式設計來實現這個功能可不容易。

總之,過程式開發和宣告式開發的界限並不是涇渭分明的,程式設計做出的系統使用規則引擎也能做,規則引擎開發的系統程式設計也能實現。但選擇不好開發方式和工具,結果肯定是事倍功半的。用工具一定要用的準。

相關推薦

複雜事件處理Complex Event Processing--3. 複雜事件處理引擎產品

3. 複雜事件處理引擎產品 複雜事件處理的核心產品其實就是規則引擎,規則引擎的工作原理如下圖所示。 (1) 開發者使用規則語言或者狀態機定義一系列的規則,這些規則定義了系統中實體應對外界變化的反應規律。即一個實體物件當受到外部的作用,內部狀態發生了變化,

複雜事件處理Complex Event Processing

複雜事件處理 複雜事件處理(CEP,Complex Event Processing)是一種基於動態環境中事件流的分析技術,事件在這裡通常是有意義的狀態變化,通過分析事件間的關係,利用過濾、關聯、聚合等技術,根據事件間的時序關係和聚合關係制定檢測規則,持續地從

大量日誌資料複雜事件處理技術Complex Event Processing 簡稱CEP

複雜事件處理概念 複合事件是由史丹佛大學的David Luckham 與Brian Fraseca 所提出,David Luckham 與Brian Fraseca 於1990年提出複合事件架構,使用模式比對、事件的相互關係、事件間的聚合關係,目的從事件雲(event cl

JavaScript: 最簡單的事件代理JS Event Proxy原理程式碼

假設有HTML <ul id="parent-list"> <li id="post-1">Item 1</li> <li id="p

【影象處理】彩色影象處理Color Image Processing

實驗要求   (1.a) 編寫程式實現圖6.23,程式的輸入為影象中指定的兩個灰度級範圍。程式的輸出為RGB 格式影象,其中,一個灰度級範圍顯示為指定的彩色,其餘的畫素以RGB 形式顯示為與輸入影象對應畫素相同的灰度色。   (1.b) 用上述程式對圖1.1

第五章 Flink Complex Event Processing 複雜事件處理

   轉載需標明出處                      [email protected]  Complex Event Processing&n

複雜事件處理(Complex Event Processing)入門1

一個新產品需要重點考慮業務風險控制。關於風險控制系統整體的技術方案可以參考支付系統風控系統建設思考。此方案儘管能夠滿足業務需求,但對於海量交易資料分析、風險事件的實時處理、大量的風險規則處理上,在實時性、效能、架構的可擴充套件性上都不是很理想,有必要重新從架構上考慮一下實現方案。 一般而言,風險控制系統

複合事件處理(Complex Event Processing)介紹

(最近這段時間,讀了一些關於複雜事件處理的論文,也從網路上找了些掃盲的資訊,這篇比較中意,遂轉) 近年來,面向服務架構 SOA一直是熱門的議題。面向服務架構SOA 使用了比元件、程式(procedure)層次更高的服務做為處理單元,通過開放格式交換標準例如XML、Web

ALSA音效卡驅動中的DAPM詳解之七:dapm事件機制dapm event

前面的六篇文章,我們已經討論了dapm關於動態電源管理的有關知識,包括widget的建立和初始化,widget之間的連線以及widget的上下電順序等等。本章我們準備討論dapm框架中的另一個機制:事件機制。通過dapm事件機制,widget可以對它所關心的dapm事

vue點選、滑動和長按等事件處理自定義指令

將以下程式碼封裝在一個js檔案裡,註釋很詳細,就不解釋了 import Vue from 'vue'; /** * @param el 繫結的DOM * @param binding 自定義指令中的binding物件 * @param type 繫結的事件型別 *

斯坦福大學自然語言處理第二課“文字處理基礎Basic Text Processing

文字處理基礎 1.正則表示式(Regular Expressions) 正則表示式是重要的文字預處理工具。 以下截取了部分正則寫法: 2.分詞(Word tokeni

Hawq學習筆記 --- MPP(大規模並行處理)架構Massively Parallel Processing

MPP是 Massively Parallel Processing的縮寫。        MPP 是將任務並行的分散到多個伺服器和節點上,在每個節點上計算完成後,將各自部分的結果彙總在一起得到最終的結果。   首先MPP 必須消除手工切分資料的工作量。 這是MySQL

canvas11/30--------事件處理區域性圖片放大

example2.js var canvas = document.getElementById('canvas'); context = canvas.getContext('2d'); rubberbandDiv = document.getElementById

python基礎—字符串處理、文件處理運維必備

python open string 字符串處理 文件處理 小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------謝謝您的參考,如有疑問,歡迎交流一、 字

Servlet 異常處理 配置錯誤頁面

使用 程序 頁面 sco class exception clas type load 當一個 Servlet 拋出一個異常時,Web 容器在使用了 exception-type 元素的 web.xml 中搜索與拋出異常類型相匹配的配置。 您必須在 web.xml 中使用

springMVC --全局異常處理兩種方式

nal font method mil -h util 一個 fail space 首先看springMVC的配置文件: <!-- 全局異常配置 start --> <bean id="exceptionResolv

圖像處理二十一基於數據驅動的人臉卡通動畫生成-Siggraph Asia 2014

ssi 原來 大於 搜索 nbsp details 一起 fontsize man http://blog.csdn.net/garfielder007/article/details/50582018 在現實生活中,我們經常會去評價一個人,長得是否漂亮、是不是帥哥美女,然

【筆記】移動端H5數字鍵盤input type=number的處理IOS和Android

!= 字符串 文檔 代碼 || clear tcl rfi 導致 在Vue中的項目,基於VUX-UI開發,一個常見的需求: 1、金額輸入框 2、彈出數字鍵盤 3、僅支持輸入兩位小數,限制最大11位數,不允許0開頭   第一,首先想到額就是在VUX-UI中制定ty

數據處理html to pdf

tor nbsp info from 完成 esp init alt 安裝路徑 爬取網站內容並保存為PDF格式 1、安裝pdf依賴包 pip install pdfkit 但是使用pdfkit時,還是會報錯 Traceback (most recent call la

給新生成的節點動態生成節點綁定事件方法總結

pos 但是 get add 動態添加 app 原生 lis father 第一種 jquery寫法 $(‘.father‘).on(‘click‘,‘,child‘,function(){}) $(document).on(‘click‘,‘,child‘,funct