柳吉慶,石 磊,張 軍
(中國電子科技集團(tuán)第38研究所,合肥 230088)
基于消息的系統(tǒng)異步集成框架設(shè)計與實現(xiàn)
柳吉慶,石 磊,張 軍
(中國電子科技集團(tuán)第38研究所,合肥 230088)
為實現(xiàn)異步方式下的應(yīng)用信息系統(tǒng)集成,建立了一個基于消息的系統(tǒng)集成框架,設(shè)計了該框架下的信息結(jié)構(gòu)和分類體系,闡述了基于消息實現(xiàn)異步集成的消息產(chǎn)生和消費過程,最后介紹了一個基于該框架實現(xiàn)的外購件器材信息同步應(yīng)用實例。
系統(tǒng)集成;消息服務(wù);集成規(guī)范;企業(yè)服務(wù)總線
隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,企業(yè)信息系統(tǒng)的數(shù)量和規(guī)模都在不斷增長,各個信息系統(tǒng)之間的數(shù)據(jù)同步和共享需求日益強(qiáng)烈,為實現(xiàn)企業(yè)內(nèi)應(yīng)用系統(tǒng)之間的互連互通,需實現(xiàn)企業(yè)應(yīng)用之間的系統(tǒng)集成[1]。目前企業(yè)應(yīng)用系統(tǒng)集成的數(shù)據(jù)信息交互主要可分為兩種方式(圖1):同步交互方式(Synchronous)以及異步交互方式(Asynchronous),二者具有不同的適用業(yè)務(wù)場景[2]。同步交互方式下,通常是一個請求(request)/應(yīng)答(response)的過程,交互請求方在發(fā)出請求后會等待返回相應(yīng)的結(jié)果(不管請求成功還是失?。┖蟛艜?zhí)行后續(xù)的業(yè)務(wù)操作,例如Web服務(wù)調(diào)用屬于典型的同步交互方式。與同步交互方式不同的是,異步交互方式下的交互發(fā)起方只需要負(fù)責(zé)將相關(guān)信息發(fā)送至特定“消息容器”中,并不需要等待接收方接收或處理該消息,消息的發(fā)送方和消費方并不直接進(jìn)行通信,每一個消息包含了處理它的業(yè)務(wù)邏輯所需要的數(shù)據(jù)以及數(shù)據(jù)狀態(tài)。
針對應(yīng)用系統(tǒng)集成方式,國內(nèi)外眾多學(xué)者從不同角度展開了相關(guān)的研究。Web服務(wù)是一種使用較為普遍的系統(tǒng)集成方式,相關(guān)學(xué)者就Web服務(wù)的語義表達(dá)、發(fā)現(xiàn)方法、權(quán)限控制等問題展開了大量的研究,但Web服務(wù)通常僅適用于同步交互方式。在消息集成的研究方面,目前對具體實現(xiàn)過程的完整表述還比較少。異步交互方式下應(yīng)用系統(tǒng)之間是一種松散耦合關(guān)聯(lián),當(dāng)涉及到多個應(yīng)用系統(tǒng)之間的數(shù)據(jù)同步共享時,采用基于消息的異步交互方式更加合理,本文將主要就企業(yè)應(yīng)用集成中基于消息的異步交互方式相關(guān)問題進(jìn)行具體闡述。
圖1 信息同步交互方式與異步方式
圖2為基于消息的企業(yè)信息系統(tǒng)集成總體框架。首先為保證不同信息系統(tǒng)對消息都能夠正確進(jìn)行發(fā)送和解析,需要針對消息的分類、消息主體結(jié)構(gòu)、消息身份標(biāo)識等內(nèi)容制定一系列統(tǒng)一的消息集成規(guī)范,各個應(yīng)用系統(tǒng)都應(yīng)該按照相關(guān)規(guī)范的約定產(chǎn)生或消費消息;消息服務(wù)器是消息的載體,提供了消息管理的一系列功能,包括消息的分發(fā)、分類、存儲、監(jiān)控、安全控制等,根據(jù)消息的使用用途可將消息分為隊列(Queue)和主題(Topic)兩大類,另外因為消息產(chǎn)生和使用的異步性,還需要考慮消息的持久化存儲問題,可通過文件服務(wù)器或數(shù)據(jù)庫服務(wù)器進(jìn)行消息的物理存儲。
圖2 消息集成總體框架示意圖
2.1消息的結(jié)構(gòu)設(shè)計
消息一般由消息頭(Message Header)、消息屬性(Message Property)以及消息體(Message Body)三部分組成[4],如圖3所示。
1)消息頭
符合JMS消息規(guī)范的若干屬性,例如消息優(yōu)先級、消息分組信息、消息過期標(biāo)示、消息產(chǎn)生日期等,通常為固有屬性,和具體的業(yè)務(wù)無關(guān)。
2)消息屬性
消息頭所包含的屬性字段往往不能滿足實際的業(yè)務(wù)需求,如果需要除消息頭字段以外的值,就可以使用消息屬性,消息屬性包含屬性名和屬性值兩部分。
3)消息體
消息體是消息的核心部分,主要的業(yè)務(wù)數(shù)據(jù)信息包含在消息體內(nèi),一般來說,消息體的類型可以為文本、集合、流或?qū)ο蟮榷喾N類型。
圖3 消息結(jié)構(gòu)示意圖
本文設(shè)計了四個自定義消息屬性,以滿足消息產(chǎn)生和消費的匹配要求,如表1所示。
其中,Sender為消息的產(chǎn)生者標(biāo)識,可以是為不同應(yīng)用系統(tǒng)指定的唯一標(biāo)識(例如對應(yīng)域名或系統(tǒng)英文縮寫簡稱);Level為消息的描述內(nèi)容等級,可分為錯誤(ERROR)、信息(INFO)和警告(WARN)等;TypeName為消息的分類關(guān)鍵詞,主要是為了方便消息使用方根據(jù)該屬性進(jìn)行消息過濾;Receiver為消息指定接收者,其取值規(guī)則與Sender類似,可以為單值、集合或空(廣播類消息)。
消息體是消息的主體內(nèi)容,雖然各類消息的具體內(nèi)容和樣式不盡相同,但從通用性和規(guī)范性的角度考慮,對消息體采用的描述格式以及結(jié)構(gòu)應(yīng)作統(tǒng)一要求,本文將消息體內(nèi)容設(shè)計為JSON文本格式,并對消息體包含的要素進(jìn)行定義,如表2所示。
表1 消息自定義屬性列表
表2 消息體組成結(jié)構(gòu)要素
2.2消息的分類
按照消息數(shù)據(jù)的業(yè)務(wù)范疇對消息進(jìn)行分類,每一類消息又可根據(jù)描述的粒度不同進(jìn)行層層細(xì)分,從而形成一個樹形的層次劃分體系。
圖4 消息層次分類結(jié)構(gòu)示意圖
對于消息的發(fā)送方來說,其所發(fā)送的消息有且只歸屬一個與之對應(yīng)的消息分類(消息分類樹的末端節(jié)點),消息的分類務(wù)目隨著參與集成的應(yīng)用系統(tǒng)增多或業(yè)務(wù)集成點的拓展而不斷更新增加,根據(jù)消息集成的領(lǐng)域特點,制定科學(xué)合理的分類體系,是實現(xiàn)消息發(fā)送與消費順利銜接的重要前提務(wù)件。
2.3消息的發(fā)布/訂閱
消息從產(chǎn)生到被消費主要分為以下五個步驟:
1)消息的創(chuàng)建,消息發(fā)送方確定相關(guān)的消息屬性,消息類型(隊列還是主題)以及消息的發(fā)送模式(持久還是非持久)。
2)提供消息發(fā)送方的身份認(rèn)證信息,從而與消息服務(wù)器進(jìn)行連接,并指定消息發(fā)送的目的地。
3)消息消費者同樣需要提供身份認(rèn)證信息,與消息服務(wù)器進(jìn)行連接,指定消息過濾務(wù)件(針對topic類型消息而言)并成功實現(xiàn)對指定消息目的地的消息訂閱,并實時監(jiān)聽該消息目的地,從而保障能夠及時獲取從該目的地傳輸過來的消息。
4)消息發(fā)送方的消息若滿足消息消費方的消息過濾務(wù)件,則消息消費方可對該消息的消息體進(jìn)行進(jìn)一步解析,從中獲取關(guān)鍵信息,執(zhí)行后續(xù)的業(yè)務(wù)操作(例如調(diào)用ESB[5,6]服務(wù),更新本系統(tǒng)相關(guān)業(yè)務(wù)數(shù)據(jù)等)。
5)消息消費方確認(rèn)該消息已被收到,消息傳輸結(jié)束,若在消息消費過程中出現(xiàn)異常,則該消息將不被確認(rèn),待相關(guān)故障消除后,消費方仍然能獲取該消息的內(nèi)容。
圖5、圖6分別描述了消息的發(fā)送和消費過程。
圖5 發(fā)送消息流程
某制造型企業(yè)先后上線了PDM和ERP系統(tǒng),考慮到外購件與庫存、采購、財務(wù)等多個業(yè)務(wù)有著緊密聯(lián)系,因此將外購件的基礎(chǔ)信息在ERP系統(tǒng)中進(jìn)行維護(hù)。與此同時,產(chǎn)品零部件中一般都會包含若干外購件,零部件的設(shè)計成果保存在PDM系統(tǒng)中,因此在PDM系統(tǒng)中同樣需要存儲外購件與設(shè)計相關(guān)的屬性信息。原先的系統(tǒng)集成方式為:PDM系統(tǒng)通過定期篩選新增或發(fā)生變更的外購件信息,從而保持與ERP系統(tǒng)中外購件信息的同步。這種信息集成方式存在的主要問題是實時性差,在兩次數(shù)據(jù)同步的時間間隔內(nèi),會出現(xiàn)新增的外購件在PDM系統(tǒng)中找不到、更新的外購件信息在PDM系統(tǒng)中無法體現(xiàn)等問題,通過縮小同步時間間隔雖然可以降低此類問題發(fā)生的概率,但如果同步時間間隔設(shè)置過小,則頻繁的信息服務(wù)調(diào)用又會給雙方系統(tǒng)造成較大的負(fù)擔(dān),基于消息的系統(tǒng)集成方式則可以有效解決此問題。
針對該企業(yè)的主要業(yè)務(wù)進(jìn)行分析,采用二級消息層次分類體系,將消息數(shù)據(jù)劃分為基礎(chǔ)數(shù)據(jù)類、業(yè)務(wù)數(shù)據(jù)類、公共數(shù)據(jù)類三個大類,每一大類下進(jìn)一步劃分為若干個子類,如表3所示。
根據(jù)此消息分類系統(tǒng),外購件信息集成相關(guān)設(shè)置的消息關(guān)鍵參數(shù)如表4所示。
圖6 消費消息流程
表3 消息層次分類體系實例
表4 外購件消息關(guān)鍵參數(shù)清單
圖7 外購件消息產(chǎn)生消費示意圖
考慮到未來可能會有多個信息系統(tǒng)需要使用到外購件信息,因此將外購件消息對應(yīng)的消息模式定義為發(fā)布/訂閱模式,從而使得一務(wù)消息可以被多個消費者同時獲?。粚⑾⒊志没瘏?shù)設(shè)置為True以確保不會發(fā)生消息丟失引起系統(tǒng)間外購件信息不同步的情況;消息屬性中的TypeName屬性采用了消息分類名(Material)+消息子類(MaterialChange)的格式,包含了外購件增、改、刪的幾種情況;對于新增或更新外購件的情形,PDM系統(tǒng)需要調(diào)用企業(yè)服務(wù)總線上發(fā)布的Web服務(wù)來獲取對應(yīng)的外購件的詳細(xì)信息再做系統(tǒng)內(nèi)外購件數(shù)據(jù)變更,而對于刪除外購件則無需調(diào)用Web服務(wù),故其消息體內(nèi)容的ServiceUrl可以為空。
圖7為基于消息的外購件信息集成示意圖。首先,PDM系統(tǒng)需要對消息服務(wù)器上外購件相關(guān)的消息主題進(jìn)行訂閱并啟動消息監(jiān)聽,當(dāng)在ERP系統(tǒng)發(fā)生外購件信息變更時,ERP系統(tǒng)通過消息組件發(fā)送消息至消息服務(wù)器,PDM系統(tǒng)會第一時間收到該消息,對消息體進(jìn)行內(nèi)容解析,獲取其中的Action、ID以及ServiceUrl參數(shù),當(dāng)Action為Add或Update,通過ServiceUrl尋找并調(diào)用部署在ESB平臺上的Web服務(wù)接口,ID為外購件的唯一標(biāo)識值,作為該Web服務(wù)的請求參數(shù),ESB在此充當(dāng)?shù)氖欠?wù)代理的角色,實際的服務(wù)由ERP系統(tǒng)提供,通過Web服務(wù)調(diào)用獲取外購件的詳細(xì)信息,在PDM系統(tǒng)中處理對應(yīng)的外購件信息,至此整個消息的發(fā)送與消費過程結(jié)束。
本文系統(tǒng)介紹了一種基于消息的企業(yè)信息系統(tǒng)集成框架,針對消息集成中的消息參數(shù)、消息體、消息分類體系等關(guān)鍵問題進(jìn)行了設(shè)計,闡述了基于該集成框架設(shè)計下的消息產(chǎn)生、消費過程,給出了一個具體的應(yīng)用實例。該集成框架在企業(yè)內(nèi)部已經(jīng)得到了實際應(yīng)用,并取得了良好的應(yīng)用效果。
[1] 唐智勇,吳剛.基于Web Service柔性異構(gòu)數(shù)據(jù)集成系統(tǒng)設(shè)計及查詢處理[J].微電子學(xué)與計算機(jī),2010(8):36-40.
[2] 梅雪峰,趙文靜.基于消息隊列和Web服務(wù)的分布式系統(tǒng)異步交互方式體系架構(gòu)[J].西北大學(xué)學(xué)報,2004(6):655-658.
[3] 紀(jì)波林,王志堅.基于JMS體系結(jié)構(gòu)的消息服務(wù)技術(shù)的應(yīng)用研究[J].計算機(jī)應(yīng)用研究,2003,(11):48-51.
[4] 戴俊,朱曉民.基于ActiveMQ的異步消息總線的設(shè)計與實現(xiàn)[J].計算機(jī)系統(tǒng)應(yīng)用,2010,(8):215,254-257.
[5] 劉云.基于ESB的企業(yè)應(yīng)用集成的研究[D].西安:西安工業(yè)大學(xué),2012.
[6] 范菁,熊麗榮,徐聰.分布式企業(yè)服務(wù)總線平臺數(shù)據(jù)集成研究及應(yīng)用[J].計算機(jī)科學(xué),2014,(2):206-214.
圖9 α1-α2仿真結(jié)果曲線
圖9中曲線1和2分別為α1-α2與轉(zhuǎn)向角δ的關(guān)系曲線。與轉(zhuǎn)速曲線相同,α1超前于α2且在輸入轉(zhuǎn)向角δ接近π/2.5時,α1率先發(fā)生躍變。
本文分析了四輪全向移動機(jī)器人的運動模式,基于電子差速技術(shù)和阿克曼轉(zhuǎn)向原理推算出不同運動模式下轉(zhuǎn)角、速度與輸入轉(zhuǎn)角關(guān)系的數(shù)學(xué)模型;在MATLAB的Simulink模塊中建立上述模型并仿真,由仿真的結(jié)果可以得到:1)四輪全向移動時,輸入角為某些特殊值時,速度或轉(zhuǎn)角會發(fā)生躍變;2)當(dāng)輸入轉(zhuǎn)角δ大于60°時,v1與v2偏差較大。因此,為保證四輪獨立轉(zhuǎn)向的穩(wěn)定性與各輪的協(xié)同性,δ需小于60°;當(dāng)δ大于60°工況下,選擇直線運動和原地轉(zhuǎn)向相配合的模式來完成目標(biāo)運動。
參考文獻(xiàn):
[1] 張京,陳度,王書茂,胡小安,王冬.農(nóng)用輪式機(jī)器人四輪獨立轉(zhuǎn)向驅(qū)動控制系統(tǒng)設(shè)計與試驗[J].農(nóng)業(yè)工程學(xué)報,2015,31(18):63-70.
[2] 付宜利,李寒,徐賀,馬玉林.輪式全方位移動機(jī)器人幾種轉(zhuǎn)向方式的研究[J].制造業(yè)自動化,2005,27(10):33-37.
[3] KIM W K, KIM D H, YI B J. Kinematic modeling of mobile robots by transfer method of augmented generalized coordinates[J].RoboticsSystems,2004,21(6):302-320.
[4] 翟麗,董守全,羅開宇.四輪轂電機(jī)獨立驅(qū)動車輛轉(zhuǎn)向電子差速控制[J].北京理工大學(xué)學(xué)報,2010,30(8):901-905.
[5] Mao Xu,Wang Xina, Zhang Junchao, et al. Design of electric orchard vehicle four-wheel steering control system[J].Advanced Materials Research,2013,51(2):1966-1969.
[6] Jefri Efendi Mohd Salih, Mohamed Rizon, Sazali Yaacob,et al. Designing Omni-Directional Mobile Robot with Mecanum Wheel[J]. American Journal of Applied Sciences,2006,3(5):1831-1835.
[7] 來鑫,陳辛波,等.四輪獨立驅(qū)動與轉(zhuǎn)向電動車輛運動控制系統(tǒng)及控制策略研究[J],汽車工程學(xué)報,2015,5(5):335-340.
Design and implementation of synchronous system integration framework based on message
LIU Ji-qing, SHI Lei, ZHANG Jun
TP311
A
1009-0134(2016)10-0117-05
2016-06-17
柳吉慶(1982 -),男,安徽合肥人,工程師,博士研究生,主要從事企業(yè)管理信息系統(tǒng)集成工作。