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