工作流与Petri net的关系
SOA中國線路圖?>?SOA業務流程?>?工作流與Petri net的關系
工作流與Petri net的關系
2008-7-10工作流與Petri net的關系
工作流的發展過程
以前,信息系統是設計來支持單個任務的執行。今天的信息系統需要支持業務流程,其不只局限于僅僅關心任務,還關注控制、監控且支持一個業務流程的邏輯方面。這里以歷史發展的視圖給出工作流管理系統的進化路線圖。
圖1? 工作流管理系統的出現
20世紀60年代應用軟件直接構建于OS之上,負責所有紛繁復雜的事物,甚至于要應用軟件自身維護數據文件的操作。后來,隨著SQL標準出臺,DBMS(數據庫管理系統)出現,將應用從數據文件維護的泥潭中解脫出來,但應用軟件仍然要維護復雜的UI界面,這是出現了UIMS(用戶界面管理系統),C/S模式出現了象delphi這么優秀的RAD開發工具,抽取整理出了大量實用易用的用戶交互控件,B/S出現了象Strust專門解決用戶展現層問題的優秀框架。然而,經過一段時間的業務以及技術的沉淀,人們發現要在各個分布得象梅花樁一般的企業應用上“打出組合拳”,也就是應用集成實在太難了,同時隨著網絡分布式技術成熟,人們產生了將WFMS(工作流管理系統)單獨提出來應變復雜而多變的業務流程驅動的業務解決方案。
比起技術方面的成熟程度,流程管理理念方面似乎更早熟一些,在早于技術發展的步伐人們就提出了BPR(業務流程重組)和CPI(持續流程優化)。企業開始關注流程,以及流程管理。人們開始了解以部門為導向的系統觀把部門間的聯系割裂開來,必須靠流程將部門聯系在一起。正如哈默所說:“為顧客創造價值的是流程,而不是哪個部門”。個人體會是關注流程的目的就是要要以流程為主線更好地理解公司整體經營管理,從而更好地實現整合,實現整體最優化,更有效地支持企業戰略。
工作流基本概念梳理
工作流管理系統從原理上和實現上來講可以認為是一個BOS(業務操作系統),它管理的是業務的流程,負責對業務流程進行靜態的定義,則可以類比看做為OS(操作系統)里的靜態的可執行程序的代碼。基于靜態流程規則的定義,業務流程又具有動態性,就是我們常說的流程實例。OS負責多進程的創建、調度、執行,保存進程的上下文信息等操作,同時需要人為操作時,等待人工執行,目的是讓多個進程可以有條不絮地完全執行完畢。工作流管理系統的功能也類似,管理業務流程實例的創建、調度、執行,并保存各自流程實例的執行上下文信息,同時提供人工任務接口,以便讓各個業務流程實例走完走好,好的管理系統還會給出相應的執行報告和監控接口。
以上只是從原理類比上做了個比喻,其實工作流發展至今,因為建模語言標準的過多與復雜,各自都有一套自己描述工作流相關的技術術語。這里進行一個簡單的輸理,以便可以進一步理解本文后面會使用到的術語。”case”這個詞,中文直譯可能就是案例的意思,但這里理解為流程實例,一個流程定義可以對應多個流程實例,如同一個類可以對應多個該類的對象一樣。工作流管理系統要做的就是盡可能地有效并高效處理”case”。而通過按照某特定的次序執行”task”來處理”case”。這里”task”是任務的意思,工作流流程定義指定哪個任務要執行,且以什么次序執行。那么以什么次序執行則為”condition”(條件),滿足什么條件就可以執行,執行完后會滿足什么條件。對于特定的”case”要執行的”task”則叫做”work item”。而術語”resource”(資源)在這里既可以是人也可以是機器,是執行任務的主體。而某個case下由相應的執行者”resource”執行的”task”(任務)就可以確定一個”activity”(活動)。
如下圖為工作流的三維圖
這里給出的工作流的三維圖,我們只關心”process”和”case”這兩個軸,因為這里討論的是工作流與petri net的關系。
Petri net理論基礎介紹
Petri net分經典petri net理論和高級petri net理論。是對離散并行系統的數學表示。Petri網是1960年代由卡爾·A·佩特里發明的,適合于描述異步的、并發的計算機系統模型。Petri網既有嚴格的數學表述方式,也有直觀的圖形表達方式,既有豐富的系統描述手段和系統行為分析技術,又為計算機科學提供堅實的概念基礎。研究領域趨向認為Petri網是所有流程定義語言之母。本文所提到的petri net未特別說明,均表示經典petri net。
Petri網是簡單的過程模型,由兩種節點:庫所和變遷,有向弧,以及令牌等元素組成的。
Petri網的結構
(1) Petri網的元素:
庫所(Place)圓形節點?
變遷(Transition)方形節點?
有向弧(Connection)是庫所和變遷之間的有向弧?
令牌(Token)是庫所中的動態對象,可以從一個庫所移動到另一個庫所。
(2) Petri網的規則是:
有向弧是有方向的?
兩個庫所或變遷之間不允許有弧?
庫所可以擁有任意數量的令牌
Petri網的行為
如果一個變遷的每個輸入庫所(input place)都擁有令牌,該變遷即為被允許(enable)。一個變遷被允許時,變遷將發生(fire),輸入庫所(input place)的令牌被消耗,同時為輸出庫所(output place)產生令牌。
變遷的發生是原子的?
有兩個變遷都被允許的可能,但是一次只能發生一個變遷
如果出現一個變遷,其輸入庫所的個數與輸出庫所的個數不相等,令牌的個數將發生變化
Petri網絡是靜態的?
Petri網的狀態由令牌在庫所的分布決定?
Petri網的形式化定義
一個經典的Petri網由四元組(庫所,變遷,輸入函數,輸出函數)組成。任何圖都可以映射到這樣一個四元組上,反之亦然。
Petri網流程建模
一個流程的狀態是由在場所中的令牌建模的,狀態的變遷是由變遷建模的。令牌表示事物(人,貨物,機器),信息,條件,或對象的狀態; 庫所代表庫所,通道或地理位置;變遷代表事件,轉化或傳輸。 一個流程有當前狀態,可達狀態,不可達狀態。
經典Petri網的局限性
沒有測試庫所中零令牌的能力?
模型容易變得很龐大?
模型不能反映時間方面的內容?
不支持構造大規模模型,如自頂向下或自底向上
工作流與Petri net的關系
工作流發展至今,已經不是簡單的一種工程實施的科學,它如同數據庫一樣有堅實的數學理論基礎。當然現在流行的開源的工作流如Jbpm以及Osworkflow都是以軟件工程設計為主導的實現,里面對工作流petri net理論的引用不多,就算是有也只是部門概念的簡單借用而已。現階段對petri net的研究和實踐也有開源的實現,但主要都用于研究和學習領域。前面提到“研究領域趨向認為Petri網是所有流程定義語言之母”,自然petri net就能用于工作流流程建模,但不能是簡單地“拿來主義”。在沒對這些概念弄清楚之前,筆者也走過不少彎路,簡單地認為反正petri net就是作為工作流的建模語言就是,沒搞清楚什么情況下才適用,怎樣才能讓petri net作為工作流建模語言,弄清楚這個對搞清workflow與petri net的關系相當重要。這里談幾點自己的體會,我們普遍所說的petri net本身就很大的范圍,如果只是指經典petri net理論就夠了,就可以做為工作流流程建模的語言這是大錯特錯的。上面也列出了基本的經典petri net理論。在這些基本理論中我們可以看出,petri net是一個自己推動的系統,即 只要在滿足“變遷”的“庫所”處有足夠的“托肯”就會發生“變遷”,而不需要等待外界人工或系統的干預或響應。這點是與工作流系統最大的不同,看看WMFC所給出的工作流系統構件與接口圖
里面的接口2和接口3就是工作流管理系統分別與人和機器打交道的。工作流管理系統受到外界系統的影響,是一個reactive(被動)的系統。而相對與petri net系統,則是相對自封的系統,其主動推進,不涉及人工或系統的干預和響應。為此,著名的工作流專家、教授Wil M.P. van der Aalst在其著名的《The application of Petri nets to workflow management》論文中以經典petri net理論為基礎給出了WF-Net(工作流網)作為petri net理論應用于工作流建模語言的成果。WF-Net除了給出了四個基本路由構件表示(順序、分支、條件、循環),還給出了工作流管理系統建模語言中對外界響應的標記,有四種,自動觸發、消息觸發機制、用戶觸發、定時器觸發。
可見,petri net對于工作流管理系統,并不僅僅只是與工作流路由的模式相關而已,petri net本身是一個開放的理論,任何人都可以基于其發展出自己的“網論”。它是建模語言的基礎,是擴展的基線。具體將工作流與petri net的概念相互映射,工作流中的”case”可以用petri net中的”token”(托肯)來建模,”task”可以用”transition”( 變遷)來建模,”condition”可以用”place”(庫所)來建模。當然,正如前面所提到的利用petri net來建模工作流流程定義,自然就會讓工作流流程模型變大,因為它將activity(活動)拆分為了“條件”和“變遷”,這樣可以更好地描述工作流管理系統除資源因素以外的“條件滿足”,以及再加入資源(這里包括人和機器)能動性發揮作用后,進入響應的“變遷”。
當然,petri net對于工作流,不僅僅在建模語言方面的貢獻,如果我們的目光只是停留在這里,那么就太短淺了。現在研究領域在經典petri net中對模型的分析技術、沖突檢測技術等等也有了大幅度的進步。與操作系統類似,業務流程模型中的路由也有可能出現因為資源的競爭產生死鎖現象,這也是工作流方面在流程仿真--當然這就涉及到BPM技術了,相關的方面了。
原文出處:http://gocom.primeton.com/blog10871_19935.htm
???轉載于:https://www.cnblogs.com/sqlite3/archive/2010/09/02/2566917.html
總結
以上是生活随笔為你收集整理的工作流与Petri net的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: InstallSield更新包快速入门文
- 下一篇: U9在SQL Server上的性能优化经