web工作流管理系統(tǒng)開發(fā)1-5_第1頁
web工作流管理系統(tǒng)開發(fā)1-5_第2頁
web工作流管理系統(tǒng)開發(fā)1-5_第3頁
web工作流管理系統(tǒng)開發(fā)1-5_第4頁
web工作流管理系統(tǒng)開發(fā)1-5_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、之一 工作流概念 曾經(jīng)在2001年做CRM產(chǎn)品的時候,因為CRM產(chǎn)品的客戶狀態(tài)升遷,每個具體用戶的升遷規(guī)則可能會不一樣,技術(shù)主管說要集成一個工作流軟件工 具.,那是我第一次聽說工作流。當時很不理解,這工作流軟件如何能做到將業(yè)務(wù)流程定義進去呢?當然,那時候工作流軟件工具還不成熟和完善,也或 者我們也沒有達到那個層次,后來終究還是沒有用上工作流。 工作流軟件,顧名思義,就是業(yè)務(wù)信息數(shù)據(jù)在多個環(huán)節(jié)模塊之間的流轉(zhuǎn)。按照工作流管理聯(lián)盟的定義,工作流指的是“業(yè)務(wù)過程的部分或全部在計算機應(yīng)用環(huán)境下的 自動化”。在實際應(yīng)用過程中,為了實現(xiàn)對業(yè)務(wù)過程的工作流管理,需要對業(yè)務(wù)流程及其各個步驟之間業(yè)務(wù)規(guī)則的抽象,概

2、括,做成一個統(tǒng)一通用的流程管理軟件系 統(tǒng),這種軟件系統(tǒng)就是工作流管理系統(tǒng)。 工作流管理系統(tǒng)的主要功能是通過計算機技術(shù)的支持去定義、執(zhí)行和管理工作流,協(xié)調(diào)工作流執(zhí)行過程工作之間以及群體成員之間的信息交互。工作流管理系統(tǒng)將 業(yè)務(wù)流程中工作如何組織協(xié)調(diào)在一起的規(guī)則抽象出來,從而分離了具體工作的邏輯和流程組織的邏輯。實現(xiàn)對業(yè)務(wù)過程的抽象建模、業(yè)務(wù)過程仿真分析、業(yè)務(wù)過程優(yōu) 化、業(yè)務(wù)過程管理與集成。從而最終實現(xiàn)業(yè)務(wù)過程的流程自動化管理。 開發(fā)人員或者流程的應(yīng)用人員遵從工作流管理系統(tǒng)的規(guī)則或約定,設(shè)計和實現(xiàn)具體的業(yè)務(wù)流程。 工作流系統(tǒng)結(jié)構(gòu)圖: 天藍色藍色:軟件構(gòu)件,完成工作流管理系統(tǒng)不同組成部分功能的實現(xiàn);

3、 黃色:系統(tǒng)控制數(shù)據(jù),工作流管理系統(tǒng)中的一個或多個軟件構(gòu)件使用的數(shù)據(jù); 棕色:應(yīng)用與應(yīng)用數(shù)據(jù),對于工作流管理系統(tǒng)來說,它們不是工作流管理系統(tǒng)的組成部分,而是屬于外部系統(tǒng)和數(shù)據(jù),它們被工作流系統(tǒng)調(diào)用來完成整個和部分工作流管理的功能。 web工作流管理系統(tǒng)主要功能: 業(yè)務(wù)流程建模; 參與的用戶,權(quán)限,角色設(shè)計; 工作流測試運行; 業(yè)務(wù)表單模塊的建立; 流程發(fā)布運行; 流程管理和監(jiān)控; 流程出錯后的修復(fù)。 通常開發(fā)一個工作流管理系統(tǒng)主要包含如下幾個部分: 工作流引擎開發(fā) 工作流定義工具 自定義表單模塊 流程管理和監(jiān)控 工作流引擎:主要是實現(xiàn)業(yè)務(wù)流程的規(guī)則抽象,模型的建立,解釋,以及為流程實例提供運行

4、環(huán)境,并解釋執(zhí)行流程實例。 工作流定義工具:主要是實現(xiàn)工作流的描述文件的定義和建立,通過可視化的方式把復(fù)雜的流程定義以圖形化的方式顯示出來,并加以操作。 自定義模塊:主要指自定義表單,實現(xiàn)業(yè)務(wù)模塊的工具。 流程管理和監(jiān)控:主要指組織機構(gòu)、角色,流程實例等數(shù)據(jù)的維護管理和流程執(zhí)行情況的監(jiān)控;之二 工作流引擎工作流引擎,主要是實現(xiàn)業(yè)務(wù)流程的規(guī)則抽象,模型的建立,解釋,以及為流程實例提供運行環(huán)境,并解釋執(zhí)行流程實例。工作流引擎必須要包含一個工作流模型的設(shè)計,工作流模型就是對業(yè)務(wù)流程抽象的一個模型,是整個工作流引擎的基礎(chǔ)。所以模型設(shè)計的好壞決定引擎的功能是否靈活,也決定了工作流管理系統(tǒng)從設(shè)計實現(xiàn)到運行

5、實施等諸多環(huán)節(jié)。 在信息管理自動化的環(huán)境下,工作流模型必須采用簡單、直觀、又具有較強描述能力的模型。我們公司的自定義工作流系統(tǒng)采用了有限狀態(tài)機的數(shù)學(xué)模型來實現(xiàn)工作流模型,有限狀態(tài)機(FSM)又稱為有限狀態(tài)自動機或簡稱狀態(tài)機,是表示有限個狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學(xué)模型。狀態(tài)轉(zhuǎn)換圖: 上圖左數(shù)第一個圖:為初始狀態(tài),用粗線圈表示;SX,S0,S01,S011,S0110 為狀態(tài)名稱U=0表示處于該狀態(tài)的輸入連線箭頭上的0或1表示導(dǎo)入狀態(tài)轉(zhuǎn)換時的輸入 工作流模型正是利用這種狀態(tài)和動作,動作的結(jié)果導(dǎo)致狀態(tài)的轉(zhuǎn)移來達到流程的流轉(zhuǎn)。工作流引擎的每一種狀態(tài)(state)被描述成為一個步驟(s

6、tep)和步驟的狀態(tài)(status)。工作流實例從一種狀態(tài)(state)升遷到另外一種狀態(tài)是通過執(zhí)行動作(action)來達到的,動作的結(jié)果(result)導(dǎo)向另外一種狀態(tài)(state),這樣達到流程的流轉(zhuǎn)。在一個工作流實例的生命周期內(nèi)通常有一個或者多個活動的狀態(tài)(state)。這些簡單的思想表現(xiàn)在工作流引擎的核心包里面,并且通過一個簡單的XML文件來描述業(yè)務(wù)工作流程。一個簡單的流程描述xml文件是這樣的:上圖xml流程的圖解狀態(tài)過程如下:開始節(jié)點-初始化動作-步驟節(jié)點動作節(jié)點-結(jié)束工作流引擎的基本元素:步驟(step) 一個step描述的是工作流所處的位置??赡軓囊粋€step流轉(zhuǎn)到另外一個s

7、tep,或者也可以在同一個step內(nèi)流轉(zhuǎn)(因為step可以通Status來細分,形成多個state)。一個流程里面可以有多個step。如:總部營運中心總經(jīng)理審批狀態(tài)(status與state) 狀態(tài)status 是用來描述工作流程中具體step(步驟)狀態(tài)的字符串。eWorkFlow中預(yù)置了三種步驟的狀態(tài) Underway(進行中)、Queued(等候處理中)、Finished(完成),用戶可以任意擴展自己的狀態(tài)。而工作流的狀態(tài)state則是由 step(步驟)status(步驟的狀態(tài))組成的。工作流狀態(tài)state的升遷來達到工作流實例的推進。如:總部營運中心總經(jīng)理審批完成流轉(zhuǎn)(transti

8、on) 一個工作流實例狀態(tài)state到另一個狀態(tài)state的轉(zhuǎn)移。如:從“總部營運中心總經(jīng)理審批等候”到“總部營運中心總經(jīng)理審批完成”動作(action) action 觸發(fā)了發(fā)生在 step 內(nèi)或 step 間的流轉(zhuǎn),或者說是基于 state 的流轉(zhuǎn)。一個 step 里面可以有多個action。action 和step 之間的關(guān)系是,step 說明“在哪里”,action 說明“去哪里”。 一個 action 典型地由兩部分組成:可以執(zhí)行此action(動作)的condition(條件),以及執(zhí)行此動作后的 result(結(jié)果)。按:感覺是從屬于流轉(zhuǎn)(transtion)。條件(condit

9、ion)類似于邏輯判斷,可包含“AND”和“OR”邏輯。比如一個請假流程中的“本部門審批階段”,該階段利用“AND”邏輯,判斷流程狀態(tài)是否為等候處理中,以及審批者是否為本部門主管。結(jié)果(result)Result 代表執(zhí)行action(動作)后的結(jié)果,指向新的 step 及其 step status,也可能進入 split 或者 join。result 分為兩種, contidional-result (有條件結(jié)果),只有條件為真時才使用該結(jié)果,和 unconditional-result(無條件結(jié)果),當條件不滿足或沒有條件時使用該結(jié)果。任務(wù)(task)任務(wù)是當工作流狀態(tài)發(fā)生轉(zhuǎn)移的時候,產(chǎn)生

10、的任務(wù)。任務(wù)可以指定為一個具體的角色,人,或者群組。任務(wù)具體分為待辦,已辦,競爭辦理,代理待辦等多種功能。分支/合并(split/join)流程的分支和合并。分支是指流程下一步可以同時分發(fā)給多個步驟,分支split 提供多個unconditional-result(無條件結(jié)果);join 則判斷多個current step 的狀態(tài)提供一個 result(結(jié)果)。子流程(subflow)子流程,動作的結(jié)果可以指向一個子流程,子流程是一個獨立的流程,可以單獨啟動也可以嵌套在另外的流程中啟動,和主流程有同步或異步銜接的屬性。自由流 (free transtion)自由流是指當一個步驟的動作執(zhí)行完成后

11、,需要跳轉(zhuǎn)到任務(wù)(任意?)的步驟。任意步驟,是指整個流程范圍內(nèi)的任意步驟,包含執(zhí)行過的或未執(zhí)行過的?;赝肆鳎╮eturn transtion)回退指當流程實例運行到某個步驟的時候,由于某些特殊原因需要回退到已經(jīng)執(zhí)行過的某個步驟上。回退是一種特殊的過程,只有在運行過程中才會明確知道要回退到那個步驟,回退往往需要執(zhí)行業(yè)務(wù)補償?;赝撕妥杂闪鞑灰粯?,回退會摸掉當前步驟到回退步驟之間的運行軌跡,就像初次運行到回退的步驟一樣,同時需要輔助業(yè)務(wù)補償來到達業(yè)務(wù)數(shù)據(jù)的回退。工作流引擎核心包內(nèi),對這些基本元素做解釋,并提供流程實例啟動,動作執(zhí)行,任務(wù)完成等等API,達到對業(yè)務(wù)流程的抽象。業(yè)務(wù)系統(tǒng)集成工作流后,做好

12、業(yè)務(wù)流程建模,然后利用自定義表單做好相應(yīng)業(yè)務(wù)數(shù)據(jù)的處理,將表單掛接到流程上。啟動工作流系統(tǒng),就可以實現(xiàn)業(yè)務(wù)系統(tǒng)了。之三 可視化流程設(shè)計器 在工作流管理系統(tǒng)中,引擎的所有的活動,驅(qū)動,和流轉(zhuǎn),都是以流程定義為基礎(chǔ)而展開的。流程定義文件是流程能運行的先決條件,同時流程定義文件又是工作流 引擎的設(shè)計基礎(chǔ),引擎必須要能生成,解釋和獲取到任意流程定義節(jié)點的信息。業(yè)務(wù)流程建模就是將一個具體的業(yè)務(wù)流程系統(tǒng)用流程定義文件來描述。而生成這個流 程定義文件的可視化編輯工具就是流程設(shè)計器。一般來說,只要是足夠熟悉流程定義的各個步驟和節(jié)點的意義,流程描述文件可以用文本編輯器手動的輸入來生成。但是這樣做對用戶的要求太高

13、了。通常都會采用一個可視化的流程定義工具來實現(xiàn)。工作流定義工具實現(xiàn)方式:用java的圖形界面包來實現(xiàn):生成一個java application,需要在客戶端裝jre,是c/s的應(yīng)用,每個使用的客戶端必須安裝jre,安裝這個可視化的編輯工具,這種方式根本不適合web管理系統(tǒng)的發(fā)布,每個客戶端都需要安裝,不理想;用applet來實現(xiàn):這種方案雖然解決了每個使用的客戶端安裝程序的過程,但還是需要大量下載安裝包,下載jre,也不是理想的實現(xiàn)方式。用html+js+ajax來實現(xiàn):無須客戶端安裝,無須下載jre,只是第一次運行需要下載所有js的腳本,是理想的實現(xiàn)方式。下面主要談html+js+ajax的

14、實現(xiàn)方式: 工作流流程定義,必須要圖形化的實現(xiàn)流程的建模,使得流程建模變得簡單和可操作,用戶通過拖、拉、點、拽來實現(xiàn)流程的建模。通過html和dhtml來實現(xiàn)界面的展示。通過javascript和xml,dom分析實現(xiàn)動態(tài)的修改和編輯節(jié)點屬性。通過ajax來實現(xiàn)和后臺的交互。通過vml來實現(xiàn)圖形化的操作,畫線,畫方框,拖動等等。 運用js, dhtml, xml, dom, vml 這些技術(shù)足可以將界面的編輯功能做得靈活簡便,然后有ajax隨時可以取得和后臺交互,同時是web網(wǎng)頁發(fā)布的,可以和應(yīng)用程序一起集成發(fā)布,通過權(quán)限控制可以開放給最終端的用戶使用。一般來說流程定義文件的保存可以是保存成文

15、件的形式,也可以保存到數(shù)據(jù)庫的表中,因為采用ajax的方式來設(shè)計保存,這兩種方式很容易都可以實現(xiàn)。同時通過文件方式的保存和數(shù)據(jù)庫方式的保存,很容易做到流程的上傳和下載,真是一舉兩得。下面模擬一個業(yè)務(wù)流程建模工具操作界面:之四 自定義表單在開發(fā)工作流管理系統(tǒng)時,很多人只重視流程引擎,流程模型的建立,而忽略了自定義表單工具。自定義表單工具是實現(xiàn)獨立業(yè)務(wù)模塊的可視化編輯工具,業(yè)務(wù)模塊可以通過這種工具編輯生成。如果單純從流程實現(xiàn)來說,確實自定義表單不是重點,流程實現(xiàn)了,可以掛接上表單就可以了。至于表單業(yè)務(wù)模塊,可以是表單工具生成的,也可以是代碼編寫的表單,總之能用代碼來實現(xiàn)的是最靈活的。但實際上流程的

16、每一個步驟的業(yè)務(wù)數(shù)據(jù)都需要靠表單來展現(xiàn),用表單來實現(xiàn)業(yè)務(wù)數(shù)據(jù)的存儲,如果總是需要靠代碼來實現(xiàn)的話,沒有一個功能強勁的自定義表單工具來支撐的話,再好的工作流系統(tǒng)也不過是瘸腿的馬,跑不長遠,更別說可視化的完成業(yè)務(wù)流程了。 做過mis系統(tǒng)開發(fā)的人都知道,表單這塊涉及到表現(xiàn)層,操作界面的人機交互,后臺又涉及到業(yè)務(wù)邏輯,業(yè)務(wù)數(shù)據(jù)的存儲,是開發(fā)mis系統(tǒng)的重點,難點。而工作流引擎都是將這層業(yè)務(wù)模塊的實現(xiàn)剝離,讓用戶自己去實現(xiàn),工作流引擎只實現(xiàn)一個抽象的流程流轉(zhuǎn)。如果要做到流程的自定義,業(yè)務(wù)模塊的自定義,一定需要有一個強大的自定義表單模塊來支持,才能使得流程的定義變得可視化,可操作,可提供給最終端的用戶使用

17、。自定義表單,因為涉及到界面的展示,人機操作交互,頁面的構(gòu)件一定要豐富。常用的構(gòu)件:label,textbox,combobox,spin , shape , checkboxlist , radiolist , dropdownlist , webgrid , upload等等;復(fù)雜的構(gòu)件:表格,樹控件,統(tǒng)計圖標展現(xiàn)控件,多列下拉列表控件等等。表格的展現(xiàn)和輸入應(yīng)該是最豐富的,功能應(yīng)該做到很方便和強大,比如做到和數(shù)據(jù)集的綁定,快速方便的展現(xiàn)數(shù)據(jù),單元格的輸入支持多種輸入方式,下拉combox,多列的下拉輸入,彈出日期選擇,彈出窗口選擇,回選數(shù)據(jù)等等。單元格,行的事件的支持,雙擊,單據(jù),離開等等

18、。多樣齊全的數(shù)據(jù)驗證功能:比如判斷空,是否數(shù)字,取值范圍判斷,是否日期,是否電話號碼,省份證驗證,漢字驗證,等等多樣的驗證。自定義表單,有可視化表單設(shè)計界面,直接采用拖、拉、點、拽的方式來設(shè)計表單。常見的數(shù)據(jù)獲取保存等等,直接用頁面構(gòu)件,不需要用戶寫代碼就能完成(有時候簡單的sql語句還是需要寫)。采用b/s的方式來設(shè)計,易于做web發(fā)布,提供給最終端的用戶使用。采用ajax的方式來實現(xiàn)隨時隨地的和后臺交互,做到局部刷新,粒狀更新,同步、異步調(diào)用等,使得界面交互性強,易于操作。數(shù)據(jù)層和樣式分離,便于和其它系統(tǒng)集成;支持多種后臺數(shù)據(jù)庫;編輯層和最終生成的表單分離,易于發(fā)布和集成。下面是eform

19、自定義表單,結(jié)合工作流管理系統(tǒng)的一個示例:說明:實現(xiàn)員工報銷的一個流程 主要業(yè)務(wù)要求: 員工填寫報銷單,單據(jù)為主子表的設(shè)計,部門經(jīng)理和總經(jīng)理會簽,任何一位經(jīng)理拒簽后,都打回重新填寫,打回后員工也可作廢報銷單;重新填寫再次申報,直到經(jīng)理都審核通過,財務(wù)通知領(lǐng)取報銷金額,員工領(lǐng)取后,流程實例結(jié)束。 業(yè)務(wù)流程圖:eform自定義表單模塊設(shè)計:費用報銷單啟動流程:流程運行軌跡圖:流程剛完成初始化,運行到填寫報銷單步驟提交費用報銷申請:如下圖,點擊“保存執(zhí)行”,即提交,流程會流轉(zhuǎn)到審核階段。經(jīng)理審核:兩步審核都通過后,財務(wù)發(fā)出通知員工領(lǐng)取報銷費用。之五 開源osworkflow之用戶系統(tǒng)改造前言: os

20、workflow是個開源的工作流引擎,采用的是有限狀態(tài)機的模型。內(nèi)置有osuser這個用戶系統(tǒng),來處理用戶權(quán)限相關(guān)的部分。但是功能很弱,只有 用戶表,用戶組表,即簡單的將用戶劃分給用戶組。在定義流程的時候,可以將權(quán)限處理給一個具體的用戶,也可以給一個用戶組。缺點:功能太過簡單,不利于擴展,也不利于和用戶系統(tǒng)集成,還沒有開源的源代碼。改造方案: 將osuser去掉,重新編寫一套用戶系統(tǒng),此用戶系統(tǒng)只在工作流系統(tǒng)中使用,因此數(shù)據(jù)權(quán)限等從簡。 保留使用osuser.xml文件的配置,修改成fcuser.xml,此配置文件采用xml格式,配置具體執(zhí)行和數(shù)據(jù)庫交互的實現(xiàn)類,便于擴展各種數(shù)據(jù)庫的個性化函數(shù),sql,關(guān)鍵字的不同寫法。 采用映射表的方式,和實際用戶系統(tǒng)的表關(guān)聯(lián),因為用戶系統(tǒng)要集成工作流,一般都有自己的用戶組織機構(gòu)管理系統(tǒng)。工作流系統(tǒng)必須要和用戶系統(tǒng)的用戶權(quán)限系統(tǒng)無縫集成,所以沒有必要再做一套用戶系統(tǒng),直接將用戶系統(tǒng)的數(shù)據(jù)映射過來,達到集成的目的。如果不采用表數(shù)據(jù)的映射,也可以編寫實現(xiàn)類,實現(xiàn)UserProvider接口,將用戶系統(tǒng)已經(jīng)有的方法關(guān)聯(lián)過來

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論