孫學(xué)波,楊明威
(遼寧科技大學(xué) 軟件學(xué)院,遼寧 鞍山 114051)
基于XML文檔技術(shù)的數(shù)據(jù)通訊組件的設(shè)計與實現(xiàn)
孫學(xué)波,楊明威
(遼寧科技大學(xué) 軟件學(xué)院,遼寧 鞍山 114051)
為了解決分布式ERP系統(tǒng)中各結(jié)點之間的信息同步、界面實時更新和實時數(shù)據(jù)交換等技術(shù)問題,同時也為了降低軟件各組成部分之間的耦合以及提高軟件的可復(fù)用程度,本文提出了一種基于TCP/IP協(xié)議并使用XML文檔格式的數(shù)據(jù)傳輸技術(shù),并將其封裝成一個可復(fù)用的軟件組件。該組件使用XML文檔格式描述數(shù)據(jù)對象,采用TCP/IP數(shù)據(jù)傳輸技術(shù),可應(yīng)用于分布式ERP系統(tǒng)內(nèi)部的數(shù)據(jù)通訊。本文分析了ERP系統(tǒng)在信息實時處理(RIP)和實時信息交換(RIE)等方面的軟件需求,詳細(xì)地給出了這個數(shù)據(jù)通訊組件的具體設(shè)計和實現(xiàn)方案,并介紹了這個組件在鞍鋼鐵路運輸ERP系統(tǒng)中的實際應(yīng)用情況。
XML;信息實時處理;實時信息交換;數(shù)據(jù)通訊組件;序列化
目前,企業(yè)資源計劃系統(tǒng)(Enterprise resource planning,ERP)已經(jīng)獲得了非常廣泛的應(yīng)用。近幾年來,ERP系統(tǒng)的形式、內(nèi)容和應(yīng)用領(lǐng)域都得到了較大的發(fā)展[1-2]?;诮M件的ERP系統(tǒng)的分析與設(shè)計以及ERP系統(tǒng)的實時性問題也已經(jīng)成為當(dāng)前ERP領(lǐng)域的熱點問題。
傳統(tǒng)的ERP系統(tǒng)主要應(yīng)用于制造業(yè),目的是為企業(yè)提供有效的物資、資金和信息資源的一體化管理的企業(yè)信息管理系統(tǒng)。隨著信息技術(shù)的不斷發(fā)展,ERP系統(tǒng)的應(yīng)用范圍已經(jīng)擴(kuò)大到國內(nèi)各種類型的企業(yè),如食品生產(chǎn)和物流等企業(yè)。同時,ERP系統(tǒng)的目標(biāo)也從優(yōu)化企業(yè)業(yè)務(wù)流程轉(zhuǎn)換成提高企業(yè)的核心競爭力。這個變化也使得ERP的結(jié)構(gòu)發(fā)生了較大的變化。不同行業(yè)類型企業(yè)的ERP的結(jié)構(gòu)也會表現(xiàn)出較大的差異。
從ERP系統(tǒng)目標(biāo)的角度來看,實時性必然是ERP系統(tǒng)的本質(zhì)特征之一。從宏觀的角度來看,任何ERP系統(tǒng)都需要對環(huán)境變化做出及時有時甚至是實時的響應(yīng)。從微觀的角度來看,系統(tǒng)局部狀態(tài)的改變往往會引起其相關(guān)或相鄰部分狀態(tài)的改變,有時甚至是系統(tǒng)全局狀態(tài)的變化,這都要求系統(tǒng)做出及時或?qū)崟r的響應(yīng)。并且越是局部的變化,對其響應(yīng)的實時性的要求往往越高,但影響的范圍也越小。這個特點也為實時ERP系統(tǒng)提供了實現(xiàn)的可能性。
在數(shù)據(jù)通訊服務(wù)軟件領(lǐng)域,各種開發(fā)環(huán)境都提供了不同層次和形式的通訊服務(wù)軟件包或通訊服務(wù)組件。低層的有封裝了各種通訊協(xié)議的軟件包,高層的有擁有不同目的和特性的各種數(shù)據(jù)通訊組件。它們擁有各自不同的特點和適用范圍。例如,微軟公司的MQ(Message Queue)就是一個著名的數(shù)據(jù)通訊服務(wù)組件。其主要特點是異步通訊的方式提供可靠的通信服務(wù)。即它關(guān)注是通訊的可靠性而不是實時性,因此不適合需要實時響應(yīng)的通訊需求。再如Microsoft.NET Remoting組件提供了一種允許遠(yuǎn)程對象之間進(jìn)行交互的框架,也可以支持?jǐn)?shù)據(jù)通訊。但這個組件提供的服務(wù)仍然屬于比較低層的服務(wù),使用這個組件并不十分適合本文討論的ERP系統(tǒng)實時性問題[3-5]。
本文從ERP系統(tǒng)的實時數(shù)據(jù)交換技術(shù)問題的角度出發(fā),分析了ERP系統(tǒng)在信息實時處理(RIP)和實時交換(RIE)方面的需求,設(shè)計并實現(xiàn)了一個基于XML數(shù)據(jù)文檔的數(shù)據(jù)通訊組件,并概要地介紹了這個組件在實際的ERP項目中的具體應(yīng)用。
現(xiàn)代ERP系統(tǒng)通常是一個分布式計算機(jī)網(wǎng)絡(luò)系統(tǒng),系統(tǒng)中各個結(jié)點之間的信息傳遞可分為數(shù)據(jù)信息傳遞和控制信息傳遞兩種方式,這兩種信息傳遞的實時性要求通常是不同的。其中的控制信息傳遞的實時性要求往往會更高[6-7]。
ERP系統(tǒng)的大部分功能均集中在信息處理方面,系統(tǒng)的運作通常以人機(jī)交互操作方式為主。因此,ERP在數(shù)據(jù)通訊方面的實時性要求并不太高,不同結(jié)點之間的響應(yīng)時間通??梢源_定在秒級。
ERP系統(tǒng)內(nèi)的實時通訊主要指系統(tǒng)內(nèi)各部各個結(jié)點之間的數(shù)據(jù)通訊,通訊內(nèi)容可以是一個簡單的消息、一個復(fù)雜的實體對象,也可以是一個用戶文檔。如一個WORD文檔或一張圖片等。
前者主要用于協(xié)調(diào)系統(tǒng)中各結(jié)點之間的協(xié)作關(guān)系,用以實現(xiàn)分布式系統(tǒng)的實時更新。例如,一個結(jié)點更新了系統(tǒng)狀態(tài)時,向相關(guān)結(jié)點發(fā)布一個更新消息,收到消息的結(jié)點就可以刷新系統(tǒng)狀態(tài),以保持系統(tǒng)狀態(tài)的一致。后者則用于支持各結(jié)點用戶之間的協(xié)作。
從應(yīng)用角度出發(fā),可以把通訊數(shù)據(jù)劃分成即時消息、用戶數(shù)據(jù)和系統(tǒng)內(nèi)部控制信息等三類。
(1)即時消息:系統(tǒng)用戶之間交換的消息。如通知、公告和用戶間的聊天信息等。
(2)用戶數(shù)據(jù):包括單個記錄,表格和數(shù)據(jù)文檔等。
(3)系統(tǒng)內(nèi)部控制信息:由系統(tǒng)定義的在分布式系統(tǒng)中不同進(jìn)程間的協(xié)作信息,主要用于控制進(jìn)程間的協(xié)作。這類信息通常對用戶來說是透明的。
從系統(tǒng)設(shè)計或信息結(jié)構(gòu)角度,可以把通訊數(shù)據(jù)劃分為簡單對象、復(fù)雜對象和文檔對象等三種類型。不同類型的通訊可選用不同的對象支持。
(1)簡單對象:指應(yīng)用系統(tǒng)中使用的某個實體對象,其主要特征是其各屬性均為簡單的數(shù)據(jù)類型。通常用于傳遞系統(tǒng)的狀態(tài)增量信息,也可以表示用戶之間傳遞的簡單信息。
(2)復(fù)雜對象:由若干個簡單對象聚合而成的對象。如商品訂單就是由訂單明細(xì)聚合而成的對象。
(3)文檔對象:封裝了某個用戶文檔的數(shù)據(jù)對象。這種對象由文檔的描述信息和文檔數(shù)據(jù)組成。如傳遞一個word文檔,一個圖片等。系統(tǒng)不解析此對象的文檔內(nèi)容。
從通訊類型分析的角度出發(fā),同時為保證通訊的實時性和可靠性,定義如下五個用例。圖1給出了通訊組件的用例模型。
圖1 數(shù)據(jù)通訊組件的用例圖Fig.1 Use case diagram of communication diagram
(1)注冊(Login)。某個結(jié)節(jié)啟動時向通訊服務(wù)器發(fā)出注冊請求,通訊服務(wù)器將該節(jié)點的信息加入到在線結(jié)點列表,并向注冊結(jié)點返回當(dāng)前在線結(jié)點列表。同時向所有在線結(jié)點發(fā)出在線結(jié)點列表更新消息。
(2)注銷(Logout)。當(dāng)某個結(jié)點關(guān)閉時,向通訊服務(wù)器發(fā)出注銷通知消息,通訊服務(wù)器將該結(jié)點的信息從在線結(jié)點列表中刪除,并向所有在線結(jié)點發(fā)出在線結(jié)點列表更新消息。
(3)發(fā)送對象(Send)。當(dāng)某個結(jié)點的狀態(tài)發(fā)生變化或需要發(fā)送用戶消息時,結(jié)點向通訊服務(wù)器發(fā)出數(shù)據(jù)通訊請求,通訊服務(wù)器接收到數(shù)據(jù)后將數(shù)據(jù)轉(zhuǎn)發(fā)給指定的結(jié)點。
(4)廣播(Broadcast)。當(dāng)某個結(jié)點的狀態(tài)發(fā)生變化需要通知所有其他結(jié)點時,結(jié)點向通訊服務(wù)器發(fā)出數(shù)據(jù)通訊請求,通訊服務(wù)器接收到數(shù)據(jù)后將數(shù)據(jù)轉(zhuǎn)發(fā)給在線結(jié)點列表中的所有其它結(jié)點。
(5)接收(Receive)。通訊服務(wù)器向客戶結(jié)點發(fā)出數(shù)據(jù)通訊請求,客戶結(jié)點接收到通訊請求后,將數(shù)據(jù)提交給特定的數(shù)據(jù)接收模塊解析并實例化相應(yīng)的數(shù)據(jù)對象,系統(tǒng)將根據(jù)接受到的數(shù)據(jù)對象的具體內(nèi)容作進(jìn)出相應(yīng)的處理。
本通訊構(gòu)件的非功能需求主要體現(xiàn)在時間性和互操作性兩個方面。
本組件的時間性取決于由系統(tǒng)的體系結(jié)構(gòu),能夠滿足除過程控制等領(lǐng)域之外的實時信息處理等方面的需求?;ゲ僮餍詣t指系統(tǒng)與外界或系統(tǒng)與系統(tǒng)之間的相互作用能力。
本組件將使用環(huán)境無關(guān)的通訊協(xié)議(TCP/IP)和基于文本的XML文檔技術(shù)加以實現(xiàn),以盡可能提高系統(tǒng)通訊的時間性和互操作性[7-9]。
為提高系統(tǒng)的互操作性,本組件將通訊數(shù)據(jù)轉(zhuǎn)換成一個XML文檔。根據(jù)通訊數(shù)據(jù)類型的劃分和組件的功能需求,本組件定義了實體XML、聚合XML和文檔XML等多種XML文檔格式,以滿足系統(tǒng)的通訊需求[10-18]。
2.1.1 簡單對象的XML文檔結(jié)構(gòu) 實體XML用于表示應(yīng)用系統(tǒng)中的簡單實體對象。其結(jié)構(gòu)定義如圖2所示。
圖2 實體XML文檔結(jié)構(gòu)圖Fig.2 Document structure for entity object
例如,一本書的信息可以描述成如下的形式。
<?xml version=/"1.0/"encoding=/"utf-8/"?>
<Book catology=/”Entity/”>
<ISBN>0764544020</ISBN>
<Title>Beginning Access 2002 VBA</Title>
<Date>2000-04-01</Date>
<Author>Dave Sussman</Author>
</Book>
其中,Entity ID為實體對象的標(biāo)識符,在本文檔中被作為文檔標(biāo)識符。catology=/”Entity/”表示本文檔為一個實體型文檔。
2.1.2 聚合對象的XML文檔表示 本文中,聚合XML文檔用于表示一個聚合對象,聚合XML文檔由這個實體集對象自身的屬性值和聚合對象組成。文檔格式定義如圖3所示。
其中,EntitySet ID為實體集對象的標(biāo)識符,在本文檔中被作為文檔標(biāo)識符。AttributeName和AttributeValue分別為實體集對象的屬性名和屬性值。EntityID為聚集中每個實體對象的標(biāo)識符。
2.1.3 文檔對象的XML表示 文檔對象的本質(zhì)就是一個預(yù)定義的簡單對象,其中的文檔的描述信息將包括文檔名(Document Name)、文檔類型(Document Type)和文檔長度(Document Length)組成。文檔內(nèi)容則被定義成一個二進(jìn)制數(shù)組。
圖3 聚合對象的XML文檔結(jié)構(gòu)圖Fig.3 Document structure for aggregation object
例如,一個名為“MyDocument.doc”的Word文檔將被轉(zhuǎn)換成如下的XML文檔。
此時,文檔對象的XML文檔定義如下所示。
<DocID catology=/”User Document/”>
<Doc Name> MyDocument</Doc Name>
<Doc Type> DOC </Doc Type>
<Doc Length> Length of MyDocument.DOC </Doc Length>
<DocContent >ContentofMyDocument.DOC </Doc Content>
<DocID>
2.2.1 組件的體系結(jié)構(gòu) 本通訊組件的整體結(jié)構(gòu)被設(shè)計成一個三層的體系結(jié)構(gòu),分為應(yīng)用界面、數(shù)據(jù)轉(zhuǎn)換和傳輸控制三個層次。其底層使用TCP/IP通訊協(xié)議。
(1)應(yīng)用界面層(Application Interface)。客戶程序負(fù)責(zé)組織和管理通訊數(shù)據(jù),通過應(yīng)用界面層提供的外部接口,傳輸和接收用戶的數(shù)據(jù)對象。
圖4 對象通訊組件的體系結(jié)構(gòu)Fig.4 Architecture of component
(2)數(shù)據(jù)轉(zhuǎn)換層(Data Mapping)。發(fā)送數(shù)據(jù)時,負(fù)責(zé)將數(shù)據(jù)對象序列化成相應(yīng)的XML文檔。接收數(shù)據(jù)時,負(fù)責(zé)根據(jù)接收到的XML文檔創(chuàng)建相應(yīng)的數(shù)據(jù)對象。
(3)數(shù)據(jù)傳輸層(Data Transform)。將XML文檔視為二進(jìn)制流,使用TCP/IP協(xié)議實現(xiàn)XML文檔二進(jìn)制流的傳輸過程。
2.2.2 XML數(shù)據(jù)接口 為實現(xiàn)數(shù)據(jù)對象到XML文檔的轉(zhuǎn)換,組件對外提供了一個名為IObjectForXML的接口,通過這個接口,客戶程序可以定義可序列化成XML文檔的數(shù)據(jù)對象。不同的是,這個接口被定義成一個抽象類。IObjectForXML接口的具體定義如圖5所示。
圖5 可通訊的數(shù)據(jù)接口類圖Fig.5 Class Diagram for Data Object needs to be transferred
為支持不同的數(shù)據(jù)通訊類型,組件中還同時定義了可通訊的實體對象類(IEntityForXML)、聚合類(IAggregationForXML)、文檔類(IDocument-ForXML)和即時消息類(IMessageForXML)等四個派生類。這些類分別為不同的可通訊數(shù)據(jù)對象給出了一個更具體的序列化接口。
實體對象類僅包含具有簡單數(shù)據(jù)類型的屬性,它需要實現(xiàn)IObjectForXML接口的全部方法。
聚合對象主要由一組可通訊的數(shù)據(jù)對象構(gòu)成的集合組成。每個聚合對象類均必須實現(xiàn)IObjectForXML接口。在用戶定義的具體派生類中,只需要實現(xiàn)接口的WriteMemberTo和ReadMemberFrom兩個方法即可。
與聚合實體對象類相似,復(fù)合對象類的定義也要求其數(shù)據(jù)成員必須是可通訊的。
可通訊的文檔對象類定義了一組與文檔有關(guān)的屬性,這些屬性給出了文檔的元數(shù)據(jù)描述,其序列化過程與實體類相似,用戶可以直接使用,也可以按照模板方法模式[19]繼承這個類,以實現(xiàn)個性化的文檔通訊過程。
2.2.3 簡單工廠接口(ISimpleFactory)設(shè)計 簡單工廠接口(ISimpleFactory)用于定義在通訊過程中根據(jù)接收到的XML數(shù)據(jù)創(chuàng)建數(shù)據(jù)對象所需要的操作,這個接口的具體實現(xiàn)必須由用戶提供,可以用單件模式[19]實現(xiàn)。
2.2.4 名字空間(Naming Space)設(shè)計 名字是指本組件為封裝各種數(shù)據(jù)對象使用的標(biāo)識符,用于標(biāo)識XML文檔中存儲的數(shù)據(jù)。名字空間則是指組件使用的所有名字構(gòu)成的集合,稱為名字空間。
組件的內(nèi)部名字空間定義于組件的內(nèi)部,對用戶透明。用戶名字空間由用戶自行定義,服從于用戶系統(tǒng)的命名空間。二者處于系統(tǒng)的不同層次,不存在命名沖突問題。
組件內(nèi)部名字主要包括“數(shù)據(jù)對象的分類標(biāo)識”和“文檔類的屬性標(biāo)識”,其具體定義可參見表1和表2。
用戶自定義的名字空間,用于標(biāo)識用戶數(shù)據(jù)對象,它依賴于用戶系統(tǒng)的類空間或?qū)ο罂臻g,是用戶自定義的類和屬性標(biāo)識符等符號構(gòu)成的集合,主要用于數(shù)據(jù)文檔的序列化過程,是數(shù)據(jù)對象進(jìn)行通訊的基礎(chǔ),也是一個應(yīng)用層的通訊協(xié)議。
表1 數(shù)據(jù)對象的分類標(biāo)識Tab.1 Classifier for data objects
表2 文檔類的屬性標(biāo)識Tab.2 Classifier for attributes of data object
組件對外的功能接口集中在組件的應(yīng)用接口層,它負(fù)責(zé)組件與其客戶程序之間的交互。本組件的應(yīng)用接口設(shè)計如圖6所示。
圖6 應(yīng)用接口設(shè)計Fig.6 Class diagram for application interface
UserList是當(dāng)前用戶列表。_CurrentUser表示系統(tǒng)當(dāng)前用戶。_pListener偵聽線程對象的引用。_MessageQueue實時一個隊列,用于緩存通訊過程接收到的數(shù)據(jù)對象。_DataTransfer:則是一個數(shù)據(jù)轉(zhuǎn)換器,負(fù)責(zé)數(shù)據(jù)格式的轉(zhuǎn)換
組件的主要操作包括LogOn、LogOut、SendTo和BroadCasting等。組件的主要事件則包括Received an Immediate Message和Received an Object等。
組件定義了DataMapper類以實現(xiàn)數(shù)據(jù)對象與XML的相互轉(zhuǎn)換功能。具體設(shè)計如圖7所示。
圖7 DataMaper類定義Fig.7 Class diagram for DataMaper
DataMapper類的主要屬性包括:一個用于創(chuàng)建數(shù)據(jù)對象的簡單工廠對象(_SimpleFactory)。一個數(shù)據(jù)轉(zhuǎn)換器(_ DataTransfer)和一個數(shù)據(jù)偵聽線程對象(_DataListener)。
主要操作包括:ConvertObjectToXML(DataO-bject:IObjectForXML,DestHost:String)//將數(shù)據(jù)對象轉(zhuǎn)換成XML文檔,并發(fā)送出去。
ParseXMLDocumen(XMLDocument:XMLDocument)//解析接收到的文檔,并根據(jù)接收到的文檔內(nèi)容創(chuàng)建相應(yīng)的數(shù)據(jù)對象。
FiretheEventForDataArrived(Object:IObject-ForXML)//激活接收到數(shù)據(jù)對象事件。
數(shù)據(jù)傳輸層主要負(fù)責(zé)XML文檔數(shù)據(jù)的傳輸。發(fā)送數(shù)據(jù)時,將接收到的XML文檔,打包成流數(shù)據(jù),并將流數(shù)據(jù)發(fā)送到指定的主機(jī)。接收數(shù)據(jù)過程則與之相反。
2.5.1 數(shù)據(jù)傳輸層的結(jié)構(gòu) 數(shù)據(jù)傳輸層由數(shù)據(jù)發(fā)送對象(Data Ttransformer)和數(shù)據(jù)幀聽對象(Data Listener)兩個對象組成。數(shù)據(jù)發(fā)送對象隨系統(tǒng)運行的需要動態(tài)創(chuàng)建并發(fā)送數(shù)據(jù);數(shù)據(jù)偵聽對象則是一個靜態(tài)對象,負(fù)責(zé)監(jiān)聽并接受數(shù)據(jù)。
2.5.2 數(shù)據(jù)發(fā)送過程 數(shù)據(jù)發(fā)送過程負(fù)責(zé)發(fā)送用戶數(shù)據(jù),發(fā)送之前,數(shù)據(jù)被打包成數(shù)據(jù)包格式:文檔類型(4個字節(jié))+數(shù)據(jù)長度(8個字節(jié))+數(shù)據(jù)內(nèi)容。
數(shù)據(jù)發(fā)送過程由Datatransfer類的SendData方法實現(xiàn)。其基本步驟如下:
(1)將數(shù)據(jù)對象DataObject轉(zhuǎn)換成XML文檔;
(2)按字節(jié)計算XML文檔的長度;
(3)建立到通訊服務(wù)器的連接,依次將XML文檔的標(biāo)識、長度和內(nèi)容發(fā)送到通訊服務(wù)器;
(4)通訊服務(wù)器根據(jù)通訊的類型,將數(shù)據(jù)轉(zhuǎn)發(fā)到相應(yīng)的結(jié)點;
(5)結(jié)束。
2.5.3 數(shù)據(jù)接收過程 接收數(shù)據(jù)過程由單獨一個線程實現(xiàn)。其執(zhí)行過程如下:
(1)建立到通訊服務(wù)器的連接;
(2)重復(fù)下列步驟,直到本線程終止:
①啟動偵聽程序,等待接收數(shù)據(jù);
②開始接收數(shù)據(jù)流;
③接收并獲取XML文檔標(biāo)識和XML文檔長度;
④按XML文檔長度接收數(shù)據(jù),并存放在一個臨時文檔中;
⑤將接收到的XML文檔保存在隊列中,通知數(shù)據(jù)映射層接收到一個XML文檔;
(3)關(guān)閉連接,結(jié)束接收過程。
在鞍鋼鐵運公司的鐵路運輸ERP系統(tǒng)項目[20]中,應(yīng)用了包括此組件在內(nèi)的多種組件成功地構(gòu)建起了一個基于網(wǎng)絡(luò)的分布式車輛調(diào)度平臺,解決了項目中的實時信息交換方面的技術(shù)難題,如車輛分布信息的實時更新、車輛調(diào)度作業(yè)技術(shù)圖表的實時生成自動與刷新、作業(yè)區(qū)車流統(tǒng)計的自動生成和車輛調(diào)度作業(yè)命令的實時傳遞,為項目的成功奠定了堅實的技術(shù)基礎(chǔ)。
鞍鋼鐵路運輸ERP系統(tǒng)的目標(biāo)是對該公司的整個運輸過程實現(xiàn)有效的控制和管理,提高該公司的運輸效率和管理水平,提高企業(yè)的經(jīng)濟(jì)效益和社會效益。
該公司的鐵路運輸指揮系統(tǒng)是一個由90多個結(jié)點構(gòu)成的具有層次結(jié)構(gòu)的城域網(wǎng)絡(luò)系統(tǒng),其網(wǎng)絡(luò)結(jié)點被劃分成總調(diào)度室、車站和作業(yè)區(qū)等三級調(diào)度結(jié)點。其中的低層結(jié)點(作業(yè)區(qū)調(diào)度)負(fù)責(zé)完成各種具體的車輛調(diào)度作業(yè),如裝車、卸車、編組、調(diào)車和行車等。中層結(jié)點(車站調(diào)度)負(fù)責(zé)指揮車站內(nèi)各作業(yè)區(qū)之間的車輛調(diào)配和運轉(zhuǎn)、還要負(fù)責(zé)組織完成與其他車站之間的行車作業(yè)。中層結(jié)點還要監(jiān)控轄區(qū)內(nèi)各個作業(yè)區(qū)的工作狀態(tài)。高層結(jié)點(總調(diào)度室)不僅要負(fù)責(zé)指揮、控制和管理轄區(qū)內(nèi)各車站以及各個作業(yè)區(qū)的各種調(diào)度作業(yè)和行車作業(yè),還要重點關(guān)注主要作業(yè)區(qū)的車輛分布、車輛調(diào)度作業(yè)以及車小時統(tǒng)計等具有可視化特征的信息。另外,系統(tǒng)中任何兩個結(jié)點之間還需要實時傳遞車輛預(yù)報、車輛確報和車流信息。最后,低層結(jié)點與機(jī)車之間還需要實時地傳遞各種車輛調(diào)度命令信息。這些特點決定了這個運輸系統(tǒng)所具有的多樣化的實時性要求,同時也決定了該系統(tǒng)結(jié)構(gòu)的復(fù)雜性。
為了解決系統(tǒng)的復(fù)雜性問題,使用了一種比較新的面向組件的軟件體系結(jié)構(gòu)設(shè)計。將系統(tǒng)中的車輛分布、車輛調(diào)度作業(yè)技術(shù)圖表、列車運行圖和數(shù)據(jù)通訊等主要模塊設(shè)計成可獨立修改和擴(kuò)充的二進(jìn)制組件。這個體系結(jié)構(gòu)有效地降低了系統(tǒng)的復(fù)雜性。不僅充分地實現(xiàn)了系統(tǒng)的各項需求,同時也為系統(tǒng)帶來了更好的可維護(hù)性和可重用性。圖8描述了這個鐵路運輸ERP系統(tǒng)的軟件體系結(jié)構(gòu),其中的組件(Data Communication Component)就是本文所描述的數(shù)據(jù)通訊組件。
在這個體系結(jié)構(gòu)中,數(shù)據(jù)通訊組件(Data Communication Component)與用戶界面層(User Interface Layer)中的車輛分步組件(Traffic Distribution)、調(diào)度圖表組件(Scheduling Diagram)、班計劃(Auxiliary Planning)以及系統(tǒng)維護(hù)(System Maintain)等組件之間具有比較密切的依賴關(guān)系。當(dāng)某個組件改變了一個結(jié)點的狀態(tài),如完成某個車輛調(diào)度作業(yè)、修改了某項場地信息的修改時,該組件將及時通過數(shù)據(jù)通訊組件向相關(guān)結(jié)點發(fā)出或廣播一個更新消息,這使得收到更新消息的結(jié)點可以及時有效更新其相關(guān)的狀態(tài)。從而使系統(tǒng)得以實時地維持在一個統(tǒng)一并且一致的狀態(tài)。
另外,系統(tǒng)中還包括了其它一些需要使用數(shù)據(jù)通訊組件的組成部分,如結(jié)點之間傳遞的非結(jié)構(gòu)化的短消息和文檔等方面的數(shù)據(jù)通訊等,這些部分的應(yīng)用取代了原系統(tǒng)中使用的某些依賴于傳統(tǒng)電話的通訊方式。
圖8 數(shù)據(jù)通訊組件的應(yīng)用實例Fig.8 An implicational example of Data Communication Component
基于XML文檔技術(shù)的數(shù)據(jù)通訊組件的應(yīng)用,實現(xiàn)了鐵路運輸ERP系統(tǒng)中的非常重要的實時性目標(biāo),實現(xiàn)了整個系統(tǒng)中,各結(jié)點的車輛分布、車輛調(diào)度技術(shù)作業(yè)圖表和列車運行圖以及相應(yīng)的統(tǒng)計圖表等信息的整體一致性,使得整個系統(tǒng)可以全天候運行。
目前。這個項目已經(jīng)得到了成功的實施和應(yīng)用,并創(chuàng)造取得了巨大的經(jīng)濟(jì)效益和社會效益。并分別獲得了鞍山鋼鐵集團(tuán)、鞍山市和冶金部等部門頒發(fā)的多個科技獎項。
在基于組件的分布式ERP系統(tǒng)中,基于XML文檔技術(shù)的數(shù)據(jù)通訊組件能夠比較充分地滿足系統(tǒng)運行時所需要的各種數(shù)據(jù)通訊需求。從而支持分布式系統(tǒng)所需要的信息更新、界面刷新、實時統(tǒng)計以及實時數(shù)據(jù)交換方面的需求。
在這個基于XML文檔技術(shù)的數(shù)據(jù)通訊組件中,一方面,XML文檔技術(shù)的應(yīng)用降低了數(shù)據(jù)通訊雙方的數(shù)據(jù)耦合。使傳統(tǒng)的數(shù)據(jù)通訊方式中存在的數(shù)據(jù)的類型、傳輸順序、數(shù)據(jù)內(nèi)容和數(shù)據(jù)格式方面耦合降低到數(shù)據(jù)名字空間方面的耦合。另一方面,組件技術(shù)的應(yīng)用,不僅有效地降低了體系結(jié)構(gòu)內(nèi)部各個組件之間的耦合,即使各組件之間的依賴降低到接口依賴那樣最低程度的依賴。而且也可以獨立地修改和更新各個組件從而提高軟件的可維護(hù)性。
實踐證明,本文提出的組件可以有效地解決項目開發(fā)中與實時性方面有關(guān)的技術(shù)難題,更可以有效地降低軟件的開發(fā)和維護(hù)成本,更適用于具有一定規(guī)模、結(jié)點較多且結(jié)點之間又有較多交互的分布式ERP系統(tǒng)。
[1]朱宗乾,劉慶.ERP實施領(lǐng)域研究熱點國內(nèi)外比較研究[J].情報雜志,2015(3):125-131.
[2]李巖,陶樹平.ERP系統(tǒng)架構(gòu)的設(shè)計與實現(xiàn)[J].計算機(jī)工程,2003,29(12):153-155.
[3]許丹奇,徐艷玲.利用.NET和MSMQ技術(shù)實現(xiàn)分布式應(yīng)用程序[J].微計算機(jī)應(yīng)用,2007,28(6):593-596.
[4]王正桓,蔡明.MS.NET Remoting的分布式技術(shù)應(yīng)用研究[J].計算機(jī)應(yīng)用與軟件,2005,22(3):140-142
[5]盧彬,陳家琪.ERP中基于COM+的三層財務(wù)系統(tǒng)的設(shè)計與實現(xiàn)[J].儀器儀表學(xué)報,2006,27(z3):2506-2507.
[6]顧洪軍,張佐,吳秋峰,等.網(wǎng)絡(luò)控制系統(tǒng)的實時特性分析及數(shù)據(jù)傳輸技術(shù)[J].計算機(jī)工程與應(yīng)用,2001,37(6):38-40.
[7]陳少波,桂衛(wèi)華.基于Internet網(wǎng)過程控制遠(yuǎn)程監(jiān)控系統(tǒng)實時性研究[J].信息技術(shù),2008,32(3):31-33.
[8]李偉平,范玉順.工作流技術(shù)在ERP系統(tǒng)中的應(yīng)用[J].高技術(shù)通訊,2004,14(8):56-61.
[9]宋利康,崔德剛,周儒榮,等.企業(yè)模型與ERP系統(tǒng)間映射技術(shù)[J].航空學(xué)報,2007,28(6):1513-1520.
[10]魏代森,李學(xué)慶,張家重,等.協(xié)同制造環(huán)境下ERP軟件演化及其實現(xiàn)[J].計算機(jī)集成制造系統(tǒng),2016,22(6):1558-1569.
[11]陳伯成,葉偉雄,孫靜,等.企業(yè)資源規(guī)劃ERP軟件簡化的流程集成模型[J].清華大學(xué)學(xué)報:自然科學(xué)版,2003,43(6):721-724.
[12]黃雙喜,范玉順.基于工作流的ERP系統(tǒng)開發(fā)與實施[J].計算機(jī)集成制造系統(tǒng),2004,10(2):139-143.
[13]孔令波,唐世渭,楊冬青,等.XML數(shù)據(jù)的查詢技術(shù)[J].軟件學(xué)報,2007,18(6):1400-1418.
[14]陳君鵬,廖湖聲,蘇航,等.面向XQuery語言的XML樹模式識別方法[J].計算機(jī)研究與發(fā)展,2013,50(z1):12-22.
[15]李發(fā)金,廖湖聲,高紅雨,等.XML查詢中具有位置謂詞的樹模式匹配方法[J].計算機(jī)研究與發(fā)展,2013,50(z1):1-11.
[16]蔡文青,李凡長.基于JMS和XML的數(shù)據(jù)交換模型設(shè)計[J].計算機(jī)工程與設(shè)計,2007,28(14):3529-3531.
[17]梅宏,陳鋒,馮耀東,等.ABC:基于體系結(jié)構(gòu)、面向構(gòu)件的軟件開發(fā)方法[J].軟件學(xué)報,2003,14(4):721-732.
[18]張世琨,張文娟,常欣,等.基于軟件體系結(jié)構(gòu)的可復(fù)用構(gòu)件制作和組裝[J].軟件學(xué)報,2001,12(9):1351-1359.
[19]GAMMA E,HELM R,JOHNSON R,et al.Design patterns:elements of reusable object-oriented software[M].Addision-Wesley,1995:144,360.
[20]孫學(xué)波,李昕妍.分布式鐵路車輛分布組件的設(shè)計與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2014,35(1):163-170.
[][]
Data communication component based on XML document techniques
SUN Xuebo,YANG Mingwei
(School of Computer Software,University of Science and Technology Liaoning,Anshan 114051,China)
A new data transmission technique based on TCP/IP protocol and using the XML document format was proposed and packaged to be a reusable software components,in order to solve the technological problems such as information synchronization,real-time update interface and real-time data exchange between different nodes within a distributed ERP system,and also in order to reduce the coupling between various components of software and also to enhance the reuse of the software.The data communication component is able to be used for data communication within the distribute ERP system,based on XML XML document technology and TCP/IP technique.The basic requirements about real-time information processing(RIP),real-time information exchange(RIE)and other aspects within the ERP system were analyzed in this paper.The concrete design data communication component based on XML were introduced in detail,and the practical applicational situation of this component in the ANSHAN Iron&STEEL Corporation’s Railway Transportation ERP system was introduced briefly.
XML;real-time information process;real-time information exchange;component for data communication;serialization
April 3,2017)
TP311.5
A
1674-1048(2017)03-0217-09
10.13988/j.ustl.2017.03.012
2017-04-03。
2012年鞍山市科技基金項目。
孫學(xué)波(1964—),男,遼寧鞍山人,教授。