[摘 要] 流程作為企業(yè)信息化的重要內(nèi)容,在應(yīng)用系統(tǒng)中占據(jù)很重要的作用。目前大量的工作流系統(tǒng)過分兼顧大型企業(yè)和企業(yè)應(yīng)用集成方面的應(yīng)用,導(dǎo)致系統(tǒng)龐大,應(yīng)用難度和成本居高不下。本文提出了一種為中小企業(yè)信息化服務(wù)的工作流系統(tǒng)的設(shè)計(jì)方法,在兼顧中小企業(yè)的實(shí)際需求的前提下,盡可能地減少系統(tǒng)的復(fù)雜性,同時(shí)在流程部署和配置方面做了大量的簡化設(shè)計(jì),大大降低了對流程管理員的技術(shù)要求。系統(tǒng)基于微軟.net平臺(tái)設(shè)計(jì)開發(fā),實(shí)踐表明本工作流系統(tǒng)不僅能快速配置部署企業(yè)流程,同時(shí)大大降低了企業(yè)信息化成本。
[關(guān)鍵詞] 工作流系統(tǒng) 流程引擎 模板設(shè)計(jì) 表單生成器
中小企業(yè)作為最大的企業(yè)群體,在企業(yè)信息化建設(shè)方面存在迫切需求的同時(shí),也對信息化解決方案提出了獨(dú)特的要求。一方面中小企業(yè)希望系統(tǒng)能靈活易用,支持快速部署。另一方面又希望信息化服務(wù)的價(jià)格比較低廉,而且大量傳統(tǒng)中小企業(yè)對軟件的高額開發(fā)和維護(hù)成本缺少足夠的認(rèn)識(shí),這樣在信息化解決方案中盡可能地使用一些輕量級(jí)的解決方案。
我們在長期的中小企業(yè)信息化實(shí)踐中,逐漸采用了一套微型的工作流系統(tǒng),在開發(fā)和部署輕量級(jí)的前提下,為中小企業(yè)的信息化保留了足夠的靈活性和可用性。微型工作流系統(tǒng)同樣提供了比較完整的工作流體系結(jié)構(gòu),主要包括:數(shù)據(jù)存儲(chǔ),流程引擎,表單生成器,可視化流程設(shè)計(jì)器。
一、數(shù)據(jù)存儲(chǔ)設(shè)計(jì)
工作流系統(tǒng)的數(shù)據(jù)存儲(chǔ)設(shè)計(jì)主要考慮流程數(shù)據(jù)存取模型,即如何組織流程模板中定義的數(shù)據(jù),如何存取流程數(shù)據(jù)。設(shè)計(jì)的另外一個(gè)方面是設(shè)計(jì)工作流系統(tǒng)本身運(yùn)行所需要的其他數(shù)據(jù)。
1.數(shù)據(jù)存儲(chǔ)設(shè)計(jì)概述
數(shù)據(jù)存儲(chǔ)設(shè)計(jì)中對工作流系統(tǒng)必不可少的數(shù)據(jù)表分為三個(gè)部分:
(1)組織機(jī)構(gòu)表
(2)流程系統(tǒng)支撐表
流程注冊表:存放目前系統(tǒng)中部署的流程及其信息;
流程任務(wù)表:存放系統(tǒng)中所有的流程任務(wù);
通知信息表:存放系統(tǒng)郵件,系統(tǒng)通知等;
流程角色表:存放所有流程中的角色;
角色用戶映射表:存放角色映射的具體用戶。
(3)流程數(shù)據(jù)表
流程數(shù)據(jù)表:流程數(shù)據(jù)表用來存放已部署流程的流程數(shù)據(jù);
簽批數(shù)據(jù)表:存放所有流程簽批數(shù)據(jù)。
2.流程數(shù)據(jù)存取模型
流程支持的數(shù)據(jù)類型很多,為了增加系統(tǒng)的靈活性,系統(tǒng)通過配置文件來決定數(shù)據(jù)類型在流程數(shù)據(jù)庫創(chuàng)建時(shí)使用的數(shù)據(jù)字段類型。這個(gè)特性還可以規(guī)避數(shù)據(jù)庫類型對系統(tǒng)的限制,在部署不同數(shù)據(jù)庫時(shí)可以修改該配置文件來映射到該數(shù)據(jù)庫的自動(dòng)類型定義。比如使用Oracle數(shù)據(jù)庫時(shí)可以如下定義:
text = varchar2(500)
list = varchar2(32)
其中等式左邊是模板中使用的數(shù)據(jù)類型,右邊是創(chuàng)建流程數(shù)據(jù)表時(shí)使用的數(shù)據(jù)庫字段類型。
二、模板系統(tǒng)
模板是表達(dá)流程的載體,其表達(dá)能力,擴(kuò)充能力和可讀性在微型工作流應(yīng)用中顯得非常重要。我們采用XML標(biāo)注語言作為模板描述語言。XML目前在數(shù)據(jù)交換,配置文件等應(yīng)用方面應(yīng)用非常廣泛,幾乎所有的開發(fā)平臺(tái)都很好的支持XML,同時(shí)XML作為標(biāo)注語言非常易于擴(kuò)充,方便編輯和部署。模板系統(tǒng)包括兩個(gè)大的方面:流轉(zhuǎn)關(guān)系和數(shù)據(jù)描述。
為了方便說明,下面是截取的模板的DTD片段:
流程模板中定義如下關(guān)系:順序,并行,條件分支,跳轉(zhuǎn)。
Sequence:定義順序關(guān)系。
Parallel:定義并行關(guān)系。
If:定義條件分支。
任務(wù)包括兩種:task元素定義人工執(zhí)行任務(wù), agent元素定義各種自動(dòng)執(zhí)行的任務(wù),而且可以通過agent元素?cái)U(kuò)展流程中的各種個(gè)性化需求。比如目前最常用的一些功能都可以通過定義不同的agent元素,引入到工作流定義中:操作外部業(yè)務(wù)數(shù)據(jù),Email發(fā)送,短信提醒,文件操作等。
三、流程引擎
引擎作為系統(tǒng)運(yùn)轉(zhuǎn)的核心,我們可以將引擎系統(tǒng)分為如下三個(gè)主要部分:模板加載器,流程管理器,流程驅(qū)動(dòng)器。
1.模板加載器
模板加載器的功能是分析模板文件,將模板配置的流程變?yōu)閮?nèi)部模型存儲(chǔ)在流程管理器中。由于流程支持流轉(zhuǎn)方式的嵌套,比如并行流作為順序流的一個(gè)環(huán)節(jié),而條件分支流又作為并行流的一個(gè)環(huán)節(jié)。引擎內(nèi)部使用樹結(jié)構(gòu)作為流程內(nèi)部的存儲(chǔ)實(shí)體,下面是一個(gè)內(nèi)部存儲(chǔ)結(jié)構(gòu)的示意圖:
圖流程內(nèi)部存儲(chǔ)結(jié)構(gòu)(Inter-Structure Of Workflow Template)
從圖中可以看出,該存儲(chǔ)結(jié)構(gòu)是一種遞歸的形式,所以模板的解析算法也采用了遞歸的方法。
2.流程管理器
流程管理器主要完成已配置流程的內(nèi)部模型維護(hù)和管理。系統(tǒng)啟動(dòng)時(shí)會(huì)有一個(gè)加載所有已配置模板的過程,在該過程中模板加載器會(huì)將所有的模板進(jìn)行解析和轉(zhuǎn)換,將轉(zhuǎn)換完成的內(nèi)部模型注冊到流程管理器中,流程管理器保證和維護(hù)了流程模板的最新版本在內(nèi)存中的映像。
3.流程驅(qū)動(dòng)器
流程驅(qū)動(dòng)器的主要功能是按照流程內(nèi)部模型驅(qū)動(dòng)流程實(shí)例流轉(zhuǎn)。通過上述的內(nèi)部模型存儲(chǔ)結(jié)構(gòu)可以看出,流程內(nèi)部模型是一個(gè)樹狀結(jié)構(gòu),所有的葉節(jié)點(diǎn)是可執(zhí)行環(huán)節(jié),非葉節(jié)點(diǎn)是邏輯控制的容器類節(jié)點(diǎn)。
流程驅(qū)動(dòng)器也采用單體模式設(shè)計(jì),所有操作都是線程安全的。
四、表單生成器
表單生成器解決工作任務(wù)執(zhí)行時(shí)如何創(chuàng)建給用戶的工作表單的問題,主要包含兩個(gè)大的方面:表單布局和表單數(shù)據(jù)操作。表單布局是小型工作流系統(tǒng)和大型工作流系統(tǒng)的重要區(qū)別之一。本系統(tǒng)的表單布局和大型工作流系統(tǒng)有如下重要區(qū)別:
1.用戶不能自定義表單布局,僅僅能在模板中通過Style屬性控制控件樣式;
2.用戶不能添加自定義的圖形,圖標(biāo)等內(nèi)容;
3.用戶在流程部署后不能調(diào)整數(shù)據(jù)的順序。
五、可視化流程設(shè)計(jì)器
本系統(tǒng)也提供了一個(gè)可視化的流程設(shè)計(jì)器。流程設(shè)計(jì)器為模板提供了一個(gè)圖形化的編輯功能。雖然直接編輯模板是最方便快捷的方式,不過對用戶的計(jì)算機(jī)水平有較高的要求,在一般的中小企業(yè)中沒有專門的IT人員,所以需要提供一個(gè)可視化的流程設(shè)計(jì)器來簡化模板的配置工作。
六、結(jié)束語
本文討論了在中小企業(yè)的應(yīng)用中可用的一種工作流系統(tǒng)設(shè)計(jì)。實(shí)踐中我們采用.net平臺(tái)完成了整個(gè)系統(tǒng)的開發(fā),采用Asp.net技術(shù)完成了表單生成器。整個(gè)系統(tǒng)的開發(fā)規(guī)模為10個(gè)人月,在實(shí)踐中取得了很好的效果,下面是實(shí)踐中的具體情況:
1.企業(yè)規(guī)模:600人
2.部署流程規(guī)模:40個(gè)
3.流程平均部署時(shí)間:3天
4.日均處理流程數(shù):> 120個(gè)
5.日均處理任務(wù)數(shù):> 1000個(gè)
用戶通過部署工作流系統(tǒng)大大縮短了流程的部署時(shí)間,同時(shí)大大降低了開發(fā)和擁有成本。
參考文獻(xiàn):
[1]陳鵬飛 王慶節(jié) 張 鋼:基于XML 的工作流體系結(jié)構(gòu)的研究[J].計(jì)算機(jī)工程與科學(xué), 2004, 26 (1):106~109
[2]Vivtek. The sections of a wftk system [EB/OL].(2002) [2009~01~20].http://www.vivtek.com/wftk/doc/overview.htm