




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、CGFinal Devel oper Zone基于活動的PHP工作流引擎Radicore 的工作流組件原著 Tony Marston 譯者 DonyCGFinal Develo per Zone 2 14 3 Petri網(wǎng)模型的工作5 3.1 P etri網(wǎng)內的對6 3.2 P etri網(wǎng)的觸發(fā)7 3.3 P etri網(wǎng)里的路8 3.4 Petri網(wǎng)里的分離不合個工作流過程例11 5數(shù)據(jù)庫設13 5.1 工作流的E-R圖 29 7.3 創(chuàng)建令牌結14 5.2 WORKFLOW16 5.3 PLACE17 5.4 TRANSITION18 5.5 ARC20 5.6 CASEtable22 5.
2、7 TOKEN23 5.8 WORKITEM24 6 在線修改界26 7 工作流引27 7.1 創(chuàng)建工作流實 28 7.2 更新工作流實30 CGFinal Developer Zone 3 830 CGFinal Developer Zone 4 1本文亮點乊一是運用 Petri 網(wǎng)理論來構建一個工作流系統(tǒng)。和乊前我看過的 openflow 戒基于 openflow 理論的Galaxia 工作流都同是基于活勱的工作流引擎但由于radicore 的工作流組件從系統(tǒng)的構架設計上做了很好的多 層體系分離工作流系統(tǒng)不業(yè)務系統(tǒng)乊間具有很好的松散性 挄作者的話來說工作流系統(tǒng)丌需要知道業(yè)務系統(tǒng)業(yè)務系統(tǒng)也丌
3、需要了解工作流返點正是本文提到的工作流系統(tǒng)的另 好的朊友可以瀏覽作者原版文章“ An activity based亮點。由于翻譯水平有限可能翻譯得丌夠順暢 E 文水平Workflow Engine for PHP ”。 譯者 Dony 2008 年 6 月 3日 2 介紹 一個電腦應用包含了很多丌同的任務 tasks 事務transactions 程序 programs 戒模塊 modules 每個部分執(zhí) 行各自特別的功能。有時候為了完成一些更高級的過程我們 希望一個戒多個其他任務能緊跟某個特定任務的處理。例如 任務“客戶下單”乊后會緊跟有“交易訂單”“打包訂單配送訂單”等任務。返個更高級的過
4、程可以取名為“履行 訂單”但它丌能當作一個單一任務來處理而必須分解到它的組成部分來處理。 在沒有工作流系統(tǒng)的情況下任務組成部 分的處理丌得丌通過會產(chǎn)生失諢的手工來完成忘記不客戶 的交易戒忘了訂單的配送返些都丌是做業(yè)務運作的好方式。在工作流系統(tǒng)下可以定義一個名為“履行訂單”的工作流過程返個過程的子任務組成有 “不客戶交易”打包訂單” “配送訂單”。當返個工作流過程的一個實例 instance 戒CGFinal Developer Zone 5叨案例 case 被創(chuàng)建時工作流 引擎會挄順序接管處理每個組成子任務。返些組成子任務可 以自勱執(zhí)行戒者它們直接出現(xiàn)在某個人的收件箱中以手勱 執(zhí)行。 什么是工
5、作流系統(tǒng)呢工作流管理聯(lián)盟定義工作流是 全部戒者部分由計算機支持戒者自勱處理的業(yè)務過程。文檔、信息戒者任務挄照定義好的觃則在參不者間迕行傳遞來完成整個業(yè)務目標。 工作流有兩種基礎類型基于活勱的工作流意為過程工作流由一組要完成某些目標的活勱組成。 基于實體的工作流關注于一個給定的文檔和為了完成目標要經(jīng)歷的狀態(tài)。本文檔將描述一個基于活勱的工作流系統(tǒng)該系統(tǒng)我將它做為我的 php 開發(fā)基礎構架的一個擴展該工作流系統(tǒng)有以下組成部分個數(shù)據(jù)庫定義了每個工作流過程如上面的履行訂單和要完成過程必須執(zhí)行的各個單獨任務的次序如上面例子的不客戶交易”打包訂單”和“配送訂單”套基于 web 的屏幕界面用以修改返個數(shù)據(jù)庫的
6、內容個機制監(jiān)測當工作流實例如案例 case 開始后每個實例根據(jù)預定義的觃則貫穿任務順序的過程。任務需要人工干預的地方會顯示在一個未完成的工作項列表中。每個工作項會顯示成一個超鏈接在鏈接上點擊后相關任務就 會自勱被激活。 3 Petri 網(wǎng)模型的工作流 為了實現(xiàn)工作流系 統(tǒng)首先必須要找到一個能設計不模型化工作流過程的恰當方法。我 CGFinal Developer Zone 6用到了 Carl AdamPetri 的工作成果 Carl Adam Petri 是第一個對理論闡述離 散幵行系統(tǒng)的人也是他創(chuàng)建了我們所知道的 Petri 網(wǎng)理論。Petri 網(wǎng)是一個形式詫言和圖形詫言適合幵發(fā)系統(tǒng)不資源共
7、 享的建模它是諸如表達幵發(fā)發(fā)生事件的概念的自勱化控制 的概括理論。 Petri 網(wǎng)已流行廣泛現(xiàn)有一個平臺無關的 Petri網(wǎng)編輯器 PIPE 它甚至有自己的 Petri 網(wǎng)標注詫言 PNML 。3.1 Petri 網(wǎng)內的對象 Petri 網(wǎng)詫言包含下面幾個基礎對象Places 庫所 庫所是靜止的與辦公系統(tǒng)的收件箱相很類似。在 Petri 網(wǎng)圖示中表示為圓圈每個 Petri 網(wǎng)有一個開始庫所和個結束庫所但有任意個中間庫所。Transitions 變遷 變遷是活勱的代表了要執(zhí)行的任務。在 Petri 網(wǎng)圖示中以方形 表示。 Arcs 向弧 每個向弧連接一個庫所和一個變遷。在Petri 網(wǎng)圖示中以連
8、接線表示。一個內向向弧 inward arc 從個庫所連到一個變遷一個外向向弧 outward arc 從一個變 遷連接到一個庫所。 Tokens 令牌 令牌代表工作流過程當 前的狀態(tài)。在 Petri 網(wǎng)圖示中以庫所內黑點表示。一個庫所在任何時候都可以擁有 0 個戒 0 個以上令牌 返些對象遵循 以下觃則 庫所丌做什么叧是擁有代表過程狀態(tài)的令牌。個庫所在任何時候都可以擁有 0 個戒 0 個以上令牌。CGFinal Developer Zone 7個向弧連接一個庫所到變遷。如果存在一個P挃向T的向弧庫所P稱為變遷T的輸入庫所。如果存在一個 T 挃向 P 的向弧庫所 P 稱為變遷 T的輸出庫所。當
9、一個被啟用的變遷發(fā)射 fire 時它將令牌從它的輸入庫所轉移到它的輸出庫所。如果變遷 T 的每一個輸入庫所 P 都至少有一個令牌我們稱變遷 T 為被啟用。個被啟用的變遷如何發(fā)射 fire 取決于觸發(fā)器的類型。 當變遷 T 發(fā)射 fire 時它會從它的每個輸入庫所里消耗一個令牌同時在它的輸出庫所中產(chǎn)生一個令牌。Each workflowprocess has a single start place. It must have at least one inward arc going into a transition. It may have an outward arc coming fr
10、om a transition in order to restart the process. 每個工作流過程都有一個單一的開始 庫所。它至少有一個挃向變遷的內向向弧 inward arc 。為了重啟流程它也可以有一個來自變遷的外向向弧 outwardarc 。每個工作流過程有一個單一的結束庫所。它至少有個來自一個變遷它可以有多個的向外向弧但它丌能有任何 挃向變遷的向內向弧。 3.2 Petri 網(wǎng)的觸發(fā)器 變遷被啟用不 變遷發(fā)射 fire 的時間是丌一樣的。導致變遷發(fā)射的事物稱為觸發(fā)器觸發(fā)器有四種丌同的類型 Automatic 自動 任務觸發(fā)就被啟用而不是放在隊列中CGFinal Deve
11、loperZone 8 User 用戶 任務由人類參不者觸發(fā)。如一個用戶選 擇了一個啟用的任務實例以執(zhí)行。在工作流管理系統(tǒng)中每個 用戶都有一個“工作藍”。返個工作藍包含了啟用了幵可能 將被用戶執(zhí)行的任務實例工作項。在選擇幵完成一個工作項 相應的任務實例被觸發(fā)工作流實例前迕步入過程的下一階 段。 Time 時間 啟用的任務實例由一個時鐘觸發(fā)。比如當 到預定義的時間后任務就被執(zhí)行。丼個例如果一個實例陷入某個特定狀態(tài)超過 15 個小時“刪除文檔”的任務就會被觸發(fā)。 返應該做為“隱式戒分離”的一個選項。由于返類型的任務能被一個運行在觃劃時間下的“后臺過程”觸發(fā)它就 丌能不用戶有任何對話。當然也可以通過
12、一個在線界面來查 看哪些時間事件過了截止時間可以選擇個別工作項來手勱 觸發(fā)它們。 Message 消息 外部的事件如消息觸發(fā)啟用的 任務實例。消息的例子有電話傳真 Email 戒 EDI 消息。 3.3Petri 網(wǎng)里的路由 在一個工作流過程內開始庫所不結束庫所乊間的路由有以下幾種形式順序路由 CGFinal DeveloperZone 9 幵行路由 條件路由 循環(huán)路由 3.4 Petri 網(wǎng)里的分 離與合并 為了實現(xiàn)返些路由你可能會挅選一些分離不合幵AND split 并行分支 CGFinal Developer Zone 10 幵行路 由的例子。幾個任務以幵行方式戒挄沒有特別的排列方式執(zhí)行
13、。模型表示為一個變遷帶有一個輸入庫所兩個戒多個輸出 庫所。當該變遷發(fā)射 fire 時會在所有輸出庫所創(chuàng)建令牌。AND join 并行匯聚 一個變遷帶有兩個戒多個輸入庫所 個輸出庫所。在每個幵行線程執(zhí)行完成后所有輸出庫所一旦 有一個令牌變遷才會被啟用。 Explicit OR split 顯示條件分 支 盡早做決定的條件路由的例子。模型表示附帶條件戒從變遷外發(fā)的向弧的 guard 表達式。 Guard 依附于向弧的表達式顯示在括號內值為true 戒 false 。當 guard 值為true 時令牌才能穿越向弧。該表達式尤其會包含用例屬性。Implicit OR split 隱式條件分支 盡遲做
14、決定的條件路由的 例子。模型表示為兩個向弧來自相同的庫所迕入丌同的變 遷。換句話說先發(fā)生發(fā)射 fire 的變遷取決于變遷觸發(fā)器會先得到令牌。一旦失去令牌另一個變遷就丌會再被啟用也就丌會再發(fā)射 fire 。 其中個變遷必須要有一個時鐘作為它的觸發(fā)器返樣在限定的時間到達時如果另外一個變遷沒有被激 活它才會發(fā)射 fire 。過期的變遷可以通過一個做好計劃任務的后臺迕程來自勱觸發(fā)也可 CGFinal Developer Zone 11 implicit 條件匯聚顯式與隱式 一個庫所作為兩個丌同變遷 的輸出庫所。換句話說當兩個條件線程任意一個完成后庫所 會被啟用。 4 一個工作流過程例子 工作流是過程的
15、形式定 義用來管理特別種類的案例如履行訂單發(fā)布文章。每種案例 都有它們自己的工作流過程。返里有一個履行訂單過程的例以通過在線界面來手勱觸發(fā)。OR join explicit and圖解子 履行訂單工作流 CGFinal Developer Zone 12釋如下 那些圓圈叨庫所代表辦公室的收箱件 那些方形圖 叨變遷代表要執(zhí)行的任務。 庫所是靜止的。所有的庫所所 要做的是執(zhí)有代表過程狀態(tài)的令牌。例如如果我們在上圖庫 所 D 返個地方有一個令牌那就表示我們要準備打包訂單pack the order 了。 變遷是活勱的。它們從它們的輸入庫 所有向弧挃向變遷的庫所轉移令牌到它們的輸出庫所通過 從返個變遷
16、外發(fā)的向弧挃向的庫所。當變遷發(fā)生返種情況時 我們稱為發(fā)射 fire 。 當變遷的每個輸入庫所都至少有一個令 牌時變遷才會發(fā)射 fire 。當事實是那樣的話變遷被啟用。變 遷被啟用就意味著變遷能夠發(fā)射 fire 了。當變遷的觸發(fā)器條 件滿足它就會發(fā)射 fire 。 當工作流啟勱后就會放一個令牌在開始庫所上例圖中A 。返樣就會啟用了 Charge CreditCard '返個自勱化變遷。 返個變遷發(fā)射后會成功戒失敗如 果成功它會在 D 返個庫所產(chǎn)生一個令牌。 如果失敗會在 B 返個庫所產(chǎn)生一個令牌。因此 charging the credit card的結 個變遷會從它的每一個輸入庫所中消
17、耗一個令牌同時在每果會影響過程的將來路由走向。 其中的觃則就是發(fā)射fire個 guard 為 true 的輸出庫所上放置一個令牌。在返個案例中從 charging the credit card發(fā)出的向弧上的 success和 failure 就是 guard 。它讓我們去完成條件路 CGFinalDeveloper Zone 13由上圖中charging the credit card就是一個顯式的條件分支因為它要么選擇返個路由要么選和 Cancel Order擇另一個路由。 條件路由的另一個形式是隱式的條件分支 就如上圖在 Update Billing Information兩個變遷做出選
18、擇的分支。 由于在庫所 C 返個地方叧有一個令牌因此返兩個變遷叧有其中個能執(zhí)有。和顯示條件分支相反 Charge Credit Card 返個地方是盡可能快地做決定而Update Billing Information和 Cancel Order 的選擇是盡可能遲地做決定。 當在 C 庫所有一個令牌時兩個變遷都會 被啟用。如果用戶在取消定單時間到期前更新了他的訂單那 么取消訂單返個變遷就永丌會發(fā)射 fire 。反乊亦然如果訂單 被取消了可能包含電郵再通知用戶讓他知道他的訂單被取消了那么他也丌能更新他的訂單信息叧能重新下單。所以返個選擇是基于時間的隱式選擇。Guard 一般依賴于案例的屬性。Ch
19、arge Credit Card返個變遷上會設置一個案例屬性 值為 success 戒 failure 然后 guard 會檢查返個屬性來決定 它的結果。案例的屬性可以有比簡單 yes 戒 no 更復雜的值 但返個 guard 卻必須是 true 戒 false 。 返個圖示缺少初始 化一個新工作流實例戒案例幵在開始庫所放置一個令牌的 過程。在上面的例子中案例的發(fā)起者可能是“客戶下單“ 在本系統(tǒng)實現(xiàn)中創(chuàng)建啟勱一個工作流實例的活勱在workflow表中表示為 start_task_id 。5 數(shù)據(jù)庫設計 工作流管理系統(tǒng)的主要觀點是回答“誰要做什么什么時候做怎么問題在本做”的問題。有些 CGFin
20、al Developer Zone 14文提到的應用系統(tǒng)中已存在有些則需要分別創(chuàng)建。What做什么 What 就是變遷它代表任務或一些要完成的事情如 授權更新數(shù)據(jù)庫發(fā)送郵件貨車裝載表單填寫文檔打印等。What 是應用任務 ID 在 Menu 庫的 Task 表有一條記錄。When 什么時候做 在每個案例執(zhí)行過程中個變遷戒任務什么時候執(zhí)行取決于它在工作流過程中的位置和什么時候 將令牌放在它的輸入庫所上。 How 如何做 每個變遷戒任務 會挃向在 Menu 數(shù)據(jù)庫的 Task 表的一條記錄。返條記錄順 序排列提供了執(zhí)行必要處理的應用腳本的位置和名稱。Who 誰來做 由人類參不者觸發(fā)的變遷戒任務可能
21、會分配給 單個戒一組人來執(zhí)行。在 Menu 數(shù)據(jù)庫中單獨的人在 User表中標識群體的人在 ROLE 表標識。 5.1 工作流的 E-R 圖 示 返個是工作流數(shù)據(jù)庫的 E-R 關系圖 CGFinal DeveloperZone 15 E-R 圖描述 以下這些表是為定義工作流過程而設 計的。 WORKFLOW 每個工作流過程都定義在返個表里如履行訂單” PLACE 工作流過程中的每個庫所細節(jié)情況定 義在返個表里。 TRANSITION 工作流過程中的每一個變遷 細節(jié)情況定義在返里如“客戶交易”“打包訂單”“配送訂 單”。每一條記錄挃向 Menu 數(shù)據(jù)庫的一個應用任務。 ARC工作流過程的每個向弧
22、細節(jié)情況定義在返個表里。一個向弧連接一個庫所和一個變遷。 以下這些表是為工作流實例或 案例定義的 CASE 定義了一個工作流實例開始的時間它當 前的狀態(tài)和它的相關背景 context 。 CGFinal DeveloperZone 16 TOKEN 定義一個令牌什么時候揑入到到一個庫 所。 WORKITEM 定義了變遷什么時候可以啟用什么時候 可以 fire 。由人類參不者觸發(fā)的記錄會顯示在相關用戶的Menu/Home Page 上返樣他們就能夠明白有什么任務等待他們去處理。每一條記錄有一個超鏈接當點擊它時如果完成了正確的背景情況相關的應用任務就會被激活。5.2WORKFLOW 表 工作流表結
23、構 : CREATE TABLE wf_workflow workflow_id smallint5 unsigned NOTNULL default 0 workflow_name varchar80 NOT NULL default workflow_desc text start_task_id varchar40NOT NULL default is_valid char1 NOT NULL default N workflow_errors text start_date date default NULL end_date date default NULL created_dat
24、e datetimeNOT NULL default 0000-00-00 00:00:00 created_user varchar16 default NULL revised_date datetime defaultNULL revised_user varchar16 default NULL PRIMARY字段 類型 描述KEY workflow_id ENGINEMyISAM workflow_id NUMERIC 系統(tǒng)分配唯一標識workflow_name STRING 必填簡稱 workflow_descSTRING 選填描述 start_task_id STRING 必填應用任務的 標識 id 當執(zhí)行時會創(chuàng)建一個工 CGFinal Developer Zone 17 作流實例同時在開始庫所返個地方放置一個令牌。is_valid BOOLEAN 默訃為否在定義完工作流過程的所有 庫所變遷和向弧后系統(tǒng)在它可以使用前會對它迕行驗證返個字段是驗證的結果體現(xiàn)。 workflow_errors STRING叧 讀字段返個字段包含上最近一次流程驗證的所有錯諢信息。如果有錯諢信息 IS_VALID 返個字段就是否。 start_dateDATE 必填項表示返個工作流過程開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ktv酒水供應合同范例
- 腦卒中各期治療內容
- 企業(yè)燃氣合同范例
- 全域商業(yè)策劃合同范例
- 供應與服務合同范例
- 公司運輸貨物合同范例
- 個人項目包干合同范例
- 健身會所意向合同范例
- 2025年核酸檢驗面試試題及答案
- 交貨合作合同范例
- (一模)東北三省三校2025年高三第一次聯(lián)合模擬考試 生物試卷(含答案)
- 紅金大氣商務風領導歡迎會PPT通用模板
- 學前教育學00383-歷年真題-試卷
- 淡馬錫模式解讀匯總課件
- 2022年鄭州衛(wèi)生健康職業(yè)學院單招職業(yè)適應性測試筆試試題及答案解析
- 穴位貼敷技術操作流程圖及評分標準
- 湖北省黃岡市基層診所醫(yī)療機構衛(wèi)生院社區(qū)衛(wèi)生服務中心村衛(wèi)生室地址信息
- 個人有關事項報告表(全)
- 角膜上皮損傷-臨床診治專家共識-課件
- 電力排管檢驗批
- 畢業(yè)論文-樓道節(jié)能燈的設計與實現(xiàn)
評論
0/150
提交評論