工作流參考手冊初稿V01_第1頁
工作流參考手冊初稿V01_第2頁
工作流參考手冊初稿V01_第3頁
工作流參考手冊初稿V01_第4頁
工作流參考手冊初稿V01_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章工作流參考手冊初稿V01

在使用EOSWorkFlow的過程中,不管是開發(fā)者在“開發(fā)環(huán)境”中定義業(yè)務(wù)

流程,還是“工作流引擎”操縱流程流轉(zhuǎn),或者是工作流參與者使用的“客戶

端”,再或者者管理員使用的“管理與監(jiān)控工具”,在這期間都會(huì)貫穿EOS

Workflow的5個(gè)要緊對象一一流程定義、活動(dòng)定義、流程實(shí)例、活動(dòng)實(shí)例與工

作項(xiàng)。

1.1EOS工作流開發(fā)過程簡述

EOS的工作流開發(fā)過程能夠看作是一個(gè)不斷迭代的過程,如下圖:

首先是分析需求,然后根據(jù)需求定義流程,在這個(gè)階段最要緊的工作任務(wù)事

實(shí)上是設(shè)計(jì),根據(jù)業(yè)務(wù)需求來設(shè)計(jì)流程,這個(gè)流程要怎么走,流程有關(guān)的數(shù)據(jù)如

何流淌,流程的參與者如何界定,與流程有關(guān)的業(yè)務(wù)數(shù)據(jù)如何流淌及儲(chǔ)存等等。

在這個(gè)階段的工作結(jié)果是一個(gè)能夠公布的流程,第一次形成的流程可能是一個(gè)比

較簡單的,并不完善的版本,但是隨著迭代的進(jìn)行,這個(gè)流程將不斷地被修正與

改進(jìn),直到形成一個(gè)能夠使用的版本。

流程公布后就能夠執(zhí)行了,流程在執(zhí)行階段叫流程實(shí)例,它有待啟動(dòng)、運(yùn)行、

掛起、完成、結(jié)束、中止等六種狀態(tài),

我們在設(shè)計(jì)及開發(fā)的過程中可能會(huì)犯一些錯(cuò)誤,從而導(dǎo)致公布的流程執(zhí)行不

正確,或者者還可能已經(jīng)開發(fā)好的流程滿足不了現(xiàn)在的需求,需要進(jìn)行調(diào)整,這

個(gè)時(shí)候迭代就開始了。

1.2概念說明

流程定義:描述一個(gè)完整的業(yè)務(wù)過程,它由若干活動(dòng)構(gòu)成。包含了流程的基

本信息、流程的開始與結(jié)束條件、構(gòu)成的活動(dòng)、活動(dòng)間流轉(zhuǎn)的規(guī)則、需要用戶執(zhí)

行的工作任務(wù)(工作項(xiàng))、可能調(diào)用的應(yīng)用程序與流程有關(guān)數(shù)據(jù)等信息。提交到

流程定義庫(WFProcessDefine)后會(huì)包含流程定義ID(流程定義的唯一標(biāo)識(shí))、

流程定義名稱、版本號、流程定義描述與提交時(shí)間等描述。

活動(dòng)定義:包含在流程定義之中,代表了一個(gè)相對獨(dú)立的、邏輯的工作單元。

?個(gè)活動(dòng)代表?個(gè)需要由有關(guān)資源處理,或者者由計(jì)算機(jī)處理的任務(wù)。其中定義

了該活動(dòng)的基本信息、執(zhí)行該活動(dòng)的參與者、時(shí)間限制、工作項(xiàng)信息、觸發(fā)事件、

啟動(dòng)策略等信息。

流程實(shí)例:當(dāng)流程定義提交、公布到服務(wù)器以后,就能夠啟動(dòng)該流程,啟動(dòng)

時(shí)會(huì)創(chuàng)建流程定義的一個(gè)實(shí)例,叫流程實(shí)例。同一個(gè)流程定義能夠有多個(gè)流程實(shí)

例。每一個(gè)流程實(shí)例會(huì)被儲(chǔ)存在流程實(shí)例庫(WFProcessInst)中,包含流程實(shí)例

ID(唯一標(biāo)識(shí))、流程實(shí)例名稱、流程定義ID、流程實(shí)例的狀態(tài)、該實(shí)例的啟

動(dòng)者、啟動(dòng)時(shí)間、有關(guān)數(shù)據(jù)等信息。

活動(dòng)實(shí)例:流程實(shí)例中的每個(gè)活動(dòng)稱之活動(dòng)實(shí)例。每一個(gè)活動(dòng)實(shí)例會(huì)被儲(chǔ)存

在活動(dòng)實(shí)例庫(WFActivitylnst)中,包含活動(dòng)實(shí)例ID(唯一標(biāo)識(shí))、活動(dòng)實(shí)例的狀

態(tài)、所屬的活動(dòng)定義ID與流程實(shí)例ID、時(shí)間限制、是否超時(shí)、創(chuàng)建時(shí)間等信息。

工作項(xiàng):表示流程實(shí)例在流轉(zhuǎn)過程中為完成某個(gè)活動(dòng)實(shí)例所要參與者做的工

作。一個(gè)活動(dòng)實(shí)例能夠?qū)?yīng)一個(gè)或者多個(gè)工作項(xiàng)。每個(gè)工作項(xiàng)會(huì)被儲(chǔ)存在工作項(xiàng)

庫(WFWorkltem)中,包含工作項(xiàng)ID(唯一標(biāo)識(shí))、參與者ID、工作項(xiàng)的狀態(tài)、

所屬的活動(dòng)實(shí)例ID,流程實(shí)例ID等信息。

對象間的要緊關(guān)系

流程定義與活動(dòng)定義是在工作流開發(fā)階段所確定;流程實(shí)例、活動(dòng)實(shí)例與工

作項(xiàng)則是在工作流運(yùn)行階段確定。

一個(gè)流程定義由多個(gè)活動(dòng)定義構(gòu)成。

一個(gè)流程定義能夠創(chuàng)建多個(gè)流程實(shí)例。

一個(gè)流程實(shí)例包含多個(gè)活動(dòng)實(shí)例,每個(gè)活動(dòng)實(shí)例能夠包含一個(gè)或者多個(gè)工作

項(xiàng)

在一些特定的情況下(比如,一個(gè)活動(dòng)要循環(huán)執(zhí)行多次),一個(gè)活動(dòng)定義會(huì)

存在多個(gè)活動(dòng)實(shí)例

具體如下圖所示:

其他概念

【工作流】

工作流管理聯(lián)盟(WFMC)給出的“工作流”定義是:

①全部或者者部分,由計(jì)算機(jī)支持或者自動(dòng)處理的業(yè)務(wù)過程;

②干預(yù)過程、業(yè)務(wù)程序的自動(dòng)化處理,文檔、信息或者者任務(wù)按照定義好

的規(guī)則在參與者間傳遞,來完成整個(gè)業(yè)務(wù)目標(biāo)或者者對整個(gè)業(yè)務(wù)目標(biāo)的

完成做奉獻(xiàn)。同時(shí),“工作流”可能由手工組織。

【參與者】

它要緊描業(yè)務(wù)流程在實(shí)例化后的運(yùn)行過程中參與操作的人員、角色或者組織。

【工作流有關(guān)數(shù)據(jù)】

工作流引擎根據(jù)工作流有關(guān)數(shù)據(jù)與轉(zhuǎn)換條件進(jìn)行推進(jìn),工作流有關(guān)數(shù)據(jù)的屬性包

含數(shù)據(jù)名稱、數(shù)據(jù)類型與數(shù)據(jù)值等。它是工作流引擎執(zhí)行任務(wù)推進(jìn)的根據(jù)。

【轉(zhuǎn)移條件】

要緊負(fù)責(zé)為流程實(shí)例的推進(jìn)提供導(dǎo)航根據(jù),引擎根據(jù)轉(zhuǎn)移條件實(shí)現(xiàn)流程的流轉(zhuǎn)。

【聚合模式】

指當(dāng)流程中的一個(gè)活動(dòng)存在多個(gè)前驅(qū)活動(dòng)時(shí)。,該活動(dòng)產(chǎn)生實(shí)例的規(guī)則將根據(jù)“聚

合模式”而定。聚合模式包含:全部聚合/單一聚合/多路聚合(AND/XOR/OR);“全

部聚合”模式表示只有當(dāng)所有前驅(qū)活動(dòng)都運(yùn)行結(jié)束后才啟動(dòng)該活動(dòng)實(shí)例,假如存

在尚未運(yùn)行結(jié)束的前驅(qū)活動(dòng),則該活動(dòng)處于等待狀態(tài)?!皢我痪酆?'模式表示只要

任何一個(gè)前驅(qū)活動(dòng)運(yùn)行結(jié)束,則該活動(dòng)即進(jìn)入運(yùn)行狀態(tài)。“多路聚合”模式表示滿

足條件的前驅(qū)活動(dòng)都完成,該活動(dòng)才可進(jìn)入運(yùn)行狀態(tài)。

【分支模式】

當(dāng)一個(gè)活動(dòng)的后繼活動(dòng)有多個(gè)時(shí),需要確定這些后繼活動(dòng)產(chǎn)生活動(dòng)實(shí)例的規(guī)則

(即分支模式)。分支模式包含:全部分支/單一分支/多路分支(AND/XOR/OR);

“全部分支''模式表示條件表達(dá)式計(jì)算結(jié)果為“True”的所有活動(dòng)都產(chǎn)生活動(dòng)實(shí)例;

“單一分支”模式則表示從后繼活動(dòng)中任選一個(gè)條件表達(dá)式為“True”的活動(dòng)產(chǎn)生

實(shí)例?!皢我环种А蹦J较滦枰付ㄒ粋€(gè)“缺省遷移”,當(dāng)所有條件都為“False”時(shí),

此缺省遷移對應(yīng)的活動(dòng)則會(huì)產(chǎn)生實(shí)例「多路分支”表示該活動(dòng)的完成會(huì)觸發(fā)所有

滿足條件的后繼活動(dòng)。

【工作流客戶端】

工作流客戶端是提供給用戶完成工作流任務(wù)的瀏覽,查詢,執(zhí)行的界面,與工作

流程啟動(dòng)的界面。EOS工作流客戶端通過web界面的方式提供給用戶。

?按用戶與角色取得工作項(xiàng)

?工作列表的自定義歸類

?工作項(xiàng)的簽收、拒收、執(zhí)行、提醒

?競爭工作項(xiàng)的處理

?圖形化的啟動(dòng)過程

【工作流管理監(jiān)控工具】

工作流管理監(jiān)控工具足為用戶提供基于Web方式的工;乍流實(shí)例的管理與監(jiān)控功

能與業(yè)務(wù)流程的管理。

?支持圖形化工作流實(shí)例的管理

?支持圖形化監(jiān)控過程實(shí)例的運(yùn)行情況

?支持圖形化業(yè)務(wù)流程的管理

?運(yùn)行期實(shí)時(shí)數(shù)據(jù)查詢

?圖形化再現(xiàn)流程運(yùn)行過程

?工作項(xiàng)的重分配

?流程統(tǒng)計(jì)分析、工作項(xiàng)統(tǒng)計(jì)分析

1.3有關(guān)配置說明

下列是一些有用的配置說明,關(guān)于EOS工作流的具體配置說明請參考附錄一〉

配置文件wfconfig.xmlo

工作流數(shù)據(jù)連結(jié)的配置在哪里

帶有工作流的EOS應(yīng)用一定要使用數(shù)據(jù)源的方式(配置了數(shù)據(jù)源與連接池,且

eosconfig.xml文件中single值為false)連接數(shù)據(jù)庫,這樣才能保證.I:作流與

業(yè)務(wù)系統(tǒng)中事務(wù)的完整性。而且工作流調(diào)度引擎需要連接池來處理對數(shù)據(jù)庫的并

發(fā)操縱,不能使用JDBC直接連接,否則在實(shí)際的使用中會(huì)出現(xiàn)并發(fā)操縱錯(cuò)誤。

比如:使用E0S5.0,在工作流客戶端的“我的任務(wù)一>待執(zhí)行的工作任務(wù)”執(zhí)行

一個(gè)待執(zhí)行的工作項(xiàng),該二作項(xiàng)的任務(wù)是調(diào)用一個(gè)人工活動(dòng)去查一張表。假如在

studio中啟動(dòng)項(xiàng)目server,功能一切正常,假如啟動(dòng)外部server,這個(gè)功能有

的時(shí)候候正常,有的時(shí)候候出錯(cuò),出錯(cuò)頁面的截圖與全面的log見附件?。ㄗⅲ?/p>

出錯(cuò)是不確定的,有的時(shí)候候連續(xù)好幾次都報(bào)錯(cuò),有的時(shí)候候連續(xù)好幾次都對?。?/p>

在編寫工作流的業(yè)務(wù)自動(dòng)機(jī)(業(yè)務(wù)邏輯)中,有關(guān)的工作流操作(如:完成工作

流節(jié)點(diǎn),回退,設(shè)置工作洸的有關(guān)數(shù)據(jù)等操作)與外部的業(yè)務(wù)操作都要并在一個(gè)

transaction(事務(wù))中。

工作流歷史表的有關(guān)說明

EOS數(shù)據(jù)庫中存在以WF'_H開頭的幾張表,這是工作流歷史表,分別對應(yīng)了流

程實(shí)例、活動(dòng)項(xiàng)實(shí)例、工作項(xiàng)實(shí)例等等,業(yè)務(wù)上經(jīng)常需要通過這些歷史數(shù)據(jù)進(jìn)行

統(tǒng)計(jì)分析,至于什么時(shí)候進(jìn)行記錄備份,幫助文檔中沒有提到。

事實(shí)上,在EOS系統(tǒng)配置文件wfconfig.xml中,定義了歷史記錄備份的策略,

如下:

<groupname="trans_history”>

<!一轉(zhuǎn)移歷史的策略:可能的值T1ME_BASED(固定時(shí)間轉(zhuǎn)移)|ON_F1N1SH(流

程實(shí)例結(jié)束時(shí)轉(zhuǎn)移)INEVER(不轉(zhuǎn)移)ON_START(系統(tǒng)啟動(dòng)時(shí)候后移)

<configValuekey=,,transstrategy,z>TIMEBASED</configValue>

<!一轉(zhuǎn)移時(shí)間點(diǎn)列表:當(dāng)trans_strategy配置為T1ME_BASED時(shí)候有效。表示轉(zhuǎn)

移到歷史表的時(shí)間,格式示例:1:00,2:00,8:18->

<configValuekey=*time^list^>0:30,5:00</configValue>

</group>

第2章建模過程

EOSStudio提供了可視化的開發(fā)環(huán)境來定義工作流業(yè)務(wù)流程模型,提供串行、

分支、并行、聚合、循環(huán)、同步、子流程等豐富的流程邏輯結(jié)構(gòu),與人工活動(dòng)、

自動(dòng)活動(dòng)、路由活動(dòng)等多種活動(dòng)類型,并可對這些活動(dòng)屬性進(jìn)行定義,如參與者

類型、觸發(fā)事件、子流程屬性、時(shí)間限制、回退動(dòng)作、多工作項(xiàng)等,定義屬性時(shí)

可選擇不一致的數(shù)據(jù)類型、可靈活的擴(kuò)展活動(dòng);能夠通過表單數(shù)據(jù)為活動(dòng)節(jié)點(diǎn)設(shè)

置動(dòng)態(tài)表單,其表單數(shù)據(jù)實(shí)現(xiàn)了動(dòng)態(tài)表單的編輯,為口常工作中表單的定制提供

了良好的設(shè)計(jì)工具。

2.1流程定義

流程定義由流程屬性、活動(dòng)屬性、連接線三部分構(gòu)成。開發(fā)者能夠根據(jù)實(shí)際

中的業(yè)務(wù)需要設(shè)置流程上的基本屬性、觸發(fā)事件、時(shí)間限制與流程啟動(dòng)者。對每

一個(gè)具體的活動(dòng)則可根據(jù)實(shí)際情況設(shè)定其運(yùn)行的方式、參與者與調(diào)用的應(yīng)用等信

息。完成流程定義的描述后即可提交、公布。提交后的流程將生成XML格式的流

程定義義件,存入流程定義庫中

2.1.1流程版本

版本號的產(chǎn)生方式如下:

1、開發(fā)人員指定

版本號的格式為:X.Y.Z(其中X〉0;Y:0-99;Z:0-99),若指定的版本在流程

定義庫中不存在,則按指定的版本號生成新版本。若指定的版本在流程定義庫中

存在,則覆蓋流程定義庫中已有的版本。比如,某流程在流程定義庫中存在

1.1.1與1.2.3兩個(gè)版本。若要提交第二個(gè)版本,開發(fā)人員指定新版本號1.1.2,

那么該流程提交流程定義庫的版本號即為1.1.2;若指定版本號為1.1.1,則該流

程在提交流程定義庫時(shí)會(huì)覆蓋原有1.1.1版本的流程

2、自動(dòng)生成新版本

獲取流程定義庫中同一流程的最大版本,并在此基礎(chǔ)上〃加I1〃作為當(dāng)前流程

的版本號。

2.1.2觸發(fā)事件

2.1.2.1觸發(fā)事件說明

流程觸發(fā)事件表示按照流程定義中的設(shè)置流程實(shí)例在運(yùn)行到某個(gè)階段所需

要工作流引擎做某種類型的某個(gè)動(dòng)作。“某個(gè)階段”即為事件的觸發(fā)時(shí)機(jī),“某

種類型”即為事件類型,“某個(gè)動(dòng)作”即為事件的動(dòng)作。

觸發(fā)時(shí)機(jī):表不指定的事件動(dòng)作在何時(shí)觸發(fā)。EOSWorkFlow提供了創(chuàng)建、動(dòng)、

結(jié)束、超時(shí)與提醒5個(gè)觸發(fā)時(shí)機(jī)。

創(chuàng)建:表示指定的事件在流程實(shí)例創(chuàng)建時(shí)觸發(fā)。如今流程實(shí)例實(shí)際上處于

“待啟動(dòng)”的狀態(tài),并沒有合適的活動(dòng)實(shí)例產(chǎn)生。簡言之,流程實(shí)例如今只是做

好運(yùn)行的準(zhǔn)備,但未真正開始運(yùn)行。比如:把田徑比賽中的110米欄比作流程實(shí)

例,那么創(chuàng)建時(shí)的流程實(shí)例就相當(dāng)于已站在助跑器前的運(yùn)動(dòng)員們等待發(fā)令槍響的

那一刻。

啟動(dòng):表示指定的事件在流程實(shí)例啟動(dòng)時(shí)觸發(fā)。如今,流程實(shí)例已真正處于

運(yùn)行狀態(tài)了,流程實(shí)例已開始運(yùn)行,各活動(dòng)實(shí)例將會(huì)相繼產(chǎn)生。比如:流程實(shí)例

如今的狀態(tài)若比作110米欄,就相當(dāng)于運(yùn)動(dòng)員們聽到發(fā)令槍響沖離起跑線的那一

刻。

結(jié)束:表示指定的事件在流程實(shí)例結(jié)束時(shí)觸發(fā)。即流程實(shí)例中所有的活動(dòng)實(shí)

例均已完成時(shí)觸發(fā)。

超時(shí):表示指定的事件在流程實(shí)例超時(shí)時(shí)觸發(fā)。比如:若流程的超時(shí)時(shí)間訂

為1天,那么定義的事件將在流程實(shí)例啟動(dòng)時(shí)開始計(jì)時(shí),并在1天之后觸發(fā)此事

件。

提醒:表示指定的事件在流程實(shí)例指定的提醒時(shí)間觸發(fā)。比如:若流程的提

醒時(shí)間訂為1小時(shí),那么定義的事件將在流程實(shí)例啟動(dòng)時(shí)開始計(jì)時(shí),并在超時(shí)前

1小時(shí)觸發(fā)此事件。

事件類型:標(biāo)明事件動(dòng)作的類型。EOSWorkFlow提供基于EOS平臺(tái)的業(yè)務(wù)

邏輯與運(yùn)算邏輯兩種類型。

事件動(dòng)作:由開發(fā)人員根據(jù)具體的業(yè)務(wù)需求自行定義。能夠是一個(gè)運(yùn)算邏輯也能夠是一

個(gè)業(yè)務(wù)邏輯。

2.1.2.2觸發(fā)事件設(shè)置方法

【場景】

在流程”啟動(dòng)的同時(shí),獲取指定節(jié)點(diǎn)信息并放入該流程實(shí)例有關(guān)數(shù)據(jù)的指定

節(jié)點(diǎn)下c如獲取流程信息中創(chuàng)建者節(jié)點(diǎn)(WFCcntcxt/WFPrccessInst/creatcr),放入

有關(guān)數(shù)據(jù)區(qū)Node/creator卜。

【分析】

通過【場景】的描述,我們能夠使用流程觸發(fā)事件的方式實(shí)現(xiàn)該需求。分析

為:

1、“在流程啟動(dòng)的同時(shí)……”,表示觸發(fā)的時(shí)機(jī)為啟動(dòng),調(diào)用方式為同步。

這里需要特別注意的是,調(diào)用方式同步與異步的區(qū)別。同步是指:以“同步”的方

式調(diào)用觸發(fā)事件,等待事件運(yùn)行完成后,該流程才啟動(dòng)。同步是指:以“異步”

的方式調(diào)用觸發(fā)事件,該流程在啟動(dòng)完觸發(fā)事件后就啟動(dòng),而無需等待觸發(fā)事件

運(yùn)行完成。

2、“獲取指定節(jié)點(diǎn)信息”為事件動(dòng)作,能夠用業(yè)務(wù)邏輯來實(shí)現(xiàn)。觸發(fā)事件中

產(chǎn)生的數(shù)據(jù)還能夠在業(yè)務(wù)邏輯中輸出,這樣就能夠?qū)⑦@些數(shù)據(jù)直接設(shè)置為有關(guān)數(shù)

據(jù)了。

3、要將步驟2中獲取的信息放入該流程實(shí)例有關(guān)數(shù)據(jù)的指定節(jié)點(diǎn)下,具體

可在事件參數(shù)中設(shè)置。

輸入?yún)?shù)設(shè)置為WFContext,在各類觸發(fā)事件與回退事件中,WFContext屬

十流程實(shí)例的有關(guān)數(shù)據(jù)區(qū)部分,這塊數(shù)據(jù)區(qū)有固定的數(shù)據(jù)結(jié)構(gòu),具體請見:3.2.2

流程實(shí)例數(shù)據(jù)區(qū)。觸發(fā)事件的數(shù)據(jù)來源于有關(guān)數(shù)據(jù)區(qū),WEContext是有關(guān)數(shù)據(jù)區(qū)

中固有的一塊區(qū)域信息,這些信息都放在Wfcontcxt節(jié)點(diǎn)下。其中,WFContext

數(shù)據(jù)區(qū)內(nèi)容是流程實(shí)例自身的信息,有關(guān)數(shù)據(jù)區(qū)的內(nèi)容還有流程中產(chǎn)生的過程數(shù)

據(jù),即業(yè)務(wù)數(shù)據(jù)。

_______________________________________________.

基本信息觸發(fā)事件時(shí)間限制|流程啟動(dòng)者|

參數(shù)定義

|IDI觸發(fā)時(shí)機(jī)I事件類型I調(diào)用冰I事商租一-T^i地入I

[圖-設(shè)置觸發(fā)事件的參數(shù)]

注意:

假如調(diào)用的事件類型為業(yè)務(wù)邏輯,而參數(shù)的數(shù)據(jù)類型為字符串常量或者字符

串變量,那么路徑中填入的格式務(wù)必為:nodeName=〃value"或者

nodeName='value'(由于業(yè)務(wù)邏輯不支持直接傳入常量或者變量)

比如:要傳入常量tiger到所調(diào)用的業(yè)務(wù)邏輯中,就務(wù)必做如下設(shè)置

參數(shù)

參數(shù)定義.______________________________

IBI參數(shù)類型:數(shù)數(shù)類我I路短I參數(shù)名名I目兩短I'

工輜大一一一一一.廣竽符串常量.一《^^逼神k]y1

「」

提交后常量tiger將作為name節(jié)點(diǎn)

的值作為動(dòng)作的參數(shù)傳入,形式為

<root>

-<data>

<name>tiger</name>

</data>

</root>

2.1.3超時(shí)設(shè)置

假如想擴(kuò)展與替換EOS工作流的超時(shí)與預(yù)警機(jī)制,能夠根據(jù)工作流配置文件

wfcontig.xml中的工作流引擎服務(wù)層有關(guān)配置

<modulename="service">

<groupname="timer">

<configValuekey="interval">10000</configValue>

<configValuekey="limeIimit_calculator"x/configValue>

</group>

參數(shù)timelimijcalculalor流程與活動(dòng)時(shí)間限制的計(jì)算方法類名稱,該類務(wù)必實(shí)現(xiàn)

接口com.primeton.eos.wf.service.api.TimeLimitCalculatoro

配置為空或者者不做配置,表示使用確省實(shí)現(xiàn)類:

com.primeton.eos.wf.service.TimeLimitCalcuIatorDefaulto

2.1.3.1時(shí)間限制說明

流程的時(shí)間限制表示流程啟動(dòng)后務(wù)必在多長時(shí)間內(nèi)完成。在流程時(shí)間限制的

設(shè)置中EOSWorkFlow為開發(fā)人員提供了指定具體的限制時(shí)間、超時(shí)是否進(jìn)行郵

件通知、是否在超時(shí)前進(jìn)行提醒、是否發(fā)提醒通知等功能。

流程時(shí)間限制的計(jì)時(shí):從流程啟動(dòng)時(shí)開始計(jì)時(shí)

流程時(shí)間限制的獲?。褐苯又付ā挠嘘P(guān)數(shù)據(jù)獲?。ǜ袷剑?.5.20表示時(shí)限

為3天5小時(shí)20分鐘)

發(fā)送提醒郵件:EOSWorkElow可根據(jù)流程定義中的具體設(shè)置給流程啟動(dòng)者發(fā)

提醒郵件,提醒他該流程還有多長時(shí)間將超時(shí)

發(fā)送超時(shí)郵件:EOSWorkFlow可根據(jù)流程定義中的具體設(shè)置紿流程啟動(dòng)者發(fā)

送超時(shí)郵件,告之他該流程已經(jīng)超時(shí)

提醒時(shí)間務(wù)必小于指定的時(shí)間限制

EOSWORKFLOW推斷流程或者人工活動(dòng)超時(shí)的原理

流程或者人工活動(dòng)的時(shí)間限制中設(shè)置的限制時(shí)間將寫入表WITrocesslnst或

者WFWorkltem的limitNum字段中,單位為亳秒,1imitNumDosc是其描述字段;

finalTime是時(shí)間限制到達(dá)后的時(shí)間。EOSWorkFlow將當(dāng)前時(shí)間與startTime

相減的結(jié)果與limitNum比較,一旦超出時(shí)間限制就將isTimeOut字段置為Y,

表示超時(shí);timcOutNum表示超時(shí)了多長時(shí)間,在流程結(jié)束時(shí)寫入。假如設(shè)置了

超時(shí)提醒,該字段可能出現(xiàn)負(fù)數(shù),是未超時(shí)的表現(xiàn),只有正數(shù)才表示超時(shí)的時(shí)間,

timeOutNumDesc是其描述字段。

2.1.3.2時(shí)間設(shè)置說明

【描述】

【應(yīng)用場景】

規(guī)定流程A務(wù)必在I天內(nèi)完成,超時(shí)進(jìn)行通知;并在超時(shí)前10小時(shí)發(fā)提醒通知

【操作步驟】

I、雙擊流程A的編輯區(qū),彈出屬性設(shè)置窗口,點(diǎn)擊時(shí)間限制選項(xiàng)卡

2、勾選啟用時(shí)間限制

3、指定時(shí)間限制為:1天。小時(shí)0分鐘

4、勾選是否按設(shè)置的時(shí)間限制進(jìn)行超時(shí)通知。此處將會(huì)根據(jù)wfconfig.xml有關(guān)

配置給流程啟動(dòng)者發(fā)送郵件。

5、指定提早0天10小時(shí)0分鐘提醒

6、勾選是否按設(shè)置的提醒時(shí)間進(jìn)行超時(shí)預(yù)警。此處將會(huì)根據(jù)wfconfig.xml有關(guān)配置

給流程啟動(dòng)者發(fā)送郵件

[圖-設(shè)置流程時(shí)間限制I]

說明:

1、不管是超時(shí)通知的郵件還是提醒的郵件,收件人都是流程啟動(dòng)者

2、這些郵件的發(fā)件人,可根據(jù)具體情況在配置文件設(shè)置$Primeton

HOME\cosservcr\config目錄下的wfconfig.xml設(shè)置,有關(guān)部分如下所示:

<groupname=,,sendmail">

<configValuekey="username">zll</configValue>

<configValuekey="password">zll</conflgValue>

<configValuekey="mailPort">25</configValue>

<conflgValuekey="fromName'>zll</configValue>

<configValuekcy="authLogin"Xruc</configValue>

</group>

參數(shù)說明:

Field名稱可否空說明

mailScrvcr是郵件服務(wù)器SMTP地址

mailPort是SMTP端口,通常設(shè)置為25

authLogin是SMTP服務(wù)器是否需要進(jìn)行用戶驗(yàn)證,設(shè)置(rue則需

要進(jìn)行用戶認(rèn)證,設(shè)置false則不需要進(jìn)行認(rèn)證

username是SMTP服務(wù)器的用戶名

password是SMTP的用戶口令

特別說明:EOS工作流超時(shí)提醒只提醒一次。流程實(shí)例一旦超時(shí),就會(huì)觸發(fā)相

應(yīng)的操作將流程實(shí)例中的WFProcessInst/isTimcOut十點(diǎn)設(shè)置為丫。假如想實(shí)現(xiàn)

重復(fù)提醒功能,通常的做法是為流程設(shè)置超時(shí)的觸發(fā)事件。在超時(shí)觸發(fā)事件中注

冊一個(gè)定時(shí)器,定時(shí)掃描該流程實(shí)例是否完成,假如沒有完成就執(zhí)行發(fā)放郵件或

者者短信都通知的操作。

2.1.4流程啟動(dòng)者

流程啟動(dòng)者表示能夠啟動(dòng)某個(gè)流程的組織、角色或者人。EOSWorkFlow提

供兩種流程啟動(dòng)策略:任意人員啟動(dòng)與從組織機(jī)構(gòu)樹獲取。這樣做的目的要緊是

從實(shí)際工作中的安全性考慮,視流程的具體情況限定能能啟動(dòng)該流程的人員范

圍。

[圖-流程啟動(dòng)者]

當(dāng)流程實(shí)例運(yùn)行的時(shí)候,能夠在有關(guān)數(shù)據(jù)區(qū)的如卜節(jié)點(diǎn)xpalh找到流程啟動(dòng)者:

<WFContext>

<WFProcessInst>

<creator>tiger</creator>

</WFProcessInst>

</WFContcxt>

2.1.5流程定義特別說明

工作流的自動(dòng)活動(dòng)或者觸發(fā)事件調(diào)用帶事務(wù)的業(yè)務(wù)邏輯的注意事項(xiàng)

由于工作流的事務(wù)操縱與業(yè)務(wù)邏輯的事務(wù)操縱是分開的,因此,當(dāng)工作流的

自動(dòng)活動(dòng)或者觸發(fā)事件調(diào)用了帶事務(wù)操縱的業(yè)務(wù)邏輯時(shí),工作流引擎默認(rèn)忽略業(yè)

務(wù)邏輯中的事務(wù),這樣就存在一個(gè)問題:

業(yè)務(wù)邏輯中出現(xiàn)了特殊,并通過特殊線回滾,這時(shí),業(yè)務(wù)數(shù)據(jù)提交不成功,

但是,工作流引擎并沒有接收到特殊,它會(huì)繼續(xù)往后走,最終就出現(xiàn)工作流事務(wù)

與業(yè)務(wù)事務(wù)不一致的現(xiàn)象,

【解決方案與步驟】

建議業(yè)務(wù)邏輯中不要用特殊線回退到回滾,讓特殊直接拋出,這樣工作流引

擎會(huì)接收到特殊,繼而做回滾!

【備注】

1)特殊線不能隨便使用,假如一定要用,最好設(shè)置返回值返回,最后轉(zhuǎn)向

出錯(cuò)頁面;

2)使用特殊線前還要注意BL方法是否會(huì)拋特殊,由于不是所有的BL方法

都會(huì)拋特殊。

2.2活動(dòng)定義

EOSWorkFlow提供了六種類型的活動(dòng)。開始活動(dòng)、結(jié)束活動(dòng)、人工活動(dòng)、自

動(dòng)活動(dòng)、子流程活動(dòng)與路由活動(dòng)。

活動(dòng)圖元介紹

圖元名稱含義

表示一個(gè)業(yè)務(wù)流程的開始。在流程開始活動(dòng)能夠定義流程的

開始活動(dòng)

啟動(dòng)表單與業(yè)務(wù)流程的觸發(fā)事件。

人工活動(dòng)指需要人工干預(yù)、進(jìn)行某種操作的活動(dòng)。比如填寫表單等。

指無需人工干預(yù),系統(tǒng)自動(dòng)執(zhí)行的活動(dòng)。比如獲取系統(tǒng)時(shí)間、

往數(shù)據(jù)庫中插入記錄等。

一種特殊的活動(dòng),此活動(dòng)本身是指向某一個(gè)流程,表示當(dāng)流

子流程程實(shí)例運(yùn)行至如今,啟動(dòng)另外一個(gè)流程。子流程的啟動(dòng)分為

?同步與異步兩種方式。

是一種邏輯活動(dòng),根據(jù)操縱條件推斷流程的流向。該活動(dòng)小

路由活動(dòng)

身并不執(zhí)行任何具體的操作。

□結(jié)束活動(dòng)表示一個(gè)業(yè)務(wù)流程的結(jié)束。

2.2.1設(shè)置活動(dòng)基本信息

活動(dòng)包含:人工活動(dòng)、自動(dòng)活動(dòng)、子流程。

1)自動(dòng)活動(dòng)的基本信息設(shè)置如下:

?調(diào)用方式:

“同步”:直到調(diào)用的執(zhí)行動(dòng)作運(yùn)行完后當(dāng)前自動(dòng)活動(dòng)才結(jié)束

“異步”:當(dāng)前自動(dòng)活動(dòng)在調(diào)用執(zhí)行動(dòng)作后就結(jié)束,而無需等待執(zhí)行動(dòng)

作運(yùn)行完

?結(jié)束方式:

“自動(dòng)”:調(diào)用完執(zhí)行動(dòng)作后,工作流引擎自動(dòng)將當(dāng)前自動(dòng)活動(dòng)結(jié)束

“人工:”調(diào)用完執(zhí)行動(dòng)作后,引擎不將當(dāng)前.自動(dòng)活動(dòng)結(jié)束,而是等待

外部調(diào)用結(jié)束該活動(dòng)

2)子流程的基本信息設(shè)置如下:

調(diào)用方式:

“同步”:以“同步”的方式調(diào)用子流程,等待子流程運(yùn)行完成后,該

子流程活動(dòng)才結(jié)束

“異步”:以“異步”的方式調(diào)用子流程,當(dāng)前活動(dòng)在啟動(dòng)完子流程后

就結(jié)束,而無需等待子流程運(yùn)行完成

子流程:單擊【選擇…】按鈕,從彈出窗口的資源樹中選擇子流程或者直

接輸入子流程,填寫規(guī)則為:構(gòu)件包名.工作流構(gòu)件名.業(yè)務(wù)流程名。假如調(diào)

用的子流程需要輸入或者輸出一些參數(shù)請?jiān)趨?shù)選項(xiàng)卡中設(shè)置

2.2.2聚合模式、分支模式

活動(dòng)的“分支”與“聚合”模式在流程定義時(shí)設(shè)置,分別描述了活動(dòng)在運(yùn)行

時(shí)何時(shí)被觸發(fā)與或者個(gè)運(yùn)行結(jié)束后,它的后繼活動(dòng)如何被觸發(fā)。

2.2.2.1聚合模式

聚合模式,表示該活動(dòng)得以觸發(fā)的方式。它包含“全部聚合(AND)”、“單一

聚合(XOR)”與“多路聚合(OR)”三種情況:

1.“全部聚合”型聚合模式

表示該活動(dòng)務(wù)必等到它的所有前驅(qū)活動(dòng)全部完成才能夠觸發(fā)。

2“單一聚合”型聚合模式

表示當(dāng)該活動(dòng)的若干前驅(qū)活動(dòng)中只要有一個(gè)滿足條件的活動(dòng)完成,該活動(dòng)即

可被觸發(fā)。

3“多路聚合”型聚合模式

表示該活動(dòng)務(wù)必等到它的所有滿足條件的前驅(qū)活動(dòng)全部完成才能夠觸發(fā)。

滿足條件的前驅(qū)活動(dòng)包含:

1)它與該活動(dòng)的連線是“默認(rèn)值”;

2)它與該活動(dòng)連線上條件為“irue”;

3)多路聚合還需要特別說明的是:多路聚合不一定要設(shè)置默認(rèn)連線,也就

是說一個(gè)多路聚合的全部連線都能夠設(shè)置條件C

【示例】

1.“全部聚合”型聚合模式示例

[圖.“全部聚合‘‘型聚合模式]

如上圖所示,“人工總動(dòng)》的4合模式(JoinMode)”設(shè)置為“全

部聚合”,那么只有在它的前驅(qū)“人工活動(dòng)”、“人工活動(dòng)1”,“人工活

動(dòng)2”都完成后,“人工活動(dòng)3”才能夠運(yùn)行。

如上所示,由于“人工活動(dòng)3”的“聚合模式(JoinMode)”設(shè)置為“單一

聚合”,那么根據(jù)上面的算法說明,當(dāng)“人工活動(dòng)”完成后,“人工活動(dòng)3”

就能夠運(yùn)行了。而無需考慮“人工活動(dòng)1”或者“人工活動(dòng)2”是否完成。

3.“多路聚合”型聚合模式示例

1)山前驅(qū)活動(dòng)射出的連線上中有默認(rèn)值

?掇色表示活勖已結(jié)床

o?紅色表示活勃正在運(yùn)行

人工活瞅

[圖-“多路聚合”型聚合模式]

如上圖所示,由于“人工活動(dòng)3”的“聚合模式(JoinMode)”是“多路聚合”

同時(shí)在處理的過程中“nunF=6",那么根據(jù)上面的算法說明由于“人工活動(dòng)”與

“人工活動(dòng)3”與“人工活動(dòng)1”與“人工活動(dòng)3”的連線上的條件都滿足,因

此“人工活動(dòng)3”在“人工活動(dòng)”與“人工活動(dòng)1”完成后被觸發(fā)。

2)由前驅(qū)活動(dòng)射出的連線上都設(shè)置條件

結(jié)束活動(dòng)

活動(dòng)c

[圖?“多路聚合”型聚合模式]

如上圖所示,由于“活動(dòng)E”的“聚合模式(JoinMode)”是“多路聚合”同

時(shí)在處理的過程中“num=6",那么根據(jù)上面的算法說明由于“活動(dòng)B與“活動(dòng)

D”的射出的連線上的條件都滿足,因此“活動(dòng)B與“活動(dòng)D”都完成后,活動(dòng)E

才被觸發(fā)。

2.2.2.2分支模式

分支模式,表示該活動(dòng)結(jié)束后,它的后繼活動(dòng)的觸發(fā)情況。它包含“全部分

支支ND)”、“單一分支(XOR)”與“多路分支(OR)”三種情況:

1.“全部分支”型分支模式

表示該活動(dòng)結(jié)束后它的所有后繼活動(dòng)將同時(shí)被觸發(fā)。

2.“單一分支”型分支模式

假如該活動(dòng)的分支模式為“單一分支”,那么引擎會(huì)根據(jù)由該活動(dòng)“射出”

的連接線上的條件進(jìn)行推斷,決定該觸發(fā)哪個(gè)后繼活動(dòng)。具體分為下面三種

情況:

1)滿足條件的連接線所指的活動(dòng)被觸發(fā);

2)假如有若干個(gè)連接線上的條件都滿足,那么比較連接線上的優(yōu)先級,

優(yōu)先級高的那條連接線所指的活動(dòng)將被觸發(fā);

3)假如連接線上的條件都不滿足,那么取“默認(rèn)值”的那條連接線所

指的活動(dòng)將被觸發(fā)。

[注]活動(dòng)的“分支模式”為“單一分支”時(shí),由它射出的連接線有且只有

一條線的取值是“默認(rèn)值”。

3.“多路分支”型分支模式

假如該活動(dòng)的分支模式為“多路分支”,那么引擎會(huì)根據(jù)由該活動(dòng)“射出”

的連接線上的條件進(jìn)行推斷,決定觸發(fā)哪個(gè)或者什么后繼活動(dòng)。具體分為下

面二種情況:

1)假如連接線上取“默認(rèn)值”,那么由此連接線所指的后繼活動(dòng)會(huì)被觸發(fā);

2)假如連接線上的條件滿足,那么由此連接線所指的后繼活動(dòng)會(huì)被觸發(fā)。

3)多路分支還需要特別說明的是:多路分支不一定要設(shè)置默認(rèn)連線,也就

是說一個(gè)多路分支的全部連線都能夠設(shè)置條件。

【示例】

1.“全部分支”型分支模式示例

[圖?“全部分支”型分支模式]

如上圖所示,由于A活動(dòng)的分支模式是“全部分支”,那么當(dāng)A活動(dòng)完成

后它后繼的所有活動(dòng)(B、C、D)將同時(shí)被觸發(fā)。

2.“單一分支”型分支模式示例

1)由該活動(dòng)射出的連線上只有一個(gè)滿足條件時(shí)

D?紅色表示活動(dòng)正在運(yùn)行

[圖-“單一分支”型分支模式11

如圖所示,由于活動(dòng)的分支模式是“單一分支”同時(shí)在處理

的過程中因此由“A”射出的連接線上只有“num>5”滿足

條件,因此“B”活動(dòng)滿足條件被觸發(fā)。

2)由該活動(dòng)射出的連線上有若干個(gè)滿足條件時(shí)

??綠色新活動(dòng)已結(jié)束

D?紅色表示活動(dòng)正在運(yùn)行

[圖-“單一分支”型分支模式2]

如上圖所示,由于“A”活動(dòng)的分支模式是“單一分支”同時(shí)在處

理的過程中“nuni=l",盡管由A指向B與C的兩條分支都滿足條件,

但指向B的優(yōu)先級大于指向C的優(yōu)先級,因此“B”活動(dòng)被觸發(fā)。

3)由該活動(dòng)射出的連線上沒有一個(gè)滿足條件時(shí)

結(jié)束

?綠色表示活動(dòng)已結(jié)束

?紅色表示活動(dòng)正在運(yùn)行

[圖-“單一分支”型分支模式3]

如上圖所示,由于“A”活動(dòng)的分支模式是“單一分支”同時(shí)在處理的

過程中"num==2",那么由“A”射出的連接線上沒有滿足條件的,囚

此“D”活動(dòng)被缺省觸發(fā)。

3.“多路分支”型分支模式示例

1)由活動(dòng)射出的連線上中有默認(rèn)值

人工活動(dòng)3結(jié)束

?姍色表示活勖已結(jié)束

?紅色表示活劫正在運(yùn)行

人工活動(dòng)2

[圖-“多路分支”型分支模式]

如上圖所小,由于“開始活動(dòng)”的分支模式是“多路分支'’同時(shí)在處理

的過程中“nunr=6",那么根據(jù)上面的算法說明,由“開始活動(dòng)”射出的連

接線上為“默認(rèn)值”所指的后繼活動(dòng)“人工活動(dòng)”一定會(huì)被觸發(fā);又由于

滿足“num>5”的條件因此“人工活動(dòng)1”也會(huì)被觸發(fā)

2)由活動(dòng)射出的連線上中沒有默認(rèn)值,全部設(shè)置條件

O

活動(dòng)C

如上圖所示,由于“開始活動(dòng)”的“分支模式”是“多路分支”同時(shí)在處理

的過程中“num--6”,那么根據(jù)上面的算法說明由于射向“活動(dòng)B與“活動(dòng)D”

的連線上的條件都滿足,因此“活動(dòng)B與“活動(dòng)D”在開始活動(dòng)結(jié)束后被觸發(fā)。

2.2.3參與者設(shè)置

活動(dòng)參與者實(shí)際上是指在流程實(shí)例運(yùn)行過程中,流程實(shí)例“流轉(zhuǎn)”至如今該

活動(dòng)實(shí)例所對應(yīng)的工作項(xiàng)有什么人能夠執(zhí)行。在流程定義時(shí)設(shè)置活動(dòng)的參與者實(shí)

際上是圈定流程實(shí)例運(yùn)行至如今能夠執(zhí)行該活動(dòng)實(shí)例所對應(yīng)工作項(xiàng)的人員范圍,

能夠是機(jī)構(gòu)、角色或者人C

EOSWorkFlow提供了4種能夠獲取參與者的方式;

組織機(jī)構(gòu)與角色:參與者由開發(fā)人員從機(jī)構(gòu)樹中獲取

-只選擇一人:表示該活動(dòng)所對應(yīng)的工作項(xiàng)直接分配給該人處理

-超過一?人:表示該活動(dòng)所對應(yīng)的工作項(xiàng)由這些人中的某個(gè)人以“領(lǐng)取”

的方式處理

虛擬崗位(機(jī)構(gòu)+角色):表示在不設(shè)置崗位的情況下,由部門+角色共同決定一

個(gè)人工活動(dòng)的參與者。

流程啟動(dòng)者:表示活動(dòng)參與者為該流程的啟動(dòng)者

活動(dòng)執(zhí)行者:表示活動(dòng)參與者為某個(gè)已完成的活動(dòng)實(shí)例所對應(yīng)工作項(xiàng)的執(zhí)行者

特別說明:假如要改寫組織機(jī)構(gòu)權(quán)限并在參與者設(shè)置的時(shí)候顯示新的組織機(jī)構(gòu)

樹,具體操作請參見知識(shí)庫文檔:組織機(jī)構(gòu)與工作流集成方案.doc

2.2.3.1虛擬崗位(機(jī)構(gòu)+角色)設(shè)置參與者

一圖通過機(jī)構(gòu)+角色實(shí)現(xiàn)虛擬崗位設(shè)置參與者

用角色+機(jī)構(gòu)的方式設(shè)置參與者需要特別注意的是,在該活動(dòng)激活往常一定

要將上圖中機(jī)構(gòu)變量路徑設(shè)置到有關(guān)數(shù)據(jù)區(qū)中。

此外,還有一種方法設(shè)置一組機(jī)構(gòu):把多個(gè)機(jī)構(gòu)寫成如下格式:

<list>

<org>

<id>l</id>

</org

<org>

<id>2</id>

</org>

</list>

這樣機(jī)構(gòu)變量路徑xpath寫成:list/org/id即可。這樣,工作流引擎也會(huì)找到

多個(gè)機(jī)構(gòu)id,從而實(shí)現(xiàn)設(shè)置一組機(jī)構(gòu)+角色的要求。如下圖所示:

基本信息參與者設(shè)置表單數(shù)據(jù)|時(shí)間限制|多工作項(xiàng)|觸發(fā)事件|回退|自由流啟動(dòng)策略

6犯織機(jī)構(gòu)與角色

r流程

r活動(dòng)

r相關(guān)

6崗位列表(通過機(jī)物變量和角色決定此處list是一組機(jī)構(gòu)

r規(guī)則

機(jī)構(gòu)變量路徑:|list/org/id

一選擇...|

選擇角色:|舒人員▼.

選定參與者一

參與者ID:|0R(org=$list/org/id,role=teleAp)取消

名稱:|機(jī)構(gòu)$list/org/,dAP人員

類型:|說位列衷3

確定|取消

圖-設(shè)置一組機(jī)構(gòu)變量

2.2.3.2從有關(guān)數(shù)據(jù)區(qū)設(shè)置參與者

1)從有關(guān)數(shù)據(jù)獲得一個(gè)具體的參與者

【算法說明】

從有關(guān)數(shù)據(jù)的XPATH中,直接指定一個(gè)參與者。

注:這種方式獲得的參與者只能是個(gè)人。有關(guān)數(shù)據(jù)務(wù)必滿足下面的結(jié)構(gòu)。

<XXXX>tiger</XXXX>

2)從有關(guān)數(shù)據(jù)獲貓某一類型的參與者(指定一個(gè)或者一組人員)

[歸法說明]

從有關(guān)數(shù)據(jù)的XPATH中,獲得某一類型的參與者。能夠是一個(gè)人,也能夠是某

一角色或者某一機(jī)構(gòu)的一組人。有關(guān)數(shù)據(jù)務(wù)必滿足下面的結(jié)構(gòu)。

<xxxx>

<id/>

<name/>

<type/>

</xxxx>

3)從有關(guān)數(shù)據(jù)獲得一系列參與者

[算法說明]

從有關(guān)數(shù)據(jù)的XPATH中,獲得一組參與者。能夠是一個(gè)人、一個(gè)角色、一個(gè)崗

位、一個(gè)機(jī)構(gòu),也能夠是機(jī)構(gòu)、角色或者個(gè)人的集合,還能夠是周位列表的集合。

有關(guān)數(shù)據(jù)務(wù)必滿足下面的結(jié)構(gòu)。

<list>

<Participant>

<id/>

<namc/>

<type/>

〈/Participant〉

<Participan(>

<id/>

<nanie/>

<typc/>

</Participant>

id與type的含義如上所示

[特別說明]:在上面XPATH結(jié)構(gòu)中假如lype是“person",那么id即為用戶

ID;假如type是"role",那么id即為角色I(xiàn)D;假如type是"organization",那

么id即為機(jī)構(gòu)ID;假如type是“position",那么id即為崗位ID;假如type

是“posilion」isl",那么id即需滿足如下格式:

<Condi(iontypc="OR">〃:ypc="OR”表示組織機(jī)構(gòu)

<roleID>rolea</roleID>〃角色I(xiàn)D

<orglD>$orglD</orgID>//獲取機(jī)構(gòu)ID的XPATH(相關(guān)于有關(guān)數(shù)據(jù)的根路徑)。飛”

不可少,標(biāo)識(shí)其后的串是個(gè)XPATH。

</Condition>

此外,還有一種方法設(shè)置一組機(jī)構(gòu):把多個(gè)機(jī)構(gòu)寫成如下格式:

<list>

<org>

<id>l</id>

</org

<org>

<id>2</id>

</org>

</list>

這樣機(jī)構(gòu)變量路徑xpalh寫成:list/org/id即可。這樣,工作流引擎也會(huì)找到

多個(gè)機(jī)構(gòu)id,從而實(shí)現(xiàn)設(shè)置一組機(jī)構(gòu)+角色的要求。

2.2.3.3從規(guī)則邏輯設(shè)置參與者

從規(guī)則邏輯獲取參與者

【算法說明】

從業(yè)務(wù)邏輯獲取參與者列表,然后再按照“分配到組織機(jī)構(gòu)”的模式進(jìn)行分配。

從業(yè)務(wù)邏輯返回Dom當(dāng)中找到參與者列表的方法:

1)假如返回的結(jié)果中包含下面的結(jié)構(gòu),系統(tǒng)從list節(jié)點(diǎn)中獲取多個(gè)參與者。

<list>

(Participant〉

<id></id>

<name></name>

<type></type>

</Participant>

<Participant>

<idX/id>

<name></name>

<type></type>

</Participant>

</list>

2)假如從規(guī)則邏輯中沒有找到list節(jié)點(diǎn),那么系統(tǒng)會(huì)查找Participant節(jié)點(diǎn).

獲取參與者。格式如下所示:

〈Participant)

<id></id>

<name></name>

<type></type>

</Participant>

id與type的含義同上。

[特別說明]:假如如上所示的兩種結(jié)構(gòu)都存在于調(diào)用的規(guī)則邏輯的返回的結(jié)

果中,那么系統(tǒng)只會(huì)從list節(jié)點(diǎn)中獲取參與者。

在上面XPATH結(jié)構(gòu)中假如type是“person”,那么id即為用戶ID;假如type

是"role",那么id即為角色I(xiàn)D:假如type是uorganization那么id即

為機(jī)構(gòu)ID;假如type是“position",那么id即為崗位ID;假如type

是“positionJList",那么id即需滿足如下格式:

<Conditiontype="0R">//type二"OR”表示組織機(jī)構(gòu)

<roleTD>rolea</roleID>//角色I(xiàn)D

<orgID>$orgID</orgID>//獲取機(jī)構(gòu)ID的XPATH(相關(guān)于有關(guān)數(shù)據(jù)的根

路徑)。"$"不可少,標(biāo)識(shí)其后的串是個(gè)XPATH。

</Condition>

此外,還有一種方法設(shè)置一組機(jī)構(gòu):把多個(gè)機(jī)構(gòu)寫成如下格式:

<list>

<org>

<id>l</id>

</org

<org>

<id>2</id>

</org>

</list>

這樣機(jī)構(gòu)變量路徑xpalh寫成:list/org/id即可。這樣,工作流引擎也會(huì)找到

多個(gè)機(jī)構(gòu)id,從而實(shí)現(xiàn)設(shè)置一組機(jī)構(gòu)+角色的要求。

2.2.3.4工作流參與者設(shè)置機(jī)制說明

流程實(shí)例根據(jù)流轉(zhuǎn)條件依次激活實(shí)例中的相應(yīng)的活動(dòng),當(dāng)活動(dòng)分配給某個(gè)參

與者(唯一的userID)的時(shí)候,就在WFWorkltem表中形成一條工作項(xiàng)記錄,主

鍵為workTtemTDo在WFWorkTtcm工作項(xiàng)信息表里還有個(gè)很重要的字段:

participanto這個(gè)字段描述該工作項(xiàng)的參與者具體是誰。在工作項(xiàng)參與者

WFWIParticipant表中,也有工作項(xiàng)workltemlD與參與者participant,只是,

這個(gè)表里描述的是根據(jù)流程定義,活動(dòng)被激活后工作項(xiàng)的分配情況,根據(jù)流程定

義的設(shè)置形成相應(yīng)的記錄,比如,流程定義中有3種參與者,那么在

WFWIParticipant表中也形成3條記錄,因此這里的參與者有可能是具體個(gè)人

(userID),也可能是角色(role),也可能是機(jī)構(gòu)(orgTD),也可能是崗位

(positionlD),當(dāng)工作項(xiàng)沒有領(lǐng)取的時(shí)候,在WFWorkhem表中也會(huì)形成一條記

錄,這條記錄的參與者字段participant是用“|”隔開的參與者串,這個(gè)串中

的參與者是在流程定義的時(shí)候定義的。當(dāng)工作項(xiàng)被領(lǐng)取以后,就會(huì)在工作項(xiàng)表

WFWorkltem表里出現(xiàn)具體的執(zhí)行人信息。此外,有的時(shí)候候工作項(xiàng)會(huì)出現(xiàn)該派

的情況,這個(gè)時(shí)候,改派以后具體參與者也在工作項(xiàng)表WFWorkltem表有描述,

而工作項(xiàng)參與者WFWIParticipant表不可能有什么變化。

2.2.4時(shí)間限制

活動(dòng)的時(shí)間限制表示活動(dòng)實(shí)例啟動(dòng)啟動(dòng)后務(wù)必在多長時(shí)間內(nèi)完成。在活動(dòng)時(shí)

間限制的設(shè)置中EOSWorkFlow為開發(fā)人員提供了指定具體的限制時(shí)間、超時(shí)是

否進(jìn)行郵件通知、是否在超時(shí)前進(jìn)行提醒、是否發(fā)提醒通知等功能。

活動(dòng)時(shí)間限制的設(shè)置:開發(fā)人員能夠根據(jù)業(yè)務(wù)需要在“人工活動(dòng)”與“子流程活

動(dòng)”中進(jìn)行設(shè)置。

活動(dòng)時(shí)間限制的計(jì)時(shí):從活動(dòng)實(shí)例啟動(dòng)時(shí)開始計(jì)時(shí)

活動(dòng)時(shí)間限制的獲?。褐苯又付?、從有關(guān)數(shù)據(jù)獲取(格式:3.5.20表示時(shí)限

為3天5小時(shí)20分鐘)

活動(dòng)還有超時(shí)的觸發(fā)事件設(shè)置,能夠針對超時(shí)做具體的操作。

EOSWORKFLOW推斷流程或者人工活動(dòng)超時(shí)的原理

流程或者人工活動(dòng)的時(shí)間限制中設(shè)置的限制時(shí)間將寫入表WFProcessInst或者

WFWorkltem的limitNum字段中,單位為亳秒,limitNumDesc是其描述字段;

finalTime是時(shí)間限制到達(dá)后的時(shí)間。EOSWorkFlow將當(dāng)前時(shí)間與startTime

相減的結(jié)果與limitNum比較,一旦超出時(shí)間限制就將isTimeOut字段置為Y,

表示超時(shí);timeOutNum表示超時(shí)了多長時(shí)間,在流程結(jié)束時(shí)寫入。假如設(shè)置了

超時(shí)提醒,該字段可能出現(xiàn)負(fù)數(shù),是未超時(shí)的表現(xiàn),只有正數(shù)才表示超時(shí)的時(shí)間,

timeOutNumDesc是其描述字段。

2.2.5多工作項(xiàng)

一個(gè)活動(dòng)到底產(chǎn)牛.多少個(gè)工作項(xiàng)同時(shí)產(chǎn)生的這些工作項(xiàng)又由誰來做呢?EOS

WorkFlow就工作項(xiàng)的產(chǎn)生與分配問題提供了2種策略:

按參與者設(shè)置個(gè)數(shù)領(lǐng)取工作項(xiàng):按照此活動(dòng)參與者的個(gè)數(shù)產(chǎn)生工作項(xiàng)。每個(gè)

參與者一個(gè)工作項(xiàng),若參與者中包含若干人員(比如參與者的類型為機(jī)構(gòu)或者角

色),則這些人員可通過先“領(lǐng)取”的方式執(zhí)行工作項(xiàng)C

比如:某活動(dòng)設(shè)置了3個(gè)參與者:tiger,角色B(包含fish與goose兩人),

機(jī)構(gòu)A(包含kitty、snoppy、micky三人),那么按照此策略將產(chǎn)生3個(gè)工作項(xiàng)。

具體分配為:tiger一個(gè)工作項(xiàng),由其直接執(zhí)行(該參與者只有一個(gè)人因此無需

先領(lǐng)?。唤巧獴一個(gè)工作項(xiàng),由fish或者goose中的一個(gè)人以領(lǐng)取的方式執(zhí)行;

同理,機(jī)構(gòu)A一個(gè)工作項(xiàng),由kitty^snoppy或者micky中的一個(gè)人以領(lǐng)取的方

式執(zhí)行。

按操作員個(gè)數(shù)分配工作項(xiàng):根據(jù)參與者中的人員個(gè)數(shù)產(chǎn)生工作項(xiàng),同時(shí)這些

工作項(xiàng)將直接分配到參與者中的人員,每人一個(gè)。

比如,上面的例子若按此策略將產(chǎn)生6個(gè)工作項(xiàng),Iiger、fish、goose、kitly、

snoppy,micky每人分配一個(gè)工作項(xiàng),直接執(zhí)行。

多工作項(xiàng)執(zhí)行

不管工作項(xiàng)的個(gè)數(shù)如何有關(guān)人員每個(gè)人至多只能執(zhí)行一個(gè)。

未完成工作項(xiàng)自動(dòng)終止

1)選擇“是”:工作流引擎在結(jié)束活動(dòng)實(shí)例的同時(shí)關(guān)于那些剩余的未完成

的工作項(xiàng)作“停止”處理。

2)選擇“否”:那些剩余的未完成的工作項(xiàng)仍處于運(yùn)行狀態(tài),盡管如今活

動(dòng)實(shí)例已結(jié)束。這些工作項(xiàng)的擁有者如今不管是否處理它們,已不可能對運(yùn)

行的流程造成任何影響,只有當(dāng)流程實(shí)例結(jié)束時(shí),引擎才會(huì)將這些工作項(xiàng)終

2.2.5.1活動(dòng)項(xiàng)與工作項(xiàng)

活動(dòng)項(xiàng)與工作項(xiàng)是一對多的關(guān)系,人工活動(dòng)被激活后,形成活動(dòng)項(xiàng)實(shí)例繼而

有生成工作項(xiàng)實(shí)例,供參與者操作。在工作項(xiàng)表陽邛orkltcm中儲(chǔ)存了活動(dòng)項(xiàng)實(shí)

力與工作項(xiàng)之間的關(guān)系。

通過BL_finishActivityByDefID結(jié)束活動(dòng)的方式結(jié)束工作項(xiàng)

在現(xiàn)有壬作流工作項(xiàng)結(jié)束調(diào)用中通常都會(huì)使用BL_finishWork【tem這個(gè)運(yùn)算

邏輯調(diào)用,但是也有情況能夠通過BL_finishActivityByDefID來結(jié)束活動(dòng)的方

式結(jié)束工作項(xiàng)。假如這樣做的話會(huì)帶來一個(gè)問題,BL_finishActivityByDefID

方法是結(jié)束活動(dòng),當(dāng)活動(dòng)中的工作項(xiàng)需要領(lǐng)取而又沒看領(lǐng)取的情況下,假如直接

使用該方法,則會(huì)導(dǎo)致此活動(dòng)被終止,而不是正常結(jié)束,因此這種情況下只能直

接使用BL_finishWorkItem來結(jié)束工作項(xiàng)。要么先領(lǐng)取,然后再用

BL_finishActivityByDcfID來結(jié)束活動(dòng)。orkltem

2.2.6觸發(fā)事件

創(chuàng)建:指活動(dòng)被實(shí)例化時(shí)

啟動(dòng):指活動(dòng)被實(shí)例化并滿足啟動(dòng)條件時(shí),當(dāng)活動(dòng)被創(chuàng)建的同時(shí)也會(huì)被啟動(dòng),因

此這兩項(xiàng)的觸發(fā)時(shí)機(jī)是一致的。

結(jié)束:當(dāng)活動(dòng)完成時(shí)(finish)

超時(shí):當(dāng)活動(dòng)超時(shí)時(shí)(假如設(shè)置了時(shí)間限制,該項(xiàng)有效)觸發(fā)

事件類型:標(biāo)明事件動(dòng)作的類型。EOSWorkFlow提供基于EOS平臺(tái)的業(yè)務(wù)邏輯

與運(yùn)算邏輯兩種類型。

事件動(dòng)作:由開發(fā)人員根據(jù)具體的業(yè)務(wù)需求自行定義。能夠是一個(gè)運(yùn)算邏輯也能

夠是一個(gè)業(yè)務(wù)邏輯。

觸發(fā)事件設(shè)置說明:

1、觸發(fā)時(shí)機(jī)與調(diào)用方式。這里需要特別注意的是,調(diào)用方式同步與異步的

區(qū)別。同步是指:以“同步’的方式調(diào)用觸發(fā)事件,等待事件運(yùn)行完成后,該活動(dòng)

才啟動(dòng)。異步是指:以“異步”的方式調(diào)用觸發(fā)事件,該活動(dòng)在啟動(dòng)完觸發(fā)事件

后就啟動(dòng),而無需等待觸發(fā)事件運(yùn)行完成。

2、觸發(fā)事件。假如用業(yè)務(wù)邏輯來實(shí)現(xiàn),那么觸發(fā)事件中產(chǎn)生的數(shù)據(jù)還能夠

在業(yè)務(wù)邏輯中輸出,這樣就能夠?qū)⑦@些數(shù)據(jù)宜接設(shè)置為有關(guān)數(shù)據(jù)了。假如是運(yùn)算

邏輯則不能輸出到有關(guān)數(shù)據(jù)區(qū)中。

3、事件參數(shù)中設(shè)置。輸入?yún)?shù)設(shè)置為WFContoxt,在各類觸發(fā)事件與同退事

件中,WFContext屬于流程實(shí)例的有關(guān)數(shù)據(jù)區(qū)部分,這次數(shù)據(jù)區(qū)有固定的數(shù)據(jù)結(jié)

構(gòu),具體請見:3.2.2流程實(shí)例數(shù)據(jù)區(qū)。觸發(fā)事件的數(shù)據(jù)來源于有關(guān)數(shù)據(jù)區(qū),

WFContcxt是有關(guān)數(shù)據(jù)區(qū)中固有的一塊區(qū)域信息,這些唁息都放在Wfcontcxt節(jié)

點(diǎn)下。其中,WFContext數(shù)據(jù)區(qū)內(nèi)容是流程實(shí)例自身的信息,有關(guān)數(shù)據(jù)區(qū)的內(nèi)容

還有流程中產(chǎn)生的過程數(shù)據(jù),即業(yè)務(wù)數(shù)據(jù)。

基本信息觸發(fā)事件時(shí)間限制流程啟動(dòng)者I

參數(shù)定義

|口>I觸發(fā)時(shí)機(jī)I事件類型I調(diào)用冰I事商祖一指?

h啟動(dòng)業(yè)務(wù)邏緝w二I

03?

ID

觸發(fā)時(shí)機(jī)3事件類型|好曰三]

調(diào)用方式fW

事件動(dòng)作|trainbiz.bizSet[W]

身逑

哨走取洎

[圖-設(shè)置觸發(fā)事件的參數(shù)]

注意:

假如調(diào)用的事件類型為業(yè)務(wù)邏輯,而參數(shù)的數(shù)據(jù)類型為字符串常量或者字符

串變量,那么路徑中填入的格式務(wù)必為:nodeName—value"或者

nodeName='value'(由于業(yè)務(wù)邏輯不支持直接傳入常量或者變量)

比如:要傳入常量tiger到所調(diào)用的業(yè)務(wù)邏輯中,就務(wù)必做如下設(shè)置

目標(biāo)路徑僅對事件類型為業(yè)務(wù)邏輯的事件動(dòng)作有效。

2.2.7回退動(dòng)作

回退是指流程實(shí)例運(yùn)行到某個(gè)活動(dòng)時(shí),由于一些原因要回退到它前驅(qū)的某個(gè)

活動(dòng)上。EOSWorkFlow按照“指定的回退策略”回退到“指定的目標(biāo)活動(dòng)”上,

并根據(jù)定義時(shí)的設(shè)置與回退策略執(zhí)行被回退活動(dòng)上的“回退動(dòng)作”。

回退動(dòng)作

是指活動(dòng)在被回退時(shí)所需做的操作,通常是因

溫馨提示

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

評論

0/150

提交評論