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