文/楊波 魏軍 錢曉東 楊彬
在有關基于傳感器和知識的決策支持系統(tǒng)(DSS)的最新研究中,重點放在事件驅動的方法上。這種方法的體系結構與傳統(tǒng)的以DSS 為中心的數(shù)據(jù)庫和以過程為中心的體系結構顯著不同。在許多不同的應用領域(例如預警系統(tǒng),環(huán)境監(jiān)控,交通管理或命令與控制)中,需要對傳感器數(shù)據(jù)進行近實時處理以提供決策支持。本文介紹了該電網(wǎng)知識融合工具包的設計和結構,以及其初始實現(xiàn)和我們在使用該工具包方面的經(jīng)驗。
在有關基于傳感器和知識的決策支持系統(tǒng)(DSS)的最新研究中,重點放在事件驅動的方法上。這種方法的體系結構與傳統(tǒng)的以DSS 為中心的數(shù)據(jù)庫和以過程為中心的體系結構顯著不同。在許多不同的應用領域(例如預警系統(tǒng),環(huán)境監(jiān)控,交通管理或命令與控制)中,需要對傳感器數(shù)據(jù)進行近實時處理以提供決策支持。此類DSS 的事件驅動的體系結構和設計概念例如由J.Dunkel,A.Fernandez,R.Ortiz,and S.Ossowski[1],O.Arslan and G.Inalhan[2]
和 T.Everding and T.Foerster[3]提出。這些方法為(通常是原始的)傳感器數(shù)據(jù)集成了(復雜的)事件處理,但是沒有向時空和語義事件處理提供靈活的擴展,而在更高的抽象級別上,更復雜的知識融合任務需要這些擴展。[4]在我們的方法中,我們提出了一個靈活的基于組件的工具包,用于基于事件的知識融合以進行決策。本文介紹了該電網(wǎng)知識融合工具包的設計和結構,以及其初始實現(xiàn)和我們在使用該工具包方面的首次經(jīng)驗。
電網(wǎng)知識融合工具包的主要目的是提供一個用于復雜事件處理(CEP)的平臺,即一個平臺,用于關聯(lián)從不同傳感器和系統(tǒng)發(fā)出的傳入事件流,以提供更高級別的信息。事件驅動架構是CEP 解決方案的架構范例。事件流進入系統(tǒng),并根據(jù)復雜的事件模式進行分析和匹配。用于指定事件模式并與之匹配的一種廣泛采用的技術是使用基于規(guī)則的系統(tǒng)。
另一個強大的范例是基于組件的體系結構。基于組件的體系結構提供關注點的分離,使用可互換模塊維護服務的不同變體的能力,并通過服務容器提供生命周期控制和其他通常需要的功能來促進輕量級模塊的使用。
電網(wǎng)知識融合工具包(Power Grid Knowledge Fusion Toolkit)背后的想法是將基于規(guī)則的系統(tǒng)與組件和服務范例結合起來。這具有以下優(yōu)點:
(1)快速部署,彌補了不斷變化的需求;
(2)模塊化可插拔服務,在集成不同的傳感器系統(tǒng)或監(jiān)視或決策支持系統(tǒng)方面提供了靈活性;
(3)外部組件的集成。
圖1a 展示了該工具包的一般結構?;臼录幚砉δ苡梢?guī)則引擎提供,該規(guī)則引擎連接到輸入和輸出隊列。分析傳入的事件,如果檢測到復雜事件,則通過輸出隊列將其發(fā)送到連接的偵聽器。這種基本結構構成了輕量級可插拔事件處理模塊(程序包)的容器,這些模塊定義了要使用的實際處理規(guī)則。
軟件包或插件包含:
(1)規(guī)則和連續(xù)查詢,用于定義復雜的事件模式。
(2)事件類型,用于定義事件結構。
(3)其他組件,如軟件包初始化程序,解組器和編組器,用于將事件對象從外部表示形式轉換為外部表示形式(例如,XML,JSON)以及特定于程序包的組件(例如,用于連接外部數(shù)據(jù)庫)。
像部署在應用程序服務器上的組件一樣,程序包也可以加載和卸載,激活和停用。有不同類型的程序包提供不同級別的功能。
服務器軟件包提供了基于常規(guī)規(guī)則的事件和情況處理環(huán)境,例如處理控制和測試事件;此外,還集成了通用語義解析器和時空解析器,以提供系統(tǒng)范圍的功能。
域包為域或應用程序庫提供標準事件和規(guī)則,以及將域本體饋送到語義解析器中。
應用程序包提供實現(xiàn)特定服務的應用程序級事件類型和規(guī)則。
由于所有通信都是通過發(fā)送和接收事件來完成的,因此該工具包允許功能的分布式部署,這為該方法增加了另一個面向組件的維度(圖1b)。
我們已經(jīng)取得了成功的經(jīng)驗,將不同的數(shù)據(jù)源集成到電網(wǎng)預警系統(tǒng)(PGTEWS)的IIP中。這是通過使用工業(yè)級JEE 應用服務器和Java Messaging(JMS)作為接收和提供數(shù)據(jù)的標準接口來實現(xiàn)的。為實現(xiàn)知識融合工具包選擇了相同的技術基礎。為了能夠將不同的訂戶連接到消息傳遞基礎結構,使用了JMS 主題而不是JMS 隊列。如果一個項目使用不同的傳輸機制,或者非Java 平臺上實現(xiàn),也可用來實施開源和商業(yè)工具JMS 的,例如像其他平臺-adapters 微軟的.NET - platform。為了促進事件處理功能,我們并入了JBOSS Drools Fusion,這是一個開源CEP 和規(guī)則處理系統(tǒng),具有以下功能:
(1)多線程異步事件流;
(2)支持時間推理;
(3)事件垃圾收集;
(4)缺乏事件的推理Drools 規(guī)則具有事件操作結構。
圖1:系統(tǒng)概念
Drools 的固有功能可以通過提供靜態(tài)Java 方法和字段的Java 類進行擴展,這些方法和字段在Drools 上下文中稱為全局變量。為了實現(xiàn)電網(wǎng)數(shù)據(jù)源和CEP 之間的松散耦合,我們決定使用文本消息代替二進制編碼的內容。消息格式本身取決于應用程序上下文,并且必須轉換為可以為所選CEP 實現(xiàn)解釋的格式。因此,有一個Java 接口,必須由工具箱用戶實現(xiàn),以將文本消息轉換為適合與Drools Fusion 進行通信的Java 對象。轉換函數(shù)的名稱以及將用于處理的事件流的名稱都是消息參數(shù)。由于JEE 應用程序服務器為其組件(例如,Enterprise Java Bean)提供與應用程序無關的運行時服務,因此知識融合工具包的目的是為知識組件(包)提供類似的服務,以下稱為Drools 組件(DC)。
drools 組件是使用JBoss Drools 對復雜事件處理系統(tǒng)的應用程序邏輯的定義和部署進行模塊化的抽象。Drools 組件已部署在Web 服務器上并正在動態(tài)加載。為了管理DC 的部署,有一個功能接口,可以將其合并到應用程序服務器的管理控制臺中。Drools 組件被實現(xiàn)為一個jar 文件,其中包含處理規(guī)則,事件對象類以及編組器和解組器以及其他與應用程序相關的組件。它的清單可能包含以下屬性:
(1)globals-classes:逗號分隔的全局實現(xiàn)的完全合格的類名列表;
(2)在給定的罐子里。如果未指定此屬性,則將沒有可用的全局變量;
(3)initializer-classes:給定jar 中會話初始化程序實現(xiàn)的完全限定類名的逗號分隔列表。如果未指定此屬性,那么將沒有會話初始化程序可用;
(4)rule-dir:此jar 中包含Drools dlrrules 的目錄的名稱。該規(guī)則目錄及其子目錄中包含的所有規(guī)則將被加載到Drools 知識包中。
根據(jù)drools 規(guī)則中所需的事件類型,必須至少有一個DroolsEventCreator接口的實現(xiàn),才能將文本消息轉換為Java 對象。Drools 組件將使用專用的類加載器加載,將根據(jù)給定的初始化協(xié)議實例化全局變量和會話初始化程序,以確保規(guī)則系統(tǒng)的一致性。Power Grid Knowledge Fusion Toolkit 提供兩個DC,分別用于時空和基于本體的語義推理。
語義解析器提供謂詞,以測試實體之間的包含關系,而與所使用規(guī)則系統(tǒng)的實際知識庫無關。本體解析器在開源JENA 語義Web 框架的基礎上實現(xiàn)為Drools 組件;本體是使用開源工具Protegé 開發(fā)的。
時空解析器提供了計算傳入事件之間的時空關系的功能。這用于在單個步驟中檢測此類事件之間的空間和時間相關性。為了對傳入事件的時空屬性進行建模,我們使用基于快照的表示形式(即地理形狀和時間戳)。PostgreSQL 數(shù)據(jù)庫與PostGIS 擴展一起用于空間數(shù)據(jù);引入了有效時間屬性以添加時間維度。
此處介紹的電網(wǎng)知識融合工具包(Power Grid Knowledge Fusion Toolkit)可以從傳入數(shù)據(jù)中提取更高級別的信息,并為Drools Components 提供了運行時環(huán)境。引入的Drools Components 概念可以實現(xiàn)規(guī)則和相應Java 擴展的模塊化。我們參與的一個研究項目說明了我們的方法。正在進行的工作包括性能改進和對drools 組件的監(jiān)控。