任媛媛,溫 明,鄭長青
(新疆電子研究所有限公司 新疆 烏魯木齊830013)
新疆維吾爾自治區職稱管理系統是基于WEB的在線工作流系統。職稱管理系統主要包括3個子系統,一是職稱申報系統。基于互聯網的個人職稱申報系統,主要實現職稱申報人網上填報申請書,并完成申請書網上審核的過程。網上職稱申報過程,也是職稱申請書被流轉、審核的過程。主要內容:個人注冊、職稱申報、數據流傳審核、用戶權限管理和在線定稿打印等。二是職稱評審會議系統。基于局域網絡的評審會議系統,主要實現專家網上召開職稱評審會議。主要內容:會議組織管理、職稱申報人材料審核管理、專家管理、打分管理、投票管理、評審結果打印管理、用戶權限管理及接口管理等。三是辦公管理信息系統,作為職稱申報系統的登錄入口,也是職稱申報業務的重要窗口。網站包括以下內容:系統操作指南、職稱評審相關通知公告、職稱評審管理辦法及任職文件、各專業評審委員會簡介、職稱公示板塊及各專業評審會議安排模塊等。3種系統以內部辦公系統為核心,分別通過獨立的數據包將相應的信息結合起來。
職稱評審會議系統能夠實現網上審閱申報材料、按照申報資格量化賦分表打分、得分統計、按會議要求靈活設置投票模式、評審結果打印等功能。職稱評審會議系統能夠實現現場統計打分、投票功能,同時評審結果現場公示,更體現了職稱評審中“公開、公平、公正”的原則。
組件是一個獨立的可傳遞的操作集合,是軟件開發中一個可替換的軟件單元,它封裝了設計決策,具有特定的功能。這個封裝體常被我們稱作組件。每個組件會提供一些標準且簡單的應用接口,允許使用者設置和調整參數和屬性。用戶可以將不同來源的多個組件有機地結合在一起,快速構成一個符合實際需要(而且價格相對低廉)的復雜(大型)應用程序[1]。
當前主流的分布式組件技術標準主要有3個:Microsoft公司的.NET技術,OMG組織制訂的CORBA規范以及SUN公司的JavaBean/EJB標準。.NET組件技術作為微軟推出的新一代組件技術革命,在組件化開發方面有著自己獨到的設計。.NET組件開發是基于.NET Framework的,在設計體系結構上采用了分層的設計模式,使跨平臺成為了可能,且提供了內容極其廣泛的類庫,從多種角度簡化了開發過程,并且支持混合語言開發,使組件的同步分布開發得到了實現。在.NET平臺中,組件是指實現System.ComponentModle.IComponent接口的一個類,在Visual Studio.NET環境下開發的類經過編譯后生成DLL文件,就是我們需要的組件的形式[2]。鑒于以上.NET的各種優勢以及C#構件化的設計思想,本文的實例采用VisualStudio2008作為前端的軟件開發平臺,文中的示例代碼選擇編程語言 C#。
職稱申報系統中最主要的功能是實現數據 (申請書)的自動流轉。為了提高系統的重用性,引入組件技術來搭建系統框架,將系統中功能較獨立,需要重復使用的業務功能模塊封裝成組件或引入相應的成熟組件。由于組件的接口明確,對組件的改變不會影響到系統的其他部分,從而在最小改動范圍內實現對系統進行擴充及改變。相比其它組件技術規范,Microsoft的.net作為一種產品,已經集成到Windows操作系統中,用戶可以直接使用??紤]到本系統的運行平臺是Windows系統,系統選擇使用.net系統中的組件全部遵循這一標準。
基于組件技術建立系統的關鍵在于組件接口(interface)的定義及實現。從概念上說,接口是一組較高層次的、抽象的系統功能的集合,也是一組模型必須實現的功能的“契約”的集合。接口本身并沒有規定某一功能具體應如何實現,而僅僅指出了作為一個模型,從抽象的意義上應當實現的具有共性的功能。從另一角度來說,接口具有類似于硬件元器件中的接線端子的功能,起到對象間的連接點的作用[3]。接口在保留面向對象的封裝的同時,也簡化了對象間的通信過程。通過確立了通用的組件接口后,就可得到一個靈活的系統架構,系統的主程序僅需對抽象的接口進行操作,而無須過多考慮提供該接口具體實現的實際功能。
下面用一個例子來簡單介紹下本系統中接口實現的思路。接口的實現其實就是定義一個類繼承于該接口,從而實現接口與實現的分離。
以開會子系統中的投票功能為例說明IAtoolBorrow接口的ExecuteBorrow方法的實現情況,實現代碼如下:
Public class AtoolBorrow:IAtoolBorrow{
Public void ExecuteBorrow(string toolID,string staffID,
string equiID){
if(toolID==null)return;
string p_tool_borrow=”sfrrms.pkg_tools.p_borrow”;
//引號中內容為投票功能在數據庫中的
存儲過程名
OracleParameter[]ora_para={toolID,staffID,equiID};
DataServer.ExecuteNonQuery(p_tool_borrow,ora_para);
//執行投票功能,其中 DataServer.ExecuteNonQuery是
數據執行組件中定義的方法
}
}
執行“生成最終結果”,在該類庫文件的 bindebug目錄下生成一個dll文件。
在設計系統時,為適應系統需求的變化,按功能設計了3種類型的組件,分別是基礎組件、組合組件和行業性組件?;A組件處于平臺最低層,是整個系統的基礎,主要面向數據管理,提供基本的交互過程,并以靈活的方式與數據庫系統連接;組合組件由基礎組件構造而成,面向通用功能,用以簡化用戶開發過程,如顯示工具組件、選擇工具組件、編輯工具組件、屬性瀏覽器組件等等,它們之間的協同控制消息都被封裝起來,這一級組件經過封裝后,使二次開發更為簡單,一個編輯查詢系統,若用基礎平臺開發,需要編寫大量的代碼,而利用組合組件,只需幾句程序就夠了;行業性組件為特定應用領域的組件,它抽象出行業應用的特定算法,固化到組件中,可進一步加速開發過程。行業性組件通過接口定義的方法提供服務,當這些特定應用功能被封裝起來后,開發者的工作就可以簡化為根據需求設置輸入數據類型、目標參數及相關評價指標的組合[3]。
下面通過本系統中設計的幾個行業性組件,來說明本系統中組件的設計思路。
流程控制組件:該組件是職稱管理系統工作流程組件的核心,它對于職稱申請書審核流程中各個工作節點來說具有一定的通用性,負責把所有節點中復用的已有組件信息整合到一起來控制業務流程。系統開發中可以為此組件添加流程名稱、前步編號、本步編號、下步編號、流程狀態表名、本步表名、前步表名等屬性,使之與其他組件關聯起來。這些編號由系統產生并保存于數據庫中,系統為這些信息創建特定的表,在用戶處理過程中,需要讀取這些信息,系統根據表名從數據庫中讀取相應的字段。
如從數據庫調用表面信息時可以下面的語句:
Dim Ftrs As MapXLib.Features
pt.Set x1,y1
'Get feature at user click location
Set ftrs=editingLayer.SearchAtPoint(pt)
If ftrs.Count=1 Then
'Set feature to global varaiable and display object info
form
Set curFeature=ftrs(1)
objectInfoFrm.Show 1
End If
權限管理組件:該組件用于職稱管理系統中不同角色用戶的操作權限,與流程控制組件關系密切,系統用戶以不同賬號登錄系統通過調用相應的角色權限控制組件,來控制系統數據流向及用戶操作規范。
界面管理組件:該組件是系統與用戶交互的各種組件的總和。在職稱管理系統中職稱申請書和量化賦分的實現把此組件應用發揮到極致。在職稱申報中,申報不同專業、不同資格的申請人填寫的申請書模板是不同的,利用組件技術將申請書模塊按申報資格要求進行組合,申請人編輯的申請書與申報資格掛鉤,這就實現了系統的一個特色:個性化申請書的制作。量化賦分表,是專家評委對申報人進行綜合素質能力評定的標準,根據不同專業、不同資格、不同的單位級別(按自治區職稱評審辦法,職稱評審條件向縣及以下基層單位放寬)打分標準也并非一刀切,專家打分界面利用組件功能可根據申報人的自身條件自動調用相應的打分標準[4]。
如按申請書類別在其屬性中插入集對象時語句如下:
Dim newObj As CategoryXLib.Feature
Dim pt As New CategoryXLib.Point
Case
CUSTOM.POINT.TOOL
'Create symbol feature
pt Set x1.y1
Set newObj=Categoryl.FeatureFactory.CreateSymbol
(pt,Map1.DefaultStyle)
'Add the feature to the current edit layer
editingLayer.AddFeature newObj
報表組件:該組件負責從數據庫中讀取數據,并將返回的數據打印成需要的報表表單。
數據訪問組件:該組件負責從數據庫中檢索數據并將實體數據保存回數據庫中。除此之外,它還包括實現數據相關操作所需的所有業務邏輯組件和其他基礎組件、組合組件等,在此不再一一累述。
系統在結構上采用微軟Windows DNA 3層結構來設計和實現,即將系統分為表現層、業務層和數據層,如圖1所示。
圖1 系統結構圖Fig.1 System structure chart
數據層為后臺數據庫,主要包括數據的內容、組織以及存貯方式;業務層構成了應用的業務邏輯規則,系統的業務處理全部在該層中進行,它是應用的核心,是由組件構成,當系統在不同交通部門遷移時,改變只局限于該層;表現層為應用的客戶端部分,它負責與用戶進行交互,它是在業務層的.NET提供的接口上構建成功的系統具體應用。
利用組件技術開發的職稱管理系統,主要基于系統本身及組件技術的重用性(公用/通用)、可定制性(設置參數和屬性)、自包容性(模塊相對獨立,功能相對完整)和互操作性(多個組件可協同工作)考慮,可以簡單方便地利用可視化工具來實現組件的集成,另外,本系統利用組件技術很好的解決了各個子系統之間的集合問題。
將組件技術之一的CORBA模型用于職稱評審管理系統中,主要考慮的兩個方面的原因。
3.1.1 分離Client和Server
在Internet環境中并沒有固定的Client和Server的區分,只有服務請求端和服務提供端的區別,因此利用組件技術開發職稱管理系統的第一步是突破Client和Server的權限劃分。提取Client和Server的共有屬性,并用面向對象方法將這些共有實體組織成對象執行體(Object Implementation)。服務請求端向ORB發送請求信號,并由ORB搜索對象執行功能,并將結果傳輸回服務請求端。同時,按照客戶端所請求的功能激活組件服務,完成所需功能[5]。如圖2所示。
圖2 請求代理流程Fig.2 Request the proxy process
在分離Client和Server的基礎上,使用IDL語言重新定義請求端和ORB、對象執行功能(定義概念模型上的操作)和ORB的接口,使ORB獨立于服務請求端的設計語言。
3.1.2 實現各子系統集成
分離Client和Server后,將分離出的功能模塊重新組合,構成局部對象執行體和局部ORB模型,實現計算機互操作和統一的組件調度,建立局部環境中的CORBA總線,并將原本屬于不同流程的數據流重新規劃。如:將量化打分、專家投票、文本打印等功能集成到網絡終端上,并將可能提供服務的終端互聯,組成內部ORB網絡。終端機只要使用TCP/IP協議向局部ORB網絡提出請求,ORB在接受請求后,啟動代理事務,自動搜索組件位置,使之與請求端鏈接,并遠程激活組件服務。局域網內部具有相同特征的資源集成,形成組件域。如假設有x個專家對y個職稱申請人的申請進行職稱評審,評職信息通過ORB,CORBA系統按申請的科目將請求信息傳輸到相關科目所在的域,第二級ORB系統(域內ORB)自動搜索空閑的職稱申請,并與申請的科目建立連接[6]。顯然,劃分域可以使搜索的目的性增強,減少無用請求信息的傳輸,實現并行處理,負載平衡。
相對于復雜的CORBA技術而言,.NET的優勢在于與現有操作系統接合緊密,實用性、可靠性強,使用簡便,在Microsoft的產品中廣泛應用。應用.NET技術開發組件,只需開發組件的用戶界面和數據庫存儲結構,將組件界面通過API調用組件服務,組件功能、進程完全。由操作系統控制,因此.NET的作用是用戶界面和數據庫中間的代理。由于Internet的發展,數據分布式存儲得到廣泛應用,組件開發者往往無法確定數據庫的位置,因此Microsoft推出基于分布式的XML技術,形成FORM+XML+STORAGE模型。無需修改FORM層的調用,XML在實現.NET組件功能的同時根據FORM層提供的數據庫IP地址,自動連接數據庫。XML也允許遠程組件調用,XML將根據用戶提供的目標IP搜索組件激活,并將并行計算的結果(可能是遠程數據庫的查詢集合)送到用戶端。在開發過程中無需關心數據庫結構、開發模型等技術參數,只要設計本系統的組件模型即可,在實現CSCW的同時大大降低開發難度,在系統運行過程中將數據分布式存儲,有利于數據安全,實現負載平衡,提高系統效率。
文中根據職稱管理系統特點,將職稱管理系統與組件技術相結合,對本系統下的組件開發進行了分析和研究,并列出了系統中組件結構,通過組件技術在職稱評審系統中的應用的實踐,我們更深刻認識到,開發出適合的自定義組件,在構建系統時可節省開發的工作量和難度,提高工作效率,增強系統的可維護性,功能改動后,只需在服務器端更新該功能組件即可。組件技術不失為職稱管理系統開發的關鍵技術。
[1]林子禹,邵紅維,譚凱,等.基于WEB與組件技術的企業應用系統設計模型[J].計算機工程與應用,2000(6):152-154.LIN Zi-yu,SHAO Hong-wei,TAN Kai,et al.Enterprise application system design model based on WEB and component technology[J].Computer Engineering and Application,2000(6):3-26.
[2]樓偉進,應飚.COM/DCOM/COMD組件技術[J].計算機應用,2000(4):31-33.LOU Wei-jin,YING Biao.Component technology about COM/DCOM/COMD[J].Journal of Computer Applications,2000(4):31-33.
[3]徐敏,周定康.組件技術在軟件開發中的應用[J].計算機與現代化,2002(2):1-3.XU Min,ZHOU Ding-kang.The application of componenet technology in software development [J].Computer and modernization,2002(2):1-3.
[4]白建坤.WEB服務安全架構研究[J].計算機應用,2005,25(11):2533-2535.BAI Jian-kun.Research on security frame work for WEB service [J].Journal of Computer Applications,2005,25(11):2533-2535.
[5]吳浩明,周寧.基于LDAP的信息共享平臺研究與實現[J].計算機應用,2008,28(4):1042-1043.WU Hao-ming,ZHOU Ning.Research and implementation of information share platform based on LDAP [J].Journal of Computer Applications,2008,28(4):1042-1043.
[6]傅勇,王元珍.工作流技術在辦公自動化系統中的應用研究[J].小型微型計算機系統,2001(6):663-665.FU Yong,WANG Yuan-zhen.Application of workflow technology in office automation system[J].Micro computer system,2001(6):663-665.