工作流建模(數(shù)據(jù)庫(kù))
時(shí)間:2022-12-24 18:30:01 | 來(lái)源:信息時(shí)代
時(shí)間:2022-12-24 18:30:01 來(lái)源:信息時(shí)代
工作流建模 : 將實(shí)際業(yè)務(wù)處理流程用工作流模型抽象成為一個(gè)工作流模式的過(guò)程稱(chēng)工作流建模。
一個(gè)工作流過(guò)程對(duì)應(yīng)企業(yè)的一個(gè)業(yè)務(wù)流程,工作流的定義包括對(duì)若干個(gè)為了完成特定目標(biāo)的任務(wù)和相關(guān)數(shù)據(jù)的定義。任務(wù)(task)是工作流中最基本的構(gòu)成單位,是能夠獨(dú)立執(zhí)行的工作單元。工作流中的任務(wù)或者是一個(gè)自動(dòng)執(zhí)行的軟件系統(tǒng),或者是一個(gè)由人或組織參與的活動(dòng)。任務(wù)不僅可以是自動(dòng)執(zhí)行的軟件系統(tǒng),或者是由人或組織參與的活動(dòng),而且還可以是可分的,在工作流系統(tǒng)中存在著不同類(lèi)型的任務(wù)。
任務(wù)的執(zhí)行需要三種基本信息,它們是: 由誰(shuí)(或由什么)執(zhí)行該任務(wù),做什么,怎樣做。做什么涉及到任務(wù)本身的功能、所需數(shù)據(jù)、所需結(jié)果和約束。怎樣做涉及到所要用到的工具。在實(shí)際工作中,任務(wù)可以是空的,也就是說(shuō)這個(gè)任務(wù)可以什么也不做。
任務(wù)定義由兩部分組成:任務(wù)聲明和任務(wù)實(shí)現(xiàn)。任務(wù)聲明部分定義了任務(wù)的功能、輸入/輸出數(shù)據(jù)、啟動(dòng)條件等信息,具體聲明信息見(jiàn)表1。任務(wù)實(shí)現(xiàn)部分是任務(wù)的具體實(shí)現(xiàn)代碼或操作過(guò)程。在工作流建模時(shí),只給出任務(wù)的聲明部分。
表1 任務(wù)聲明
屬性名 | 關(guān)鍵字 | 描述 |
標(biāo)識(shí)符 | IDENTIFIER | 用來(lái)唯一標(biāo)識(shí)任務(wù) |
名字 | NAME | 用來(lái)標(biāo)識(shí)任務(wù) |
描述 | DESCRIPTION | 簡(jiǎn)述任務(wù)的功能 |
參與者 | PERFORMER | 描述參與者的信息,包括 人、機(jī)器等 |
限定條件 | CONDITION | 描述參與者應(yīng)滿(mǎn)足的條件 |
持續(xù)時(shí)間 | DURATION | 指定期望的持續(xù)時(shí)間 |
啟動(dòng)條件 | STARTCONDITION | 描述任務(wù)的啟動(dòng)條件 |
結(jié)束條件 | POSTCONDITION | 描述任務(wù)的結(jié)束條件 |
優(yōu)先級(jí) | PRIORITY | 根據(jù)最后期限來(lái)協(xié)調(diào)任務(wù) 的優(yōu)先級(jí) |
在任務(wù)聲明中,任務(wù)的輸入/輸出條目隱含地定義了任務(wù)之間的數(shù)據(jù)依賴(lài)。數(shù)據(jù)依賴(lài)定義依賴(lài)工作流運(yùn)行環(huán)境中的數(shù)據(jù)結(jié)構(gòu)定義。這里的輸入/輸出條目給出的僅僅是對(duì)象的名字。
用戶(hù)型任務(wù)說(shuō)明時(shí),參與者條目中給出的是一個(gè)角色名,沒(méi)有給出具體的工作者。這樣做的好處是: 在工作流調(diào)度時(shí),調(diào)度系統(tǒng)可以根據(jù)系統(tǒng)實(shí)際運(yùn)行情況、資源利用情況根據(jù)角色動(dòng)態(tài)確定任務(wù)的實(shí)際工作者。圖1給出用戶(hù)型說(shuō)明。
圖1 用戶(hù)型任務(wù)說(shuō)明
利用任務(wù)之間的躍遷可以有效地定義工作流過(guò)程,但過(guò)程的定義必須符合一些規(guī)則,也就是說(shuō),一個(gè)過(guò)程必須邏輯正確、避免結(jié)構(gòu)孤立、避免語(yǔ)義沖突和死鎖。下面是一些規(guī)則例子,它們是完整性檢驗(yàn)的基礎(chǔ)。
對(duì)于工作流定義的檢驗(yàn)規(guī)則有,一個(gè)工作流必須有唯一的名字; 整個(gè)工作流只能有一個(gè)起始任務(wù)和一個(gè)結(jié)束任務(wù)等。
對(duì)于任務(wù)定義檢驗(yàn)規(guī)則有: 一個(gè)任務(wù)必須有唯一的名字、參與者、啟動(dòng)和結(jié)束條件; 所有任務(wù)的完成時(shí)間不能超過(guò)整個(gè)工作流的規(guī)定時(shí)間等。
對(duì)于躍遷定義檢驗(yàn)規(guī)則有: 一個(gè)分支結(jié)構(gòu)只能有一條輸入邊; 一個(gè)分支結(jié)構(gòu)至少有兩條輸出邊;一個(gè)分支結(jié)構(gòu)的輸入邊不能來(lái)自同一個(gè)分支結(jié)構(gòu);一個(gè)有條件分支結(jié)構(gòu)必須在每條輸出邊上有一個(gè)條件; 一個(gè)匯聚結(jié)構(gòu)的輸入邊不能來(lái)自同一個(gè)匯聚結(jié)構(gòu); 一個(gè)匯聚結(jié)構(gòu)至少有兩條輸入邊: 一個(gè)匯聚結(jié)構(gòu)只能有一條輸出邊; 一個(gè)匯聚結(jié)構(gòu)必須有一個(gè)分支結(jié)構(gòu)與其配對(duì)等。
安全的工作流模式是指在一個(gè)工作流模式中,所有的任務(wù)都是可達(dá)的,并且所有的任務(wù)都是可終止的,則稱(chēng)這個(gè)工作流模式是安全的工作流模式。任務(wù)T可達(dá)(reachable)是指在一個(gè)工作流模式中,從開(kāi)始任務(wù)起,至少存在某一個(gè)躍遷序列可以到達(dá)T任務(wù)。T可終止(Terminable)是指在一個(gè)工作流模式中,從任務(wù)T開(kāi)始,至少存在某一個(gè)躍遷序列可以到達(dá)結(jié)束任務(wù)。
工作流的描述方法主要有:
(1)腳本語(yǔ)言:提供專(zhuān)門(mén)的腳本(script)語(yǔ)言描述工作流應(yīng)用中的控制流和數(shù)據(jù)流結(jié)構(gòu)。描述方法簡(jiǎn)潔,易于使用,在現(xiàn)有的工作流管理系統(tǒng)產(chǎn)品中非常流行。
(2) 圖形方法: 主要有基于有向圖的狀態(tài)躍遷網(wǎng),用節(jié)點(diǎn)表示活動(dòng),用相應(yīng)的有向邊表示控制流。大多數(shù)工作流管理系統(tǒng)產(chǎn)品提供基于狀態(tài)躍遷網(wǎng)的圖形化工作流定義工具。然而這些方法一般都不提供形式化的語(yǔ)義。
(3) 形式化的圖形網(wǎng)絡(luò)方法: 主要有狀態(tài)圖(state chart)和Petri網(wǎng)方法。Petri網(wǎng)在工作流建模中得到了很好的應(yīng)用,與狀態(tài)圖相比,Petri網(wǎng)方法具有更好的形式化基礎(chǔ),為定性分析工作流的動(dòng)態(tài)變化提供了基礎(chǔ)。
(4)邏輯方法: 主要有時(shí)序邏輯(temporal logic)方法,用于描述工作流的動(dòng)態(tài)特征。時(shí)序邏輯具有良好的形式化基礎(chǔ)。一些簡(jiǎn)單形式的時(shí)序邏輯,如CTL(computation tree logic),已經(jīng)被用于描述擴(kuò)展事務(wù)模型中執(zhí)行的依賴(lài)關(guān)系,以及用于驗(yàn)證工作流定義的正確性、安全性等性質(zhì)。但時(shí)態(tài)邏輯的描述非常抽象,需要復(fù)雜的工作流運(yùn)行控制機(jī)制。另外,時(shí)序邏輯通常不易實(shí)現(xiàn)圖形化表示,而且也不容易轉(zhuǎn)化成其他形式的描述方法。
(5)進(jìn)程代數(shù)方法: 進(jìn)程代數(shù)(process algebra)是一種著名的用于描述和分析并發(fā)系統(tǒng)行為的形式化方法,具有很好的形式化基礎(chǔ)與理論。該方法能將一個(gè)工作流表示成一組進(jìn)程代數(shù)表達(dá)式,而在對(duì)這些進(jìn)程代數(shù)表達(dá)式進(jìn)行術(shù)語(yǔ)重寫(xiě)后,可得到該工作流的所有可能執(zhí)行路徑,因而可據(jù)此判斷工作流中是否有不可達(dá)任務(wù),是否能夠執(zhí)行終止。但進(jìn)程代數(shù)方法不如圖方法直觀,而且術(shù)語(yǔ)重寫(xiě)過(guò)程復(fù)雜。
(6) ECA規(guī)則: ECA規(guī)則為事件-條件-行為規(guī)則(event-condition-action-rule)的縮寫(xiě)。ECA規(guī)則常用來(lái)描述活動(dòng)間的控制流程,多用于主動(dòng)數(shù)據(jù)庫(kù)系統(tǒng)(active database system)中,目前在工作流建模中也得到了一定的應(yīng)用。但ECA規(guī)則不如圖方法直觀,同時(shí)難于管理大量規(guī)則,并且不支持流程逐步求精。ECA規(guī)則通常與其他描述方法,如Petri網(wǎng)或時(shí)序邏輯,一同進(jìn)行高度的形式化描述。