摘要:工作流技術(shù)在企業(yè)級(jí)應(yīng)用開發(fā)中越來越受到重視,業(yè)界的工作流主要遵循兩個(gè)標(biāo)準(zhǔn):WFMC和BPEL。BPEL標(biāo)準(zhǔn)是由IBM、Microsoft等公司聯(lián)合發(fā)布的標(biāo)準(zhǔn),其中微軟的Windows Workflow Foundation工作流產(chǎn)品給出一種設(shè)計(jì)方案。
關(guān)鍵詞:工作流;工作流管理系統(tǒng);計(jì)算模型
工作流就是工作流程的計(jì)算模型,即將工作流程中的工作如何前后組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示并對其實(shí)施計(jì)算。工作流要解決的主要問題是:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),在多個(gè)參與者之間利用計(jì)算機(jī),按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。
工作流管理系統(tǒng)的主要功能是通過計(jì)算機(jī)技術(shù)的支持去定義、執(zhí)行和管理工作流,協(xié)調(diào)工作流執(zhí)行過程中工作之間以及群體成員之間的信息交互。工作流需要依靠工作流管理系統(tǒng)來實(shí)現(xiàn),主要組成部分包括:
●過程定義工具
●過程定義
●工作流執(zhí)行子系統(tǒng)和工作流引擎
●工作流控制數(shù)據(jù)
●工作流相關(guān)數(shù)據(jù)
●應(yīng)用程序和應(yīng)用數(shù)據(jù)
●工作表和工作表處理程序
業(yè)界的工作流主要遵循兩個(gè)標(biāo)準(zhǔn):WFMC和BPEL。BPEL標(biāo)準(zhǔn)是由IBM、Microsoft等公司聯(lián)合發(fā)布的標(biāo)準(zhǔn),他們的工作流產(chǎn)品如IBM Lotus Workflow、Microsoft Windows Workflow Foundation。
對于工作流系統(tǒng)的設(shè)計(jì),一個(gè)工作流管理系統(tǒng)通常包含3個(gè)不同層次的工作流定義,即全局工作流、局部工作流和工作流實(shí)例。當(dāng)系統(tǒng)邊界確定之后,整個(gè)系統(tǒng)擁有一個(gè)全局工作流。對于較為復(fù)雜的系統(tǒng),一個(gè)全局工作流可能包含或者可以拆分為多個(gè)局部工作流,它們之間通常可以并發(fā)或者通過較為松散的關(guān)系交織在一起。以O(shè)A系統(tǒng)為例,可將OA系統(tǒng)的全局工作流拆分為信息發(fā)布、公文管理、會(huì)議管理、用車管理四個(gè)局部工作流,再細(xì)分下去,公文管理還可以分為收文管理與發(fā)文管理。
值得一提的是,相對于靜態(tài)工作流系統(tǒng),動(dòng)態(tài)工作流系統(tǒng)的設(shè)計(jì)要復(fù)雜得多。這主要是因?yàn)楹笳咝枰紤]動(dòng)態(tài)的過程定義,一般來說需要開發(fā)平臺(tái)或開發(fā)環(huán)境的一定程度的支持并能夠很容易地體現(xiàn)在表現(xiàn)層中。
最后,我們討論一下工作流系統(tǒng)的實(shí)現(xiàn)。由于國內(nèi)外很多軟件公司均有各自的工作流產(chǎn)品及成熟的軟件開發(fā)架構(gòu),這里以Microsoft Windows Workflow Foundation為例提出一個(gè)可行的解決方案。此解決方案采用多層模式架構(gòu),分Web表示層、工作流層、業(yè)務(wù)層、實(shí)體層、數(shù)據(jù)訪問層和數(shù)據(jù)庫。對于非工作流需求(僅面向數(shù)據(jù)模型)只訪問業(yè)務(wù)層,而對于工作流需求則可能需要同時(shí)訪問工作流層和業(yè)務(wù)層,這取決于工作流是否包含對數(shù)據(jù)模型的訪問。采用這種架構(gòu)的工作流容易變更,業(yè)務(wù)層作為工作流框架的底層服務(wù)更加獨(dú)立,僅依賴于數(shù)據(jù)訪問層。
以“用車管理”工作流框架為例,首先創(chuàng)建一個(gè)用車活動(dòng)類型:
public sealed class AutomobileActivity : CodeActivity
然后重寫AutomobileActivity中的Execute方法,根據(jù)傳入的上下文,選擇具體的子活動(dòng)(申請、審批、安排出車、交車):
protected override Boolean Execute(CodeActivityContext context)
{
Boolean result = 1;switch(ActivityName.Get(context)
{
case“申請”:
……
break;
case審批”:
……
break;
case“安排出車”:
……
break;
case“交車”:
……
break;
}
return result;
}
至于業(yè)務(wù)層、實(shí)體層、數(shù)據(jù)訪問層,這里不再詳述。
以上是基于微軟WF工作流技術(shù)的一種工作流系統(tǒng)解決方案,與很多解決方案相同僅支持靜態(tài)的工作流定義。
(作者單位 湖北省工業(yè)建筑學(xué)校)