雷聚超,范夢龍
(西安工業大學 計算機學院 西安 710021)
隨著市場競爭的加劇和計算機技術的發展,企業必須尋求一種新的技術來優化他們的業務流程,于是工作流技術應運而生,它成為實現企業信息化建設、提高企業運營效率的有效途徑。但是,工作流管理系統的開發隨著企業要求的變更要做許多重復性的工作,軟件的可擴充性、可重用性等方面的問題日益突出,本文將組件技術與工作流技術相結合使這方面的問題得到解決。
在新技術背景下,工作流技術進入一個嶄新的發展階段。一些著名的工作流商業軟件供應商不斷推出新產品,其中比較著名的企業級工作流產品有BEA的WLI,IBM的holosofx與 MQSeries工作流,Fujitsu 的 Iflow,SAP 的 NetWeaver,Sonic的Orchestration Server。特別是基于Web的工作流系統,已成為一種新的市場流行趨勢。代表產品有Ultimus的業務流程管理產品等[1]。目前工作流管理系統存在設計實現復雜、可靠性、重用性差等問題。本文在研究工作流環境下組件的開發過程中,為使開發的組件能夠良好的應用于B/S結構,采用了Ajax技術,實現異步交互過程,解決了傳統Web應用中會出現的屏幕閃爍、刷新問題。
工作流概念起源于生產組織和辦公自動化領域,是針對日常工作中具有固定程序活動而提出的一個概念。工作流技術主要是利用計算機科學技術,并結合企業具體產品開發過程與經營管理進行信息化軟件系統的應用開發,達到企業經營和生產過程全自動或半自動化的執行和管理[2]?,F在,工作流技術已成為企業信息化建設方案中比不可少的內容之一,它被廣泛的應用于電訊業、軟件工程、制造業、金融業和辦公自動化等領域。
盡管工作流發展到現在已經取得了相當的成就,但其概念目前還沒有完全統一的定義。其中被廣泛引用的是工作流管理聯盟(Workflow Management Coal ition,WfMC)對工作流的定義:工作流是一類能夠完全或者自動執行的經營過程,根據一系列過程規則、文檔、信息或任務在不同的執行者之間進行傳遞與執行。
組件是一個獨立的可傳遞的操作的集合,是軟件開發中一個可替換的軟件單元,它封裝了設計決策,具有特定的功能[3]。一個軟件組件是可執行軟件的一個可分離的部分,可以與其它組件實現互操作,只能通過組件的接口來訪問它,在進行了必要的安裝和裝配過程之后,它就能以接口規定的方式來使用。
組件技術是面向對象技術之后的軟件開發的標準方法體系。近年來,組件技術主要有以下3種,OMG的CORBA(通用對象請求代理結構)規范,Sun公司的JavaBean/EJB/J2EE規范和Microsoft公司的COM/DCOM/COM+規范,它們各有各的特點,但思想是一致的。
利用組件,可以堆積木似的搭建軟件系統,從而實現軟件的大粒度復用,縮短開發周期,降低維護成本。隨著軟件復用技術的日益成熟,利用可復用組件構造軟件系統已成為軟件開發的主要手段。
考慮系統的功能及組件之間的協調工作,組件的開發及部署過程一般分為根據系統的需求分析進行組件的設計、組件的定義、裝配、運行及測試等幾步。文中將重點放在研究工作流組件的開發上。
為了保證組件在復用、組裝和擴展上的可行性,組件設計應遵循以下原則:
1)組件的設計應根據子系統或子功能來劃分,使組件與領域內實體或者功能對應;
2)組件的接口設計要規范友好,使開發人員能夠方便地使用;
3)組件的適應性強,盡可能能滿足不同行業的需求;4)組件發布前必須進行測試、審查。
在進行工作流環境下組件的設計時,考慮到工作流的特殊性,不能僅僅按照設計一般組件的步驟來進行工作流組件設計。
工作流最基本的功能就是實現數據處理的自動流轉,當設計工作流組件時不能簡單的為每個工作流都建立組件,這樣會存在一些問題,如:增加或調整工作流,就要對相應的組件進行修改,這樣不夠靈活;而且,有的組件是可以共用的,就可以把它歸為通用組件,每個流程都可以使用,這樣就減少了代碼冗余。
根據以上分析,一般情況下,將組件劃分成界面管理組件、權限控制組件、通用組件、流程控制組件、報表組件、數據庫訪問組件等。

圖1 工作流環境下組件結構圖Fig.1 Components structure Under the environment of the workflow
界面管理組件是系統與用戶交互的各種組件的總和。驗證用戶是否為系統的合法用戶以及用戶信息是否合法等。
權限控制組件是管理系統所有使用者的身份的組件,它與流程控制組件關系密切,以不同的身份登錄系統通過調用權限控制控制組件,直接控制系統數據流向。
流程控制組件是工作流組件的核心,它對于各個工作節點來說具有一定的通用性,負責把所有節點中復用的已有組件信息整合到一起來控制業務流程??梢詾榇私M件添加流程名稱、流程來源名稱、前步編號、本步編號、下步編號、流程狀態表名、本步表名、前步表名等屬性,使之與其它組件關聯起來。這些編號信息由系統產生并保存于數據庫中,系統為這些信息創建特定的表,在用戶處理過程中,需要讀取這些信息,根據表名,系統從數據庫中讀取相應的字段。
數據訪問組件負責從數據庫中檢索數據并把實體數據保存回數據庫中。除此之外,它還包括實現數據相關操作所需的所有業務邏輯。
報表組件負責從數據庫中讀取數據,并將返回的結構打印成需要的報表。
通用組件是供各流程共用的組件。它包括:時鐘組件、文本框組件、按鈕組件、日歷組件等等。
由于本文研究適用于B/S結構的工作流組件,Intrawb是基于Delphi的網絡編程平臺,在該平臺下可以采用繼承的方法自定義生成WEB組件,具體過程如下:
1)祖先類的確定。自定義WEB組件實質上是根據需要派生新的組件類,而派生組件類的關鍵是選擇一個合適的祖先類,如果選的祖先類不合適,不但給創建新組件造成困難,甚至可能無法實現。
2)創建組件框架。組件框架包含祖先類名、組件的類名、組件顯示的面板頁和組件的單元名。
3)加入屬性、事件、方法。要構建工作流環境下的組件,需要為每個組件設計一個標志,用來定義組件的執行順序;預先定義控制流程的組件的觸發條件、觸發事件。
按照以上步驟編寫好組件代碼,進行測試后,就可以將組件加入到組件包進行編譯和安裝,供以后使用。
在編寫組件代碼時,需要注意一個問題,用IntraWeb可視化開發會出現屏幕刷新、閃爍的問題。這是由于傳統的Web應用采用同步交互過程,這種情況下,用戶首先向Web服務器發送一個請求,然后Web服務器根據用戶請求的內容,執行相應的任務,并向用戶返回結果,這是一種不連貫的用戶體驗,在服務器處理請求時,用戶就只能等待著,此時瀏覽器顯示的頁面是空白的。由于同步模式的限制,瀏覽器在接收到服務器響應之前是處于停滯狀態的,為了使開發出的組件給用戶更好的體驗,在編寫代碼時,穿插Ajax技術,解決前面提到的問題。
Ajax的英文全稱是 Asynchronous JavaScript and XML,中文含義為“異步JavaScript和XML”,是指一種創建交換式網頁應用的網頁開發技術。圖2所示的是Ajax Web軟件體系架構。

圖2 Ajax Web軟件體系架構Fig.2 Ajax Web Software structure
從圖2可以看出,Ajax應用程序比傳統的Web應用程序多了一層Ajax引擎。Ajax通過發送XMLHTTP請求,實現將信息發送到服務器并從服務器接收信息,從而大大減少了帶寬的浪費,同時XMLHTTP請求的發送是異步的,并不需要等待客戶端或者服務器的任何其他操作而可以獨立發送和接收,數據交換量的減少可以帶來更快的應用,更好的用戶體驗和更輕的服務器負擔[4]。由此可見,在編寫組件代碼的時候,穿插Ajax技術是很有必要的。
另外,圖中的WEB組件這里主要是指Intraweb自身的組件和自定義WEB組件;組件的基礎設施是指為WEB組件提供公共的基礎服務;WEB組件倉庫用來存放已存在基本組件和自定義組件;WEB應用程序是安裝在服務器端的,該應用程序是建立在Intraweb平臺下的。
文中根據工作流技術的特點,將工作流技術與組件技術相結合,對工作流環境下的組件開發進行了分析和研究,討論構建工作流組件的方法,并給出了工作流環境下的組件結構,對以后在其它平臺下開發工作流組件起到了一定的指導作用。另外,文中還提出了用Ajax技術來解決傳統Web應用的同步交換問題的方法,這對開發Web組件也是非常有意義的,能夠給用戶帶來更好的體驗與感受。總之,我們開發出適合的自定義組件,在構建系統時節省了開發的工作量和難度,提高了開發的效率,增加了系統的可維護性,而且便于系統升級,一次功能改動后,只需要在服務器端更新該功能的組件即可。
[1]楊洋,李志蜀.工作流管理系統發展狀況與趨勢研究[J].四川經濟管理學院學報,2008(1):53-56.
YANG Yang,LI Zhi-shu.Research on workflow management system and its developing trend[J].Journal of Sichuan Economic Management Institute,2008(1):53-56.
[2]WFMC TC00-1003.Workflow management coalition:the workflow reference mode[S].1995.
[3]左愛群,黃水松.基于組件的軟件開發方法研究[J].計算機應用,1998,18(11):4-7.
ZUO Ai-qun,HUANG Shui-song.Research on comppnentbased development[J].Computer Applications,1998,18(11):4-7.
[4]Khare R.Beyond Ajax:Accelerating web applications with real time event notification[M].Know Now White Paper Clink from the Wayback Machine,2007.
[5]汪盛,袁捷,李宗巖.基于組件技術的模型管理[J].計算機工程,2001,27(1):38-40.
WANG Sheng,YUAN Jie,LI Zong-yan.Model management system based on components[J].Computer Engineering,2001,27(1):38-40.
[6]張銀鶴,梁文新,李新磊.JavaScript完全學習手冊[M].北京:清華大學出版社,2009.