系統(tǒng)總體框架如所示,系統(tǒng)架構設計為五層模型,從下到上分別為數(shù)據(jù)層、適配器層、服務層、業(yè)務流程層與表示層。
高效的自動化離不開大量的數(shù)據(jù),本系統(tǒng)的數(shù)據(jù)主要來自于兩類,一類是來自企業(yè)原有的信息化應用系統(tǒng),另外一類是來自企業(yè)的外部,如合作單位的文檔數(shù)據(jù)等。這些數(shù)據(jù)的來源、類型比較復雜,有可能來自于數(shù)據(jù)庫,也有可能是文件類型的數(shù)據(jù)(如Excel、PDF、XML數(shù)據(jù)等),甚至可能是消息類型的數(shù)據(jù)(JMS),所以在設計系統(tǒng)的數(shù)據(jù)層的時候要充分考慮到如何處理數(shù)據(jù)的異構性,本系統(tǒng)的數(shù)據(jù)采取統(tǒng)一的XML格式來描述各種異構數(shù)據(jù),以便于數(shù)據(jù)的發(fā)布、交換與共享。
SDO是目前流行的數(shù)據(jù)編程模型,利用SDO提供的數(shù)據(jù)中介服務(DMS),在適配層中應用程序可以使用一組API來訪問和操作各種異構的數(shù)據(jù)源,這樣做的好處是可以有效屏蔽低層異構數(shù)據(jù)源的技術細節(jié)。
在服務層中,將系統(tǒng)的各種業(yè)務功能采用SCA標準封裝成一系列不同粒度的Web服務,并通過預定義的接口將這些Web服務進行有效組織,這樣做的好處是可以使客戶端能以統(tǒng)一的方式調用這些Web服務。封裝服務完畢后,通過ESB服務總線對服務進行集成與統(tǒng)一管理。
在業(yè)務流程層中,通過組合排列服務層中封裝好的各種Web服務,構建出各種業(yè)務流程,實現(xiàn)符合系統(tǒng)需求的業(yè)務功能。
表示層的主要功能是為各種終端提供統(tǒng)一的接口來訪問系統(tǒng)界面。考慮到系統(tǒng)要求在分布式的異構環(huán)境下進行工作,而且表示層上顯示的業(yè)務數(shù)據(jù)可能來自于不同的數(shù)據(jù)源,表示層采用Portal體系結構而不是傳統(tǒng)的BS架構來進行設計。
4系統(tǒng)實現(xiàn) 4.1系統(tǒng)服務設計與實現(xiàn) 根據(jù)上述的功能模塊設計,將各個功能模塊劃分成不同的Web服務,為各功能模塊對應的Web服務和Web方法。
以DocumentManageService為例說明服務的設計:DocumentManageService服務對應公文管理模塊,可以通過對應Web服務下的Web方法來實現(xiàn)對接收到或已發(fā)送的公文進行如查詢、排序、修改、群發(fā)等操作。
4.2系統(tǒng)服務組合與調用 Web服務的設計應該盡可能保持獨立性與原子性,以便于不同的Web服務組合起來表示復雜的業(yè)務邏輯。例如要實現(xiàn)員工請假這一業(yè)務邏輯,就分別需要調用OtherManageService服務中的請假方法AskForLeave()、IndividualOffice-
-WorkService服務中的發(fā)送便簽方法SendNote()與WorkManageService服務中的工作審批方法WorkSign()。
本系統(tǒng)Web服務的調用采取添加Web引用的形式來實現(xiàn),這種方式與類成員方法的調用類似,在調用代碼中定義一個服務的實例后,就可以通過這個實例來調用該服務的方法。
4.3系統(tǒng)服務發(fā)布和管理 考慮到企業(yè)OA系統(tǒng)的安全性與用戶群體的針對性,本系統(tǒng)通過建立私有的UDDI,將相應的權限賦予Web服務的請求者,實現(xiàn)對Web服務的注冊與管理。
4.4系統(tǒng)服務的訪問與調用 因為本系統(tǒng)的客戶端程序主要是部署在移動終端設備上的,本節(jié)將以公文信息查詢業(yè)務流程為例,簡要說明如何訪問調用Web服務。
首先,依據(jù)使用WSDL(Web服務描述語言)定義的公文信息查詢業(yè)務對應Web服務的契約文件,使用JDK6.0版本自帶的工具wsgen與wsimport生成本地代理類;接著,客戶端應用程序通過本地生成的代理類,獲取符合約定接口定義的對象;然后,通過該對象調用相應的
Web服務方法來獲取相應的XML格式數(shù)據(jù);最后使用SAX(simpleAPIForXML)技術對數(shù)據(jù)進行解析后,顯示在移動終端的界面上,為程序運行效果示意圖。
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com