沈疆海 (長江大學計算機科學學院,湖北荊州434023)
王德玲 (長江大學城市建設學院,湖北荊州434023)
隨著企業管理水平的升級,業務流程更加規范,辦公自動化也越來越被企業所青睞。辦公類管理軟件的架構一般采用縱向分層、橫向分塊的方式來實現[1],其中的流程控制一般通過定制數據表及功能模塊來實現,這種模式會因系統的需求變化變得難以維護。工作流的發展,很好地解決了這一問題。工作流由一系列活動構成,用以反映客觀世界中流程的模型,一般由若干個活動按照某種邏輯組合而成,活動間有一定相互關系,一個工作流包含一組活動及它們間的關系[2]。基于工作流的系統,建立可視化的流程模型[3],把流程控制從業務活動中剝離交由工作流引擎完成,系統則專注于具體的業務邏輯。
在石油勘探領域,勘探管理對油田的發展起著重要作用。科學的概預算工作,能有效控制勘探成本,已成為油田勘探決策部門的一項重要工作。勘探前期,在設計好勘探目標后,專業人員不僅要對勘探流程非常熟悉,而且還需通過已有的定額標準計算各種工程項目的概預算費用;勘探后期,需要根據當前實際消耗物資數量,以及市場物價變動等綜合因素,進行實際消耗費用的結算。為解決這一復雜的流程控制問題,筆者設計了一種基于WF(Windows Workflow Foundation,工作流框架)的勘探經營管理系統。
Windows Workflow Foundation是一個廣泛且通用的工作流框架,由Runtime Engine、RuntimeServices、Workflow和Base Activity Library組成,如圖1所示。基于Windows Workflow Foundation的解決方案,需要建立在宿主程序之上,并且用戶可以擴展自己的活動庫。Windows Workflow Foundation提供工作流引擎、.NET托管 API、運行庫服務以及與 Microsoft Visual Studio 2008集成的可視化設計器和調試器。可使用Windows Workflow Foundation來生成并執行同時跨越客戶端和服務器的工作流[4],以及可在所有類型的.NET應用程序內部執行的工作流。

圖1 Windows Wordflow Foundation架構
勘探經營管理系統,不僅僅是一個管理系統,其實質是一個工作流控制系統,流程控制是其核心內容。對于勘探經營管理系統的設計,從面向服務SOA[5]的設計原則出發,定義明確的服務邊界,而且還應該提高模塊間的內聚性,降低模塊間的耦合性。該系統可以分為3個服務和1個核心流程——WF流程管理,即定額服務、合同服務、報表服務以及WF流程管理,如圖2所示。定額服務主要完成對鉆井流程中各環節工作量和費用的核定,如常規測井費用的核定;合同服務主要對專業勘探服務公司進行合同維護、簽訂、結算、查詢等;報表服務則主要完成各種統計要求的報表輸出。

圖2 系統架構
勘探經營管理系統中的3個基礎服務各司其職,相對獨立、松散的耦合關系符合SOA設計原則,降低了系統設計與實現的復雜度,為縮短開發周期、提前交付系統奠定了良好的基礎。基于服務的架構,也將使其重用性更高,而且能夠滿足定額等需求變更,不影響流程控制的要求。
WF流程管理系統模型如圖3所示,包括投資計劃管理、任務管理、概預算管理、招投標管理和合同管理及成本監控。
1)投資計劃管理 投資計劃管理是勘探經營管理系統復雜環節的第一步,主要完成的功能為從上級部門獲取投資金額,然后分配到特定的勘探區域上。由于勘探計劃中只有勘探總金額,因此需要制定詳細的金額分配方案,對于復雜的專業流程,在這里進行簡化,抽象出2個Activity來滿足應用需求:第1個為投資金額輸入,這個Activity為WebServiceInput,讀取外部信息;另外一個Activity為制定勘探任務,只有在獲取勘探投資金額后,才能繼續走到這一步。具體流程如圖4所示,對于復雜的按區域分配工作,在制定勘探任務內部,由CodeActivity來完成具體的資金分配。

圖3 WF流程管理系統模型
2)概預算管理 概預算管理是該系統流程控制中的關鍵環節,也是最為復雜的流程,其涉及的狀態眾多,而且各個狀態關聯度高,狀態轉換復雜。在通過審核的勘探任務到達后,就跳轉到概預算管理流程環節了。概預算管理這一核心流程主要完成的工作為:對下達的任務進行量化處理,以勘探的預期目標為基本準則,確定勘探工序,選擇材料,制定詳細測試項目,例如試油項目等,其中涉及項目多達數十種,在流程控制中得到簡化 (因為所有工序流程基本一致)。

圖4 投資計劃流程
基于狀態機的工作流正好能夠滿足概預算管理狀態多變的要求,并且觸發狀態轉換的事件都在各狀態外部。綜合分析,可以分為5個狀態,分別為開始、預算、概算、審核與完成,其中預算與概算2個是同級狀態,如圖5所示。流程控制中,開始狀態的初始化活動,獲取任務Activity執行完成后,通過任務的種類決定下一步的狀態是概算或者預算。概算狀態中概算完成事件需要查詢前面提到的定額服務,計算任務的概算費用情況,一旦計算失敗就跳轉到開始狀態,流程要重新執行;如果概算完成,將跳轉到審核狀態。審核狀態中,有2個事件,分別為通過和不合格,通過事件觸發后,跳轉到完成狀態,結束本流程控制;不合格觸發后,跳轉到開始狀態,又回到了起點。預算狀態的流程與概算一致,在此不再贅述。
3)合同管理及成本監控 合同管理及成本監控的流程控制相對簡單,如果施工單位的合同金額沒有結清,將一直處于預備結算狀態,并且有跨年結算的情形,這個主要在報表中才能體現。另外成本監控,主要是實時收集前線施工數據,來核算實際費用與概預算費用之間是否有差別,供專業人員進行進一步決策研究,具體流程見圖6。

圖5 概預算流程

圖6 合同管理及成本監控流程
預備結算狀態有2個事件,一個為施工單位催款,另外一個為年度扎賬,觸發任意一個事件,都將跳轉到合同結算狀態。合同結算狀態,也有2個事件,一個為季度結算,一為年度結算,一次性付款歸為年度結算,觸發任意一個事件都跳轉到成本核算狀態。成本核算狀態,包括2個事件,成本預警和成本超出,在結算金額小于等于合同金額時 (在部分勘探設計取消時,結算金額小于合同金額),觸發成本預警,跳轉到合同完成狀態。另外當結算金額大于合同金額時,實際消耗量大于預算消耗量,將觸發成本超出事件,跳轉到追加投資狀態,簽訂新的合同。
4)工作流宿主程序 勘探經營管理系統的UI層采用的是Web網頁,由于核心工作流是長時間非間斷運行,對可靠性要求很高,因此以Windows Service服務作為宿主程序,能更好滿足其應用要求。對于Windows服務與Web間的數據通訊,則采用的是WCF(Windows Communication Foundation)[6]。WCF的通訊架構,也是運行在CLR之上,與WF能夠完美結合,WF實現流程控制邏輯,WCF則建立服務的接口。在該系統中,公開的服務采用的是基于管道命名的內部進程通信IPC方式,因為WCF和WF部署在同一臺服務器上,這樣能降低通訊成本,提高效率。
筆者詳細介紹了基于WF技術的勘探經營管理系統的設計及其實現方案,該方案能夠很好滿足當前的勘探概預算與結算等要求,把復雜的業務流程化,以數據驅動業務,更加客觀反映當前工作的狀態,把復雜的工作流管理交由WF處理,有效降低了軟件設計人員和編程人員的工作任務量以及系統的復雜度。經過某勘探公司實際數據驗證及用戶的反饋,采用WF技術的勘探經營管理系統,能利用油田現有的企業網絡與計算機資源,有效滿足了用戶實際工作的需求,系統運行穩定,擴展性和兼容性良好。
[1]張巨儉,甘仞初.管理信息系統的發展方向及實現技術 [J].計算機應用研究,2003(1):8-10.
[2]曹輝,李忠凱,趙永,等.基于工作流的模塊化船舶管理系統 [J].計算機應用研究,2007(12):214-216.
[3]朱澤峰,劉建勛.可視化建模工具 Together Workflow Editor分析 [J].微計算機應用,2008(1):87-90.
[4]Dharma S,Bob S.WF本質論[M].周健譯.北京:機械工業出版社,2007:24-39.
[5]Norbert Bieberstein.面向服務架構(SOA)指南-業務價值、規劃及企業路線圖 [M].張寧譯.北京:人民郵電出版社,2008:7-10.
[6]Juval L?wy.WCF服務編程 [M].張逸,徐寧 譯.北京:機械工業出版社,2008:57-59.