朱忠旭,劉旭光
(1.安徽工貿(mào)職業(yè)技術(shù)學(xué)院計算機(jī)技術(shù)系,安徽淮南232007;2.安徽交通職業(yè)技術(shù)學(xué)院計算機(jī)系,安徽合肥230001)
當(dāng)前存在著大量以Java為基礎(chǔ)的Web應(yīng)用系統(tǒng).這些系統(tǒng)廣泛用于信息的收集、傳遞、存儲、加工、更新和維護(hù),對提高機(jī)構(gòu)的運(yùn)作效率、支持決策等起到了重要作用.但已有的信息管理系統(tǒng)本身存在著智能程度不高、需要過多的人為參與等問題,而建造全新智能系統(tǒng)的代價又較高.利用人工智能技術(shù),對現(xiàn)有的信息系統(tǒng)進(jìn)行改造不失為一種高效率低成本的方法.
Agent[1]技術(shù)源于分布式人工智能的研究,Wooldridge和Jennings于1995年提出將軟件Agent視為擁有自治性、響應(yīng)性、預(yù)動性、社交能力等基本特性的軟件系統(tǒng).它們封裝了某些狀態(tài)和知識,并能經(jīng)由消息發(fā)送與其他Agent進(jìn)行通信,可視為分布對象技術(shù)的自然延伸.JADE[2]是一個完全由Java語言編寫的多Agent開發(fā)框架,遵循FIPA規(guī)范,提供了基本的命名服務(wù)、黃頁服務(wù)和通信機(jī)制等,可以有效地與其他Java開發(fā)平臺和技術(shù)集成,極大地簡化了開發(fā)多Agent系統(tǒng)的各個環(huán)節(jié).
Java EE是Sun公司推出的企業(yè)級分布式應(yīng)用的開發(fā)平臺,由一套規(guī)范和建立在Java SE平臺之上的應(yīng)用程序接口(API)組成,對開發(fā)基于Web的多層應(yīng)用提供了功能支持[3].Java EE Web處理層采用Model 2模式,如圖1所示,實(shí)現(xiàn)了控制邏輯與業(yè)務(wù)邏輯的分離和顯示與數(shù)據(jù)的分離.
圖1 Java Web Model 2模式Fig.1 Java Web Model 2
改進(jìn)后的系統(tǒng)中,由新設(shè)計的Agent組件對輸入數(shù)據(jù)進(jìn)行即時分析和處理并對數(shù)據(jù)庫中的歷史數(shù)據(jù)進(jìn)行分析以從中發(fā)現(xiàn)有用的知識.為了實(shí)現(xiàn)數(shù)據(jù)在Agent與Java EE組件之間的無縫傳輸,設(shè)計了Java EE表示層組件與JADE Agent之間的數(shù)據(jù)通道[4],該通道的功能是,①在不改變原系統(tǒng)數(shù)據(jù)流向的條件下,將由網(wǎng)頁傳來的用戶數(shù)據(jù)傳送給負(fù)責(zé)數(shù)據(jù)分析和處理的Agent;②將Agent處理后的結(jié)論傳送到Web頁面顯現(xiàn)給用戶.經(jīng)過智能化改進(jìn)后的系統(tǒng)由原有系統(tǒng)、新增顯示組件、原有系統(tǒng)與智能化組件之間的數(shù)據(jù)傳輸通道、實(shí)現(xiàn)系統(tǒng)智能化的Agent組件4部分組成,見圖2.
圖2 系統(tǒng)總體架構(gòu)Fig.2 General architecture of the system
原有系統(tǒng)是企業(yè)遺留的基于Java EE平臺的應(yīng)用系統(tǒng),經(jīng)過智能化改進(jìn)后,原有系統(tǒng)的運(yùn)行不受影響.新增顯示組件包含一組新設(shè)計的JSP頁面,用于顯示智能組件的分析結(jié)果.系統(tǒng)智能化功能的實(shí)現(xiàn)由新增的基于JADE平臺的多個Agent來實(shí)現(xiàn).每一個Agent負(fù)責(zé)完成一類數(shù)據(jù)的分析和處理.智能組件與原有系統(tǒng)的通信由數(shù)據(jù)通道實(shí)現(xiàn).根據(jù)數(shù)據(jù)來源的不同,數(shù)據(jù)傳輸通道由頁面數(shù)據(jù)獲取組件和數(shù)據(jù)庫數(shù)據(jù)獲取組件組成.系統(tǒng)的主要組件設(shè)計如下:
(1)系統(tǒng)顯示組件的設(shè)計
改進(jìn)后的系統(tǒng)數(shù)據(jù)顯示界面由原有系統(tǒng)的顯示頁面和新增的Agent顯示界面兩部分組成.顯示組件的設(shè)計包括原有頁面的修改和新頁面的設(shè)計.首先要對原系統(tǒng)的部分頁面做簡單修改,使其數(shù)據(jù)傳輸方向?yàn)楦淖兒蟮目刂破鹘M件.另外,智能處理的結(jié)果要顯示給用戶,所以要增加一些JSP頁面用于同Agent交互.
(2)數(shù)據(jù)傳輸組件的設(shè)計
數(shù)據(jù)傳輸組件包括從頁面接收數(shù)據(jù)的組件和從數(shù)據(jù)庫中獲取數(shù)據(jù)的組件.頁面數(shù)據(jù)的獲取由Enhanced-Servlet組件和GatewayAgent組件協(xié)作完成,實(shí)現(xiàn)模型如圖3所示.EnhancedServlet是原系統(tǒng)中相應(yīng)Servlet組件的擴(kuò)展,充當(dāng)擴(kuò)展后的系統(tǒng)的控制器,其作用是獲取網(wǎng)頁上的輸入信息并將其傳送給GateWayAgent組件;GateWayAgent組件從EnhancedServlet中提取消息的接收者和消息內(nèi)容,然后把消息發(fā)送給接收Agent同時收集Agent的回復(fù)信息,發(fā)送給EnhancedServlet,然后由顯示頁面JSP顯示給用戶.DataBoard對象封裝了要傳送的數(shù)據(jù),相當(dāng)于在EnhancedServlet組件與GatewayAgent組件之間傳達(dá)信息的黑板.
GatewaryAgent是JADE平臺提供的用于實(shí)現(xiàn)其他平臺代碼與JADE平臺通信的一個基礎(chǔ)組件,mdGatewayAgent是其擴(kuò)展,它從DataBoard對象中提取消息的接收者和消息內(nèi)容,并將其轉(zhuǎn)換成Agent之間通信時的消息格式ACL Message[5],然后把消息發(fā)送給接收Agent.Agent通過數(shù)據(jù)庫數(shù)據(jù)獲取組件并從數(shù)據(jù)庫中讀取數(shù)據(jù),數(shù)據(jù)庫數(shù)據(jù)獲取組件基于JDBC設(shè)計,采用模板模式設(shè)計,見圖4.DataGetAgent根據(jù)從其他Agent所接收到的數(shù)據(jù)查詢請求,從數(shù)據(jù)庫中查詢數(shù)據(jù),然后將查詢結(jié)果封裝為ACLMessage,傳送給請求Agent.
圖3 Web-Agent數(shù)據(jù)通道設(shè)計Fig.3 Data chanel between Web pages and Agent
(3)基于JADE平臺的Agent設(shè)計
圖4 數(shù)據(jù)庫數(shù)據(jù)獲取組件Fig.4 Data getting model of database
Agent是一個具有知識的智能組件,由知識庫、推理機(jī)和數(shù)據(jù)篩選器等三部分構(gòu)成,見圖5.其數(shù)據(jù)來源有來自頁面的用戶輸入數(shù)據(jù)和來自數(shù)據(jù)庫的歷史數(shù)據(jù)兩種,來源為數(shù)據(jù)庫的數(shù)據(jù)是Agent根據(jù)自己的要求主動獲取的,而來自于頁面的數(shù)據(jù)是由頁面數(shù)據(jù)獲取組件對網(wǎng)頁事件的響應(yīng)而獲得的.數(shù)據(jù)篩選器根據(jù)推理機(jī)的需要對從頁面?zhèn)鱽淼臄?shù)據(jù)進(jìn)行篩選,選出推理機(jī)需要的數(shù)據(jù)項(xiàng).知識庫將與應(yīng)用領(lǐng)域相關(guān)的知識以一定的方式表示和存儲,作為推理機(jī)進(jìn)行推理的依據(jù).知識庫的開發(fā)工具有多種,其中JESS是一個完全用Java語言實(shí)現(xiàn)專家系統(tǒng)的開發(fā)工具.JADE Agent可以通過讀取文件的方式加載JESS規(guī)則庫[6].Agent的推理機(jī)由JESS推理機(jī)擔(dān)當(dāng),JESS推理機(jī)激活位置定義于Agent的action()方法中.在JESS中,Rete.store()等方法實(shí)現(xiàn)了參數(shù)的存?。?].
圖5 Agent模型Fig.5 Agent model
煤礦安全信息管理系統(tǒng)HBCMSMIS是為某礦業(yè)集團(tuán)設(shè)計的一套以安全信息管理為主要功能的應(yīng)用軟件,系統(tǒng)的設(shè)計基于Java EE平臺,采用瀏覽器/服務(wù)器結(jié)構(gòu).系統(tǒng)的主要功能包括礦管理、安全日報管理、獎懲管理、質(zhì)量標(biāo)準(zhǔn)化管理、事故管理、職工信息與培訓(xùn)管理、三違隱患管理、職業(yè)病防治管理、安技措施管理、新聞通知管理、一通三防和系統(tǒng)用戶管理等.
系統(tǒng)中的Agent分為局Agent和礦Agent兩類,局Agent運(yùn)行于安全監(jiān)督局,礦Agent運(yùn)行于安監(jiān)局所屬各礦,Agent之間采用樹形結(jié)構(gòu)組織,見圖6和圖7.局信息綜合分析Agent負(fù)責(zé)對局所屬各礦的安全信息進(jìn)行綜合分析和處理,它從各礦上報的信息及全局?jǐn)?shù)據(jù)庫中獲取所需數(shù)據(jù)進(jìn)行分析;礦Agent負(fù)責(zé)處理每個煤礦的各種信息,礦信息處理Agent的種類和結(jié)構(gòu)與局Agent相同.
圖6 安監(jiān)局信息處理AgentFig.6 Safety supervision bureau information handling Agent
圖7 礦信息處理AgentFig.7 Mine information handling Agent
面對海量的用戶數(shù)據(jù),傳統(tǒng)的信息管理系統(tǒng)已難以滿足人們對信息處理的需要,人們希望利用人工智能技術(shù)實(shí)現(xiàn)對信息的自動分析與處理,從中挖掘出有用的知識.雖然當(dāng)前已有許多專用的人工智能系統(tǒng)開發(fā)平臺和工具,但是開發(fā)一個全新的智能系統(tǒng)仍需要較高的成本.基于Agent平臺JADE對已有的Java企業(yè)應(yīng)用系統(tǒng)進(jìn)行智能化改進(jìn)是一種高效率、低成本的方法,該方法要完成的主要工作包括遺留系統(tǒng)與多Agent系統(tǒng)的數(shù)據(jù)傳輸功能的實(shí)現(xiàn)以及智能組件的設(shè)計和實(shí)現(xiàn).這種改進(jìn)不影響原有系統(tǒng)的運(yùn)行和功能,開發(fā)者可以專注于系統(tǒng)智能化需求的實(shí)現(xiàn),可以降低開發(fā)難度并節(jié)省開發(fā)成本和時間.
[1]史忠植.高級人工智能[M].3版.北京:科學(xué)出版社,2011:430-494.
[2]Fabio B,Giovanni C.Dominic Greenwood Developing Multi Agent Systems with JADE[M].New Jersey:John Wiley & Sons,2007:30-50.
[3]李剛.經(jīng)典Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2010:11-15.
[4]于衛(wèi)紅.基于JADE平臺的多Agent系統(tǒng)開發(fā)技術(shù)[M].北京:國防工業(yè)出版社,2011:88-99.
[5]金明宇,翟玉慶.基于Web的Agent通信框架[J].計算機(jī)工程,2003,29(3):195-197.
[6]文君.基于MAS的民航機(jī)務(wù)人為因素控制專家系統(tǒng)研究[D].武漢:武漢理工大學(xué),2006:23-25.
[7]林杰,陸耀華.專家系統(tǒng)輔助的多Agent蟻群算法研究[J].計算機(jī)工程與科學(xué),2007,29(6):47-50.