2 關(guān)鍵技術(shù)
2.1 基于ESB的數(shù)據(jù)集成技術(shù)
ESB為面向服務(wù)的集成提供了一個完備的基礎(chǔ)結(jié)構(gòu),結(jié)合了Web服務(wù)、XSLT(Extensible Stylesheet Language Transformations)以及對編排技術(shù)的支持等。ESB提供了事件驅(qū)動和文檔導(dǎo)向的處理模式,以及分布式的運行管理機制,它支持基于內(nèi)容的路由和過濾,具備了復(fù)雜數(shù)據(jù)的傳輸能力,并可以提供一系列的標準接口。ESB對信息進行了適當(dāng)?shù)目刂坪吞幚,滿足了面向服務(wù)架構(gòu)中安全性、策略性、可靠性和統(tǒng)計需求。使用通信協(xié)議負責(zé)服務(wù)之間所有的信息調(diào)控、流向和轉(zhuǎn)換。ESB采用基于XML的消息格式,支持如Web服務(wù)、JMS(Java Message Service)等標準,使服務(wù)的實現(xiàn)和服務(wù)通信相分離,有很好的開放性和可擴展性。集成的各個應(yīng)用之間可以通過ESB發(fā)送和接收消息,異步的產(chǎn)生消息,這些都使得ESB成為面向服務(wù)架構(gòu)、面向消息架構(gòu)以及事件驅(qū)動架構(gòu)的良好解決方案。
本平臺中,首先根據(jù)集成需求將各個集成操作抽象成為定義良好的服務(wù),如CAD系統(tǒng)的文件BOM讀取服務(wù),ERP系統(tǒng)的目標BOM寫入服務(wù),以備ESB調(diào)用;其次,集成需要完成異構(gòu)系統(tǒng)不同數(shù)據(jù)之間的格式轉(zhuǎn)換,以便共享數(shù)據(jù)。根據(jù)BOM數(shù)據(jù)格式的要求進行數(shù)據(jù)處理,將源BOM數(shù)據(jù)格式轉(zhuǎn)換成目標BOM數(shù)據(jù)格式,ESB根據(jù)轉(zhuǎn)換文件完成數(shù)據(jù)轉(zhuǎn)換;同時,ESB根據(jù)用戶需求,通過基于內(nèi)容的路由機制實現(xiàn)集成邏輯;最終,用戶配置的監(jiān)聽機制觸發(fā)定義好的ESB,實現(xiàn)兩系統(tǒng)之間的數(shù)據(jù)集成和共享。
2.2 基于數(shù)據(jù)事件流的數(shù)據(jù)處理
信息共享的一個重要的前提就是數(shù)據(jù)轉(zhuǎn)換,即將CAD系統(tǒng)和ERP系統(tǒng)中不同數(shù)據(jù)結(jié)構(gòu)的信息相互轉(zhuǎn)換,這樣才能實現(xiàn)數(shù)據(jù)的一致性和實時共享。然而手工硬編碼的方式去完成數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換是不可取的,既要耗費大量精力又缺乏平臺通用性。在這里,采用數(shù)據(jù)轉(zhuǎn)換引擎進行數(shù)據(jù)轉(zhuǎn)換,不僅支持基于XSLT的XML格式之間的轉(zhuǎn)換,還支持CSV到XML、XML到CSV、Java到XML、XML到Java等多種數(shù)據(jù)轉(zhuǎn)換形式,能夠為ESB提供靈活的數(shù)據(jù)轉(zhuǎn)換服務(wù),同時利于平臺數(shù)據(jù)轉(zhuǎn)換功能的擴展。本平臺中,數(shù)據(jù)通信采用的是XML,數(shù)據(jù)結(jié)構(gòu)的表示和轉(zhuǎn)換采用的是)ML Schema和XSLT。XML Schema可以定義BOM表中的元素、屬性,定義子元素的次序及數(shù)目,定義元素是否為空,是否可包含文本,定義元素和屬性的數(shù)據(jù)類型以及屬性的默認值等。XSLT作為一種基于XML的語言,在數(shù)據(jù)轉(zhuǎn)換引擎框架的支撐下用于將源BOM的XML文檔轉(zhuǎn)換成目標BOM的XML文檔。在本平臺中,XSLT正是發(fā)揮了轉(zhuǎn)換數(shù)據(jù)的重要作用,使CAD系統(tǒng)和ERP系統(tǒng)中不同結(jié)構(gòu)的BOM信息得以共享。集成數(shù)據(jù)流如圖2所示。
圖2 集成數(shù)據(jù)流圖
數(shù)據(jù)集成時,系統(tǒng)自動載入雙方的Schema文件,生成XSLT轉(zhuǎn)換文件。轉(zhuǎn)換服務(wù)啟動時,數(shù)據(jù)轉(zhuǎn)換引擎將結(jié)構(gòu)化的數(shù)據(jù)流轉(zhuǎn)變成事件流,然后進行分析,生成最終XML結(jié)果。
2.3 基于Rete算法的規(guī)則引擎與內(nèi)容路由
本平臺采用基于Rete算法的規(guī)則引擎分離業(yè)務(wù)邏輯。Rete算法是目前效率最高的前向鏈形推理算法,核心思想是將分離的匹配項根據(jù)內(nèi)容動態(tài)的構(gòu)造匹配樹,減少重復(fù)操作,解決時間冗余的問題,從而大大減少計算量,提高計算效率。Rete算法的狀態(tài)保存和節(jié)點共享機制使其優(yōu)于傳統(tǒng)的模式匹配算法。
平臺基于內(nèi)容的路由采用的是Drools規(guī)則引擎,它是一種基于Rete算法的高效規(guī)則引擎,配有類似Java語言的規(guī)則描述語言,支持非XML的本地語言編寫規(guī)則,能描述較為復(fù)雜的邏輯,并且能用Excel對規(guī)則進行管理,大大方便了規(guī)則的管理與維護。執(zhí)行邏輯如圖3所示。

圖3 Drools工作模式簡圖
“規(guī)則庫”是編好的Drools規(guī)則集合,待進行匹配的數(shù)據(jù)稱為“事實”,“模式匹配器”的作用是對新的數(shù)據(jù)和被修改的數(shù)據(jù)進行規(guī)則的匹配。當(dāng)一條規(guī)則被完全匹配,這條規(guī)則和與其匹配的事實將激活被放入“規(guī)則執(zhí)行議程”,由議程來負責(zé)安排執(zhí)行。
進行BOM集成時,業(yè)務(wù)過程較為復(fù)雜,Drools規(guī)則引擎將業(yè)務(wù)邏輯和業(yè)務(wù)實現(xiàn)完全分離,解決了集成業(yè)務(wù)的維護和擴展問題。如在平臺的實現(xiàn)中,對于不需要審核的BOM信息,存入平臺備份并直接導(dǎo)入目標ERP系統(tǒng);對于需要審核的數(shù)據(jù)則先存人平臺,等待審核,審核結(jié)束之后才能導(dǎo)入目標系統(tǒng)。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/