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

圖1 Windows Wordflow Foundation架構(gòu)
勘探經(jīng)營(yíng)管理系統(tǒng),不僅僅是一個(gè)管理系統(tǒng),其實(shí)質(zhì)是一個(gè)工作流控制系統(tǒng),流程控制是其核心內(nèi)容。對(duì)于勘探經(jīng)營(yíng)管理系統(tǒng)的設(shè)計(jì),從面向服務(wù)SOA[5]的設(shè)計(jì)原則出發(fā),定義明確的服務(wù)邊界,而且還應(yīng)該提高模塊間的內(nèi)聚性,降低模塊間的耦合性。該系統(tǒng)可以分為3個(gè)服務(wù)和1個(gè)核心流程——WF流程管理,即定額服務(wù)、合同服務(wù)、報(bào)表服務(wù)以及WF流程管理,如圖2所示。定額服務(wù)主要完成對(duì)鉆井流程中各環(huán)節(jié)工作量和費(fèi)用的核定,如常規(guī)測(cè)井費(fèi)用的核定;合同服務(wù)主要對(duì)專(zhuān)業(yè)勘探服務(wù)公司進(jìn)行合同維護(hù)、簽訂、結(jié)算、查詢(xún)等;報(bào)表服務(wù)則主要完成各種統(tǒng)計(jì)要求的報(bào)表輸出。

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

圖3 WF流程管理系統(tǒng)模型
2)概預(yù)算管理 概預(yù)算管理是該系統(tǒng)流程控制中的關(guān)鍵環(huán)節(jié),也是最為復(fù)雜的流程,其涉及的狀態(tài)眾多,而且各個(gè)狀態(tài)關(guān)聯(lián)度高,狀態(tài)轉(zhuǎn)換復(fù)雜。在通過(guò)審核的勘探任務(wù)到達(dá)后,就跳轉(zhuǎn)到概預(yù)算管理流程環(huán)節(jié)了。概預(yù)算管理這一核心流程主要完成的工作為:對(duì)下達(dá)的任務(wù)進(jìn)行量化處理,以勘探的預(yù)期目標(biāo)為基本準(zhǔn)則,確定勘探工序,選擇材料,制定詳細(xì)測(cè)試項(xiàng)目,例如試油項(xiàng)目等,其中涉及項(xiàng)目多達(dá)數(shù)十種,在流程控制中得到簡(jiǎn)化 (因?yàn)樗泄ば蛄鞒袒疽恢?。

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

圖5 概預(yù)算流程

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