




已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第第 1 章章 總體說明總體說明 在使用 EOS WorkFlow 的過程中,無論是開發(fā)者在“開發(fā)環(huán)境”中定義業(yè)務(wù) 流程,還是“工作流引擎”控制流程流轉(zhuǎn),或是工作流參與者使用的“客戶端” , 再或者管理員使用的“管理與監(jiān)控工具” ,在這期間都會貫穿 EOS Workflow 的 5 個主要對象流程定義、活動定義、流程實例、活動實例以及工作項。 1.1 EOS 工作流開發(fā)過程簡述工作流開發(fā)過程簡述 EOS 的工作流開發(fā)過程可以看作是一個不斷迭代的過程,如下圖: 流程定義 流程發(fā)布 流程執(zhí)行 開始 完善功能或需求變更 首先是分析需求,然后根據(jù)需求定義流程,在這個階段最主要的工作任務(wù) 其實是設(shè)計,根據(jù)業(yè)務(wù)需求來設(shè)計流程,這個流程要怎么走,流程相關(guān)的數(shù)據(jù) 如何流動,流程的參與者如何界定,與流程相關(guān)的業(yè)務(wù)數(shù)據(jù)如何流動及保存等 等。在這個階段的工作結(jié)果是一個可以發(fā)布的流程,第一次形成的流程可能是 一個比較簡單的,并不完善的版本,但是隨著迭代的進(jìn)行,這個流程將不斷地 被修正和改進(jìn),直到形成一個能夠使用的版本。 接下來是流程的發(fā)布,流程發(fā)布的目的是讓工作流引擎能夠識別該流程。 在開發(fā)環(huán)境(JBoss)下可以直接在 Studio 中發(fā)布流程,開發(fā)階段一般用此方法, 在生產(chǎn)環(huán)境中一般是先打包,然后在 http:/localhost:端口/eosmgr 中發(fā)布。 流程發(fā)布后就可以執(zhí)行了,流程在執(zhí)行階段叫流程實例,它有待啟動、運 行、掛起、完成、結(jié)束、中止等六種狀態(tài)。 我們在設(shè)計及開發(fā)的過程中可能會犯一些錯誤,從而導(dǎo)致發(fā)布的流程執(zhí)行 不正確,或者還可能已經(jīng)開發(fā)好的流程滿足不了現(xiàn)在的需求,需要進(jìn)行調(diào)整, 這個時候迭代就開始了。 1.2 概念說明概念說明 流程定義流程定義:描述一個完整的業(yè)務(wù)過程,它由若干活動組成。包括了流程的 基本信息、流程的開始和結(jié)束條件、組成的活動、活動間流轉(zhuǎn)的規(guī)則、需要用 戶執(zhí)行的工作任務(wù)(工作項)、可能調(diào)用的應(yīng)用程序以及流程相關(guān)數(shù)據(jù)等信息。 提交到流程定義庫(WFProcessDefine)后會包含流程定義 ID(流程定義的唯 一標(biāo)識)、流程定義名稱、版本號、流程定義描述以及提交時間等描述。 活動定義活動定義:包含在流程定義之中,代表了一個相對獨立的、邏輯的工作單 元。一個活動代表一個需要由相關(guān)資源處理,或者由計算機(jī)處理的任務(wù)。其中 定義了該活動的基本信息、執(zhí)行該活動的參與者、時間限制、工作項信息、觸 發(fā)事件、啟動策略等信息。 流程實例流程實例:當(dāng)流程定義提交、發(fā)布到服務(wù)器以后,就可以啟動該流程,啟 動時會創(chuàng)建流程定義的一個實例,叫流程實例。同一個流程定義可以有多個流 程實例。每一個流程實例會被保存在流程實例庫(WFProcessInst)中,包括流 程實例 ID(唯一標(biāo)識)、流程實例名稱、流程定義 ID、流程實例的狀態(tài)、該實 例的啟動者、啟動時間、相關(guān)數(shù)據(jù)等信息。 活動實例活動實例:流程實例中的每個活動稱為活動實例。每一個活動實例會被保 存在活動實例庫(WFActivityInst)中,包括活動實例 ID(唯一標(biāo)識) 、活動實例 的狀態(tài)、所屬的活動定義 ID 以及流程實例 ID、時間限制、是否超時、創(chuàng)建時 間等信息。 工作項工作項:表示流程實例在流轉(zhuǎn)過程中為完成某個活動實例所要參與者做的 工作。一個活動實例可以對應(yīng)一個或多個工作項。每個工作項會被保存在工作 項庫(WFWorkItem)中,包括工作項 ID(唯一標(biāo)識) 、參與者 ID、工作項的狀 態(tài)、所屬的活動實例 ID,流程實例 ID 等信息。 對象間的主要關(guān)系對象間的主要關(guān)系 流程定義和活動定義是在工作流開發(fā)階段所確定;流程實例、活動實例和 工作項則是在工作流運行階段確定。 一個流程定義由多個活動定義組成。 一個流程定義可以創(chuàng)建多個流程實例。 一個流程實例包含多個活動實例,每個活動實例可以包含一個或多個工作 項 在一些特定的情況下(比如,一個活動要循環(huán)執(zhí)行多次) ,一個活動定義會 存在多個活動實例 具體如下圖所示: 其他概念其他概念 【工作流工作流】 工作流管理聯(lián)盟(WFMC)給出的“工作流”定義是: 全部或者部分,由計算機(jī)支持或自動處理的業(yè)務(wù)過程; 干預(yù)過程、業(yè)務(wù)程序的自動化處理,文檔、信息或者任務(wù)按照定義好的 規(guī)則在參與者間傳遞,來完成整個業(yè)務(wù)目標(biāo)或者對整個業(yè)務(wù)目標(biāo)的完成 做貢獻(xiàn)。同時, “工作流”可能由手工組織。 【參與者參與者】 它主要描業(yè)務(wù)流程在實例化后的運行過程中參與操作的人員、角色或組織。 【工作流相關(guān)數(shù)據(jù)工作流相關(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)移條件轉(zhuǎn)移條件】 主要負(fù)責(zé)為流程實例的推進(jìn)提供導(dǎo)航依據(jù),引擎根據(jù)轉(zhuǎn)移條件實現(xiàn)流程的流轉(zhuǎn)。 【聚合模式聚合模式】 指當(dāng)流程中的一個活動存在多個前驅(qū)活動時,該活動產(chǎn)生實例的規(guī)則將根據(jù)“聚 合模式”而定。聚合模式包括:全部聚合/單一聚合/多路聚合(AND/XOR/OR); “全部聚合”模式表示只有當(dāng)所有前驅(qū)活動都運行結(jié)束后才啟動該活動實例,如 果存在尚未運行結(jié)束的前驅(qū)活動,則該活動處于等待狀態(tài)。 “單一聚合”模式表示 只要任何一個前驅(qū)活動運行結(jié)束,則該活動即進(jìn)入運行狀態(tài)。 “多路聚合”模式表 示滿足條件的前驅(qū)活動都完成,該活動才可進(jìn)入運行狀態(tài)。 【分支模式分支模式】 當(dāng)一個活動的后繼活動有多個時,需要確定這些后繼活動產(chǎn)生活動實例的規(guī)則 (即分支模式) 。分支模式包括:全部分支/單一分支/多路分支(AND/XOR/OR); “全部分支”模式表示條件表達(dá)式計算結(jié)果為“True“的所有活動都產(chǎn)生活動實例; “單一分支”模式則表示從后繼活動中任選一個條件表達(dá)式為“True”的活動產(chǎn)生 實例。 “單一分支”模式下需要指定一個“缺省遷移”,當(dāng)所有條件都為“False”時, 此缺省遷移對應(yīng)的活動則會產(chǎn)生實例。 “多路分支”表示該活動的完成會觸發(fā)所有 滿足條件的后繼活動。 【工作流客戶端工作流客戶端】 工作流客戶端是提供給用戶完成工作流任務(wù)的瀏覽,查詢,執(zhí)行的界面,以及 工作流程啟動的界面。EOS 工作流客戶端通過 web 界面的方式提供給用戶。 按用戶和角色取得工作項 工作列表的自定義歸類 工作項的簽收、拒收、執(zhí)行、提醒 競爭工作項的處理 圖形化的啟動過程 【工作流管理監(jiān)控工具工作流管理監(jiān)控工具】 工作流管理監(jiān)控工具是為用戶提供基于 Web 方式的工作流實例的管理和監(jiān)控功 能以及業(yè)務(wù)流程的管理。 支持圖形化工作流實例的管理 支持圖形化監(jiān)控過程實例的運行情況 支持圖形化業(yè)務(wù)流程的管理 運行期實時數(shù)據(jù)查詢 圖形化再現(xiàn)流程運行過程 工作項的重分配 流程統(tǒng)計分析、工作項統(tǒng)計分析 1.3 相關(guān)配置說明相關(guān)配置說明 以下是一些有用的配置說明,關(guān)于 EOS 工作流的具體配置說明請參考附錄 配置文件 wfconfig.xml。 工作流數(shù)據(jù)連結(jié)的配置在哪里工作流數(shù)據(jù)連結(jié)的配置在哪里 在 config/eosconfig.xml 文件中的 module name=“workflowworkflow“ group name=“database“中,指定了工作流的包名稱和 unitID。通過包名稱及 unitID 就可以從 EOSEJBREGISTER 表中獲得數(shù)據(jù)庫連接的 DATASOURCE 和 IP 地址。 帶有工作流的 EOS 應(yīng)用一定要采用數(shù)據(jù)源的方式(配置了數(shù)據(jù)源與連接池,且 eosconfig.xml 文件中 single 值為 false)連接數(shù)據(jù)庫,這樣才能保證工作流 和業(yè)務(wù)系統(tǒng)中事務(wù)的完整性。而且工作流調(diào)度引擎需要連接池來處理對數(shù)據(jù)庫 的并發(fā)控制,不能使用 JDBC 直接連接,否則在實際的使用中會出現(xiàn)并發(fā)控制錯 誤。例如:使用 EOS5.0,在工作流客戶端的“我的任務(wù)待執(zhí)行的工作任務(wù)” 執(zhí)行一個待執(zhí)行的工作項,該工作項的任務(wù)是調(diào)用一個人工活動去查一張表。 如果在 studio 中啟動項目 server,功能一切正常,如果啟動外部 server,這 個功能有時候正常,有時候出錯,出錯頁面的截圖和詳細(xì)的 log 見附件?。ㄗⅲ?出錯是不確定的,有時候連續(xù)好幾次都報錯,有時候連續(xù)好幾次都對!)在編 寫工作流的業(yè)務(wù)自動機(jī)(業(yè)務(wù)邏輯)中,相關(guān)的工作流操作(如:完成工作流 節(jié)點,回退,設(shè)置工作流的相關(guān)數(shù)據(jù)等操作)和外部的業(yè)務(wù)操作都要并在一個 transaction(事務(wù))中。 工作流歷史表的相關(guān)說明工作流歷史表的相關(guān)說明 EOS 數(shù)據(jù)庫中存在以 WF_H 開頭的幾張表,這是工作流歷史表,分別對應(yīng)了 流程實例、活動項實例、工作項實例等等,業(yè)務(wù)上經(jīng)常需要通過這些歷史數(shù)據(jù) 進(jìn)行統(tǒng)計分析,至于什么時候進(jìn)行記錄備份,幫助文檔中沒有提到。 其實,在 EOS 系統(tǒng)配置文件 wfconfig.xml 中,定義了歷史記錄備份的策略,如 下: TIME_BASED 0:30,5:00 第第 2 章章 建模過程建模過程 EOS Studio 提供了可視化的開發(fā)環(huán)境來定義工作流業(yè)務(wù)流程模型,提供串 行、分支、并行、聚合、循環(huán)、同步、子流程等豐富的流程邏輯結(jié)構(gòu),以及人 工活動、自動活動、路由活動等多種活動類型,并可對這些活動屬性進(jìn)行定義, 如參與者類型、觸發(fā)事件、子流程屬性、時間限制、回退動作、多工作項等, 定義屬性時可選擇不同的數(shù)據(jù)類型、可靈活的擴(kuò)展活動;可以通過表單數(shù)據(jù)為 活動節(jié)點設(shè)置動態(tài)表單,其表單數(shù)據(jù)實現(xiàn)了動態(tài)表單的編輯,為日常工作中表 單的定制提供了良好的設(shè)計工具。 2.1 流程定義流程定義 流程定義由流程屬性、活動屬性、連接線三部分構(gòu)成。開發(fā)者可以根據(jù)實 際中的業(yè)務(wù)需要設(shè)置流程上的基本屬性、觸發(fā)事件、時間限制以及流程啟動者。 對每一個具體的活動則可根據(jù)實際情況設(shè)定其運行的方式、參與者以及調(diào)用的 應(yīng)用等信息。完成流程定義的描述后即可提交、發(fā)布。提交后的流程將生成 XML 格式的流程定義文件,存入流程定義庫中 2.1.1 流程版本流程版本 版本號的產(chǎn)生方式如下: 1、開發(fā)人員指定 版本號的格式為: X.Y.ZX.Y.Z (其中 X0;Y:0-99;Z:0-99) ,若指定的版本在流 程定義庫中不存在,則按指定的版本號生成新版本 。若指定的版本在流程定義 庫中存在,則覆蓋流程定義庫中已有的版本 。例如,某流程在流程定義庫中存 在 1.1.1 和 1.2.3 兩個版本。若要提交第三個版本,開發(fā)人員指定新版本號 1.1.2,那么該流程提交流程定義庫的版本號即為 1.1.2;若指定版本號為 1.1.1, 則該流程在提交流程定義庫時會覆蓋原有 1.1.1 版本的流程 2、自動生成新版本 獲取流程定義庫中同一流程的最大版本,并在此基礎(chǔ)上“加 1“作為當(dāng)前流程 的版本號。 2.1.2 觸發(fā)事件觸發(fā)事件 觸發(fā)事件說明觸發(fā)事件說明 流程觸發(fā)事件表示按照流程定義中的設(shè)置流程實例在運行到某個階段所需 要工作流引擎做某種類型的某個動作?!澳硞€階段”即為事件的觸發(fā)時機(jī), “某種類型”即為事件類型,“某個動作”即為事件的動作。 觸發(fā)時機(jī)觸發(fā)時機(jī):表示指定的事件動作在何時觸發(fā)。EOS WorkFlow 提供了創(chuàng)建、 動、結(jié)束、超時和提醒 5 個觸發(fā)時機(jī)。 創(chuàng)建創(chuàng)建:表示指定的事件在流程實例創(chuàng)建時觸發(fā)。此時流程實例實際上處于 “待啟動”的狀態(tài),并沒有合適的活動實例產(chǎn)生。簡言之,流程實例此時只是 做好運行的準(zhǔn)備,但未真正開始運行。例如:把田徑比賽中的 110 米欄比作流 程實例,那么創(chuàng)建時的流程實例就相當(dāng)于已站在助跑器前的運動員們等待發(fā)令 槍響的那一刻。 啟動啟動:表示指定的事件在流程實例啟動時觸發(fā)。此時,流程實例已真正處 于運行狀態(tài)了,流程實例已開始運行,各活動實例將會相繼產(chǎn)生。例如:流程 實例此時的狀態(tài)若比作 110 米欄,就相當(dāng)于運動員們聽到發(fā)令槍響沖離起跑線 的那一刻。 結(jié)束結(jié)束:表示指定的事件在流程實例結(jié)束時觸發(fā)。即流程實例中所有的活動 實例均已完成時觸發(fā)。 超時超時:表示指定的事件在流程實例超時時觸發(fā)。例如:若流程的超時時間 訂為 1 天,那么定義的事件將在流程實例啟動時開始計時,并在 1 天之后觸發(fā) 此事件。 提醒提醒:表示指定的事件在流程實例指定的提醒時間觸發(fā)。例如:若流程的 提醒時間訂為 1 小時,那么定義的事件將在流程實例啟動時開始計時,并在超 時前 1 小時觸發(fā)此事件。 事件類型事件類型:標(biāo)明事件動作的類型。EOS WorkFlow 提供基于 EOS 平臺的業(yè)務(wù) 邏輯和運算邏輯兩種類型。 事件動作事件動作:由開發(fā)人員根據(jù)具體的業(yè)務(wù)需求自行定義??梢允且粋€運算邏輯也可以是 一個業(yè)務(wù)邏輯。 觸發(fā)事件設(shè)置方法觸發(fā)事件設(shè)置方法 【場景】 在流程“啟動的同時,獲取指定節(jié)點信息并放入該流程實例相關(guān)數(shù)據(jù)的指定 節(jié)點下。如獲取流程信息中創(chuàng)建者節(jié)點(WFContext/WFProcessInst/creator),放 入相關(guān)數(shù)據(jù)區(qū) Node/creator 下。 【分析】 通過【場景】的描述,我們可以采用流程觸發(fā)事件的方式實現(xiàn)該需求。分 析為: 1、 “在流程啟動的同時”,表示觸發(fā)的時機(jī)為啟動啟動,調(diào)用方式為同步同步。 這里需要特別注意的是,調(diào)用方式同步和異步的區(qū)別。同步是指:以“同步”的 方式調(diào)用觸發(fā)事件,等待事件運行完成后,該流程才啟動 。 同步是指:以“異 步”的方式調(diào)用觸發(fā)事件,該流程在啟動完觸發(fā)事件后就啟動,而無需等待觸發(fā) 事件運行完成。 2、 “獲取指定節(jié)點信息”為事件動作,事件動作,可以用業(yè)務(wù)邏輯業(yè)務(wù)邏輯來實現(xiàn)。觸發(fā)事件中 產(chǎn)生的數(shù)據(jù)還可以在業(yè)務(wù)邏輯中輸出,這樣就可以將這些數(shù)據(jù)直接設(shè)置為相關(guān) 數(shù)據(jù)了。 3、要將步驟 2 中獲取的信息放入該流程實例相關(guān)數(shù)據(jù)的指定節(jié)點下,具體 可在事件參數(shù)事件參數(shù)中設(shè)置。 輸入?yún)?shù)設(shè)置為 WFContext,在各類觸發(fā)事件以及回退事件中,WFContext 屬于流程實例的相關(guān)數(shù)據(jù)區(qū)部分,這塊數(shù)據(jù)區(qū)有固定的數(shù)據(jù)結(jié)構(gòu),具體請見: 3.2.2 流程實例數(shù)據(jù)區(qū)。觸發(fā)事件的數(shù)據(jù)來源于相關(guān)數(shù)據(jù)區(qū),WFContext 是相關(guān) 數(shù)據(jù)區(qū)中固有的一塊區(qū)域信息,這些信息都放在 Wfcontext 節(jié)點下。其中, WFContext 數(shù)據(jù)區(qū)內(nèi)容是流程實例自身的信息,相關(guān)數(shù)據(jù)區(qū)的內(nèi)容還有流程中 產(chǎn)生的過程數(shù)據(jù),即業(yè)務(wù)數(shù)據(jù)。 輸出參數(shù)設(shè)置為 creator,目標(biāo)路徑為 Node/userID。在觸發(fā)事件所執(zhí)行的 業(yè)務(wù)邏輯中會產(chǎn)生一個 crator 的節(jié)點,把這個節(jié)點放入到相關(guān)數(shù)據(jù)區(qū) Node/userID 下。目標(biāo)路徑:表示將返回結(jié)果存入到流程實例相關(guān)數(shù)據(jù)中的什 么位置。如該例中是將調(diào)用業(yè)務(wù)邏輯的返回結(jié)果輸出到該流程相關(guān)數(shù)據(jù)的 Node/userID 節(jié)點下。注意,目標(biāo)路徑目標(biāo)路徑僅對事件類型為業(yè)務(wù)邏輯業(yè)務(wù)邏輯的事件動作有 效。 圖-設(shè)置觸發(fā)事件的參數(shù) 注意:注意: 如果調(diào)用的事件類型為業(yè)務(wù)邏輯,業(yè)務(wù)邏輯,而參數(shù)的數(shù)據(jù)類型為字符串常量字符串常量或字符字符 串變量,串變量,那么路徑路徑中填入的格式必須為:nodeName=“value“nodeName=“value“或 nodeName=valuenodeName=value (因為業(yè)務(wù)邏輯不支持直接傳入常量或變量) 例如:要傳入常量 tiger 到所調(diào)用的業(yè)務(wù)邏輯中,就必須做如下設(shè)置 2.1.3 超時設(shè)置超時設(shè)置 如果想擴(kuò)展和替換 EOS 工作流的超時和預(yù)警機(jī)制,可以根據(jù)工作流配置文件 wfconfig.xml 中的工作流引擎服務(wù)層相關(guān)配置 10000 參數(shù) timelimit_calculator 流程和活動時間限制的計算方法類名稱,該類必須實 現(xiàn)接口 com.primeton.eos.wf.service.api.TimeLimitCalculator。 配置為空或者不做配置,表示使用確省實現(xiàn)類: com.primeton.eos.wf.service.TimeLimitCalculatorDefault。 時間限制說明時間限制說明 流程的時間限制表示流程啟動后必須在多長時間內(nèi)完成。在流程時間限制 的設(shè)置中 EOS WorkFlow 為開發(fā)人員提供了指定具體的限制時間、超時是否進(jìn)行 郵件通知、是否在超時前進(jìn)行提醒、是否發(fā)提醒通知等功能。 流程時間限制的計時:從流程啟動時開始計時 流程時間限制的獲?。褐苯又付?、從相關(guān)數(shù)據(jù)獲?。ǜ袷剑?.5.20 表示時 限為 3 天 5 小時 20 分鐘) 發(fā)送提醒郵件:EOS WorkFlow 可根據(jù)流程定義中的具體設(shè)置給流程啟動者 發(fā)提醒郵件,提醒他該流程還有多長時間將超時 發(fā)送超時郵件:EOS WorkFlow 可根據(jù)流程定義中的具體設(shè)置給流程啟動者 發(fā)送超時郵件,告之他該流程已經(jīng)超時 提醒時間必須小于指定的時間限制 EOSEOS WORKFLOWWORKFLOW 判斷流程或人工活動超時的原理判斷流程或人工活動超時的原理 流程或人工活動的時間限制中設(shè)置的限制時間將寫入表 WFProcessInst 或 WFWorkItem 的 limitNum 字段中,單位為毫秒,limitNumDesc 是其描述字段; finalTime 是時間限制到達(dá)后的時間。EOS WorkFlow 將當(dāng)前時間與 startTime 相減的結(jié)果與 limitNum 比較,一旦超出時間限制就將 isTimeOut 字段置為 Y, 表示超時;timeOutNum 表示超時了多長時間,在流程結(jié)束時寫入。如果設(shè)置了 超時提醒,該字段可能出現(xiàn)負(fù)數(shù),是未超時的表現(xiàn),只有正數(shù)才表示超時的時 間,timeOutNumDesc 是其描述字段。 時間設(shè)置說明時間設(shè)置說明 【描述】 設(shè)置流程時間限制包括指定時間限制的值、提醒時間的值、決定是否發(fā)送超時 郵件或提醒郵件 【應(yīng)用場景】 規(guī)定流程 A 必須在 1 天內(nèi)完成,超時進(jìn)行通知;并在超時前 10 小時發(fā)提醒通 知 【操作步驟】 1、雙擊流程 A 的編輯區(qū),彈出屬性設(shè)置屬性設(shè)置窗口,點擊時間限制時間限制選項卡 2、勾選啟用時間限制啟用時間限制 3、指定時間限制為:1 天 0 小時 0 分鐘 4、勾選是否按設(shè)置的時間限制進(jìn)行超時通知。是否按設(shè)置的時間限制進(jìn)行超時通知。此處將會根據(jù) wfconfig.xml 相關(guān) 配置給流程啟動者發(fā)送郵件。 5、指定提前 0 天 10 小時 0 分鐘提醒 6、勾選是否按設(shè)置的提醒時間進(jìn)行超時預(yù)警。是否按設(shè)置的提醒時間進(jìn)行超時預(yù)警。此處將會根據(jù) wfconfig.xml 相關(guān)配置 給流程啟動者發(fā)送郵件。 圖-設(shè)置流程時間限制 1 說明: 1、無論是超時通知的郵件還是提醒的郵件,收件人都是流程啟動者 2、這些郵件的發(fā)件人,可根據(jù)具體情況在配置文件 設(shè)置$Primeton HOMEeosserverconfig 目錄下的 wfconfig.xml 設(shè)置,相關(guān)部分如下所示: zll zll 25 zll true 參數(shù)說明: Field 名稱 可否空說明 mailServer 是郵件服務(wù)器 SMTP 地址 mailPort是SMTP 端口,一般設(shè)置為 25 authLogin 是SMTP 服務(wù)器是否需要進(jìn)行用戶驗證,設(shè)置 true 則 需要進(jìn)行用戶認(rèn)證,設(shè)置 false 則不需要進(jìn)行認(rèn)證 username是SMTP 服務(wù)器的用戶名 password是SMTP 的用戶口令 特別說明特別說明:EOS 工作流超時提醒只提醒一次。流程實例一旦超時,就會觸發(fā) 相應(yīng)的操作將流程實例中的 WFProcessInst/isTimeOut 節(jié)點設(shè)置為 Y。如果想 實現(xiàn)重復(fù)提醒功能,通常的做法是為流程設(shè)置超時的觸發(fā)事件。在超時觸發(fā)事 件中注冊一個定時器,定時掃描該流程實例是否完成,如果沒有完成就執(zhí)行發(fā) 放郵件或者短信都通知的操作。 2.1.4 流程啟動者流程啟動者 流程啟動者表示可以啟動某個流程的組織、角色或人。EOS WorkFlow 提 供兩種流程啟動策略:任意人員啟動和從組織機(jī)構(gòu)樹獲取。這樣做的目的主要是 從實際工作中的安全性考慮,視流程的具體情況限定可以啟動該流程的人員范圍。 圖-流程啟動者 當(dāng)流程實例運行的時候,可以在相關(guān)數(shù)據(jù)區(qū)的如下節(jié)點 xpath 找到流程啟動者: tiger 2.1.5 流程定義特別說明流程定義特別說明 工作流的自動活動或觸發(fā)事件調(diào)用帶事務(wù)的業(yè)務(wù)邏輯的注意事項工作流的自動活動或觸發(fā)事件調(diào)用帶事務(wù)的業(yè)務(wù)邏輯的注意事項 因為工作流的事務(wù)控制和業(yè)務(wù)邏輯的事務(wù)控制是分開的,所以,當(dāng)工作流 的自動活動或觸發(fā)事件調(diào)用了帶事務(wù)控制的業(yè)務(wù)邏輯時,工作流引擎默認(rèn)忽略 業(yè)務(wù)邏輯中的事務(wù),這樣就存在一個問題: 業(yè)務(wù)邏輯中出現(xiàn)了異常,并通過異常線回滾,這時,業(yè)務(wù)數(shù)據(jù)提交不成功, 但是,工作流引擎并沒有接收到異常,它會繼續(xù)往后走,最終就出現(xiàn)工作流事 務(wù)和業(yè)務(wù)事務(wù)不一致的現(xiàn)象。 【解決方案和步驟】 建議業(yè)務(wù)邏輯中不要用異常線回退到回滾,讓異常直接拋出,這樣工作流 引擎會接收到異常,進(jìn)而做回滾! 【備注】 1)異常線不能隨便使用,如果一定要用,最好設(shè)置返回值返回,最后轉(zhuǎn)向 出錯頁面; 2)使用異常線前還要注意 BL 方法是否會拋異常,因為不是所有的 BL 方法 都會拋異常。 2.2 活動定義活動定義 EOS WorkFlow 提供了六種類型的活動。開始活動、結(jié)束活動、人工活動、 自動活動、子流程活動以及路由活動。 活動圖元介紹 圖元名稱含義 開始活動 表示一個業(yè)務(wù)流程的開始。在流程開始活動可以定義流程的 啟動表單以及業(yè)務(wù)流程的觸發(fā)事件。 人工活動指需要人工干預(yù)、進(jìn)行某種操作的活動。比如填寫表單等。 自動活動 指無需人工干預(yù),系統(tǒng)自動執(zhí)行的活動。比如獲取系統(tǒng)時間、 往數(shù)據(jù)庫中插入記錄等。 子流程 一種特殊的活動,此活動本身是指向某一個流程,表示當(dāng)流 程實例運行至此時,啟動另外一個流程。子流程的啟動分為 同步和異步兩種方式。 路由活動 是一種邏輯活動,根據(jù)控制條件判斷流程的流向。該活動本 身并不執(zhí)行任何具體的操作。 結(jié)束活動表示一個業(yè)務(wù)流程的結(jié)束。 2.2.1 設(shè)置活動基本信息設(shè)置活動基本信息 活動包括:人工活動、自動活動、子流程。 1)自動活動的基本信息設(shè)置如下: 自動返回結(jié)果: “是是”:表示執(zhí)行動作的返回結(jié)果全部自動放入相關(guān)數(shù)據(jù)相關(guān)數(shù)據(jù)的根路徑下。 “否否”:表示執(zhí)行動作的返回結(jié)果將不會自動放入相關(guān)數(shù)據(jù)中去。此時, 如要將返回結(jié)果中的某項返回到相關(guān)數(shù)據(jù)中,可在參數(shù)參數(shù)選項卡中設(shè)置。 該項設(shè)置僅對調(diào)用類型是業(yè)務(wù)邏輯業(yè)務(wù)邏輯有效 調(diào)用方式: “同步同步”: 直到調(diào)用的執(zhí)行動作運行完后當(dāng)前自動活動才結(jié)束 “異步異步”:當(dāng)前自動活動在調(diào)用執(zhí)行動作后就結(jié)束,而無需等待執(zhí)行動 作運行完 結(jié)束方式: “自動自動”:調(diào)用完執(zhí)行動作后,工作流引擎自動將當(dāng)前自動活動結(jié)束 “人工人工:”調(diào)用完執(zhí)行動作后,引擎不將當(dāng)前自動活動結(jié)束,而是等待 外部調(diào)用結(jié)束該活動 2)子流程的基本信息設(shè)置如下: 調(diào)用方式: “同步同步”:以“同步”的方式調(diào)用子流程,等待子流程運行完成后,該 子流程活動才結(jié)束 “異步異步”:以“異步”的方式調(diào)用子流程,當(dāng)前活動在啟動完子流程后 就結(jié)束,而無需等待子流程運行完成 子流程:單擊【選擇】按鈕,從彈出窗口的資源樹中選擇子流程或直 接輸入子流程,填寫規(guī)則為:構(gòu)件包名. .工作流構(gòu)件名. .業(yè)務(wù)流程名。如果調(diào) 用的子流程需要輸入或輸出一些參數(shù)請在參數(shù)參數(shù)選項卡中設(shè)置 2.2.2 聚合模式、分支模式聚合模式、分支模式 活動的“分支”與“聚合”模式在流程定義時設(shè)置,分別描述了活動在運 行時何時被觸發(fā)以及或個運行結(jié)束后,它的后繼活動如何被觸發(fā)。 聚合模式聚合模式 聚合模式,表示該活動得以觸發(fā)的方式。它包括“全部聚合(AND) ” 、 “單一聚 合(XOR) ”以及“多路聚合(OR) ”三種情況: 1.1.“全部聚合全部聚合”型聚合模式型聚合模式 表示該活動必須等到它的所有前驅(qū)活動全部完成才可以觸發(fā)。 2.2.“單一聚合單一聚合”型聚合模式型聚合模式 表示當(dāng)該活動的若干前驅(qū)活動中只要有一個滿足條件的活動完成,該活動 即可被觸發(fā)。 3.3. “多路聚合多路聚合”型聚合模式型聚合模式 表示該活動必須等到它的所有滿足條件的前驅(qū)活動全部完成才可以觸發(fā)。 滿足條件的前驅(qū)活動包括: 1)它與該活動的連線是“默認(rèn)值“; 2)它與該活動連線上條件為“true” ; 3)多路聚合還需要特別說明的是:多路聚合不一定要設(shè)置默認(rèn)連線,也就 是說一個多路聚合的全部連線都可以設(shè)置條件。 【示例示例】 1.“全部聚合全部聚合”型聚合模式示例型聚合模式示例 圖-“全部聚合”型聚合模式 如上圖所示, “人工活動 3”的“聚合模式(JoinMode) ”設(shè)置為“全 部聚合” ,那么只有在它的前驅(qū)“人工活動” 、 “人工活動 1” , “人工活動 2”都完成后, “人工活動 3”才可以運行。 2.“單一聚合單一聚合”型聚合模式示例型聚合模式示例 圖-“單一聚合”型聚合模式 如上所示,由于“人工活動 3”的“聚合模式(JoinMode) ”設(shè)置為“單一 聚合” ,那么根據(jù)上面的算法說明,當(dāng)“人工活動”完成后, “人工活動 3” 就可以運行了。而無需考慮“人工活動 1”或“人工活動 2”是否完成。 3.3.“多路聚合多路聚合”型聚合模式示例型聚合模式示例 1)由前驅(qū)活動射出的連線上中有默認(rèn)值 圖-“多路聚合”型聚合模式 如上圖所示,由于“人工活動 3”的“聚合模式(JoinMode) ”是“多路聚 合”并且在處理的過程中“num=6” ,那么根據(jù)上面的算法說明由于“人工活動” 與“人工活動 3”以及“人工活動 1”與“人工活動 3”的連線上的條件都滿足, 因此“人工活動 3”在“人工活動”和“人工活動 1”完成后被觸發(fā)。 2)由前驅(qū)活動射出的連線上都設(shè)置條件 圖-“多路聚合”型聚合模式 如上圖所示,由于“活動 E”的“聚合模式(JoinMode) ”是“多路聚合” 并且在處理的過程中“num=6” ,那么根據(jù)上面的算法說明由于“活動 B 與“活 動 D”的射出的連線上的條件都滿足,因此“活動 B 與“活動 D”都完成后,活 動 E 才被觸發(fā)。 分支模式分支模式 分支模式,表示該活動結(jié)束后,它的后繼活動的觸發(fā)情況。它包括“全部 分支(AND) ” 、 “單一分支(XOR) ”以及“多路分支(OR)”三種情況: 1.1.“全部分支全部分支”型分支模式型分支模式 表示該活動結(jié)束后它的所有后繼活動將同時被觸發(fā)。 2.2.“單一分支單一分支”型分支模式型分支模式 如果該活動的分支模式為“單一分支” ,那么引擎會根據(jù)由該活動“射出” 的連接線上的條件進(jìn)行判斷,決定該觸發(fā)哪個后繼活動。具體分為下面三 種情況: 1)滿足條件的連接線所指的活動被觸發(fā); 2)如果有若干個連接線上的條件都滿足,那么比較連接線上的優(yōu)先級, 優(yōu)先級高的那條連接線所指的活動將被觸發(fā); 3)如果連接線上的條件都不滿足,那么取“默認(rèn)值”的那條連接線所 指的活動將被觸發(fā)。 注注活動的“分支模式”為“單一分支”時,由它射出的連接線有且只有 一條線的取值是“默認(rèn)值” 。 3 3 “多路分支多路分支”型分支模式型分支模式 如果該活動的分支模式為“多路分支” ,那么引擎會根據(jù)由該活動“射出” 的連接線上的條件進(jìn)行判斷,決定觸發(fā)哪個或哪些后繼活動。具體分為下 面二種情況: 1)如果連接線上取“默認(rèn)值” ,那么由此連接線所指的后繼活動會被觸發(fā); 2)如果連接線上的條件滿足,那么由此連接線所指的后繼活動會被觸發(fā)。 3)多路分支還需要特別說明的是:多路分支不一定要設(shè)置默認(rèn)連線,也就 是說一個多路分支的全部連線都可以設(shè)置條件。 【示例示例】 1.“全部分支全部分支”型分支模式示例型分支模式示例 圖-“全部分支”型分支模式 如上圖所示,由于 A 活動的分支模式是“全部分支” ,那么當(dāng) A 活動完 成后它后繼的所有活動(B、C、D)將同時被觸發(fā)。 2.2.“單一分支單一分支”型分支模式示例型分支模式示例 1)由該活動射出的連線上只有一個滿足條件時 圖-“單一分支”型分支模式 1 如圖所示,由于“A” 活動的分支模式是“單一分支”并且在處理 的過程中“num=6” ,所以由“A”射出的連接線上只有“num 5”滿 足條件,因此“B”活動滿足條件被觸發(fā)。 2)由該活動射出的連線上有若干個滿足條件時 圖-“單一分支”型分支模式 2 如上圖所示,由于“A” 活動的分支模式是“單一分支”并且在 處理的過程中“num=1” ,盡管由 A 指向 B 和 C 的兩條分支都滿足條件, 但指向 B 的優(yōu)先級大于指向 C 的優(yōu)先級,因此“B”活動被觸發(fā)。 3)由該活動射出的連線上沒有一個滿足條件時 圖-“單一分支”型分支模式 3 如上圖所示,由于“A” 活動的分支模式是“單一分支”并且在處理 的過程中“num=2” ,那么由“A”射出的連接線上沒有滿足條件的, 因此“D”活動被缺省觸發(fā)。 3.“多路分支多路分支”型分支模式示例型分支模式示例 1)由活動射出的連線上中有默認(rèn)值 圖-“多路分支”型分支模式 如上圖所示,由于“開始活動”的分支模式是“多路分支”并且在處理 的過程中“num=6” ,那么根據(jù)上面的算法說明,由“開始活動”射出的 連接線上為“默認(rèn)值“所指的后繼活動“人工活動”一定會被觸發(fā);又由 于滿足“num5”的條件所以“人工活動 1”也會被觸發(fā) 2)由活動射出的連線上中沒有默認(rèn)值,全部設(shè)置條件 如上圖所示,由于“開始活動”的“分支模式”是“多路分支”并且在處 理的過程中“num=6” ,那么根據(jù)上面的算法說明由于射向“活動 B 與“活動 D”的連線上的條件都滿足,因此“活動 B 與“活動 D”在開始活動結(jié)束后被觸 發(fā)。 2.2.3 參與者設(shè)置參與者設(shè)置 活動參與者實際上是指在流程實例運行過程中,流程實例“流轉(zhuǎn)”至此時 該活動實例所對應(yīng)的工作項有哪些人可以執(zhí)行。在流程定義時設(shè)置活動的參與 者實際上是圈定流程實例運行至此時可以執(zhí)行該活動實例所對應(yīng)工作項的人員 范圍,可以是機(jī)構(gòu)、角色或人。 EOS WorkFlow 提供了 4 種可以獲取參與者的方式: 組織機(jī)構(gòu)與角色組織機(jī)構(gòu)與角色:參與者由開發(fā)人員從機(jī)構(gòu)樹中獲取 只選擇一人:表示該活動所對應(yīng)的工作項直接分配給該人處理 超過一人:表示該活動所對應(yīng)的工作項由這些人中的某個人以“領(lǐng)取” 的方式處理 虛擬崗位(機(jī)構(gòu)虛擬崗位(機(jī)構(gòu)+ +角色)角色):表示在不設(shè)置崗位的情況下,由部門+角色共同決定 一個人工活動的參與者。 流程啟動者流程啟動者:表示活動參與者為該流程的啟動者 活動執(zhí)行者活動執(zhí)行者:表示活動參與者為某個已完成的活動實例所對應(yīng)工作項的執(zhí)行者 從相關(guān)數(shù)據(jù)獲取從相關(guān)數(shù)據(jù)獲?。罕硎净顒訁⑴c者由相關(guān)數(shù)據(jù)指定。由相關(guān)數(shù)據(jù)獲取參與者的 規(guī)則詳見從相關(guān)數(shù)據(jù)獲取參與者 從規(guī)則邏輯獲取從規(guī)則邏輯獲取:表示活動參與者由某個規(guī)則邏輯的返回值確定。由規(guī)則邏輯 獲取參與者的規(guī)則詳見從規(guī)則邏輯獲取參與者 特別說明特別說明:如果要改寫組織機(jī)構(gòu)權(quán)限并在參與者設(shè)置的時候顯示新的組織機(jī)構(gòu)樹, 具體操作請參見知識庫文檔:組織機(jī)構(gòu)與工作流集成方案.doc 虛擬崗位(機(jī)構(gòu)虛擬崗位(機(jī)構(gòu)+ +角色)設(shè)置參與者角色)設(shè)置參與者 -圖通過機(jī)構(gòu)+角色實現(xiàn)虛擬崗位設(shè)置參與者 用角色+機(jī)構(gòu)的方式設(shè)置參與者需要特別注意的是,在該活動激活以前一定 要將上圖中機(jī)構(gòu)變量路徑設(shè)置到相關(guān)數(shù)據(jù)區(qū)中。 此外,還有一種方法設(shè)置一組機(jī)構(gòu):把多個機(jī)構(gòu)寫成如下格式: 1 2 這樣機(jī)構(gòu)變量路徑 xpath 寫成:list/org/id 即可。這樣,工作流引擎也會找 到多個機(jī)構(gòu) id,從而實現(xiàn)設(shè)置一組機(jī)構(gòu)+角色的要求。如下圖所示: 圖-設(shè)置一組機(jī)構(gòu)變量 從相關(guān)數(shù)據(jù)區(qū)設(shè)置參與者從相關(guān)數(shù)據(jù)區(qū)設(shè)置參與者 1)從相關(guān)數(shù)據(jù)獲得一個具體的參與者)從相關(guān)數(shù)據(jù)獲得一個具體的參與者 【算法說明】 從相關(guān)數(shù)據(jù)的 XPATH 中,直接指定一個參與者。 注:這種方式獲得的參與者只能是個人。相關(guān)數(shù)據(jù)必須滿足下面的結(jié)構(gòu)。 tiger 2)從相關(guān)數(shù)據(jù)獲得某一類型的參與者(指定一個或一組人員)從相關(guān)數(shù)據(jù)獲得某一類型的參與者(指定一個或一組人員) 【算法說明】 從相關(guān)數(shù)據(jù)的 XPATH 中,獲得某一類型的參與者??梢允且粋€人,也可以是 某一角色或某一機(jī)構(gòu)的一組人。相關(guān)數(shù)據(jù)必須滿足下面的結(jié)構(gòu)。 3)從相關(guān)數(shù)據(jù)獲得一系列參與者)從相關(guān)數(shù)據(jù)獲得一系列參與者 【算法說明】 從相關(guān)數(shù)據(jù)的 XPATH 中,獲得一組參與者??梢允且粋€人、一個角色、一個 崗位、一個機(jī)構(gòu),也可以是機(jī)構(gòu)、角色或個人的集合,還可以是崗位列表的集 合。相關(guān)數(shù)據(jù)必須滿足下面的結(jié)構(gòu)。 id 和 type 的含義如上所示 特別說明特別說明 :在上面 XPATH 結(jié)構(gòu)中如果 type 是“person” ,那么 id 即為用 戶 ID;如果 type 是 “role” ,那么 id 即為角色 ID;如果 type 是“organization” , 那么 id 即為機(jī)構(gòu) ID;如果 type 是 “position” ,那么 id 即為崗位 ID;如果 type 是 “position_list” ,那么 id 即需滿足如下格式: / type=”O(jiān)R”表示組織機(jī)構(gòu) rolea/ 角色 ID $orgID / 獲取機(jī)構(gòu) ID 的 XPATH(相對于相關(guān)數(shù)據(jù)的根路徑) 。 ”$” 不可少,標(biāo)識其后的串是個 XPATH。 此外,還有一種方法設(shè)置一組機(jī)構(gòu):把多個機(jī)構(gòu)寫成如下格式: 1 2 這樣機(jī)構(gòu)變量路徑 xpath 寫成:list/org/id 即可。這樣,工作流引擎也會找 到多個機(jī)構(gòu) id,從而實現(xiàn)設(shè)置一組機(jī)構(gòu)+角色的要求。 從規(guī)則邏輯設(shè)置參與者從規(guī)則邏輯設(shè)置參與者 從規(guī)則邏輯獲取參與者從規(guī)則邏輯獲取參與者 【算法說明算法說明】 從業(yè)務(wù)邏輯獲取參與者列表,然后再按照“分配到組織機(jī)構(gòu)”的模式進(jìn)行分配。 從業(yè)務(wù)邏輯返回 Dom 當(dāng)中找到參與者列表的方法: 1)如果返回的結(jié)果中包括下面的結(jié)構(gòu),系統(tǒng)從)如果返回的結(jié)果中包括下面的結(jié)構(gòu),系統(tǒng)從 listlist 節(jié)點中獲取多個參與者。節(jié)點中獲取多個參與者。 2)如果從規(guī)則邏輯中沒有找到如果從規(guī)則邏輯中沒有找到 listlist 節(jié)點,那么系統(tǒng)會查找節(jié)點,那么系統(tǒng)會查找 ParticipantParticipant 節(jié)點節(jié)點. . 獲取參與者。格式如下所示:獲取參與者。格式如下所示: id 和 type 的含義同上。 特別說明特別說明 :如果如上所示的兩種結(jié)構(gòu)都存在于調(diào)用的規(guī)則邏輯的返回的 結(jié)果中,那么系統(tǒng)只會從 list 節(jié)點中獲取參與者。 在上面 XPATH 結(jié)構(gòu)中如果 type 是“personperson” ,那么 id 即為用戶 ID;如果 type 是 “rolerole” ,那么 id 即為角色 ID;如果 type 是“organizationorganization” ,那么 id 即為機(jī)構(gòu) ID;如果 type 是 “positionposition” ,那么 id 即為崗位 ID;如果 type 是 “position_listposition_list” ,那么 id 即需滿足如下格式: / type=”O(jiān)R”表示組織機(jī)構(gòu) rolea/ 角色 ID $orgID / 獲取機(jī)構(gòu) ID 的 XPATH(相對于相關(guān)數(shù)據(jù)的根 路徑) 。 ”$”不可少,標(biāo)識其后的串是個 XPATH。 此外,還有一種方法設(shè)置一組機(jī)構(gòu):把多個機(jī)構(gòu)寫成如下格式: 1 2 這樣機(jī)構(gòu)變量路徑 xpath 寫成:list/org/id 即可。這樣,工作流引擎也會找 到多個機(jī)構(gòu) id,從而實現(xiàn)設(shè)置一組機(jī)構(gòu)+角色的要求。 工作流參與者設(shè)置機(jī)制說明工作流參與者設(shè)置機(jī)制說明 流程實例根據(jù)流轉(zhuǎn)條件依次激活實例中的相應(yīng)的活動,當(dāng)活動分配給某個 參與者(唯一的 userID)的時候,就在 WFWorkItem 表中形成一條工作項記錄, 主鍵為 workItemID。在 WFWorkItem 工作項信息表里還有個很重要的字段: participant。這個字段描述該工作項的參與者具體是誰。在工作項參與者 WFWIParticipant 表中,也有工作項 workItemID 和參與者 participant,不過, 這個表里描述的是根據(jù)流程定義,活動被激活后工作項的分配情況,根據(jù)流程 定義的設(shè)置形成相應(yīng)的記錄,比如,流程定義中有 3 種參與者,那么在 WFWIParticipant 表中也形成 3 條記錄,所以這里的參與者有可能是具體個人 (userID) ,也可能是角色(role) ,也可能是機(jī)構(gòu)(orgID) ,也可能是崗位 (positionID) ,當(dāng)工作項沒有領(lǐng)取的時候,在 WFWorkItem 表中也會形成一條 記錄,這條記錄的參與者字段 participant 是用“|”隔開的參與者串,這個串 中的參與者是在流程定義的時候定義的。當(dāng)工作項被領(lǐng)取以后,就會在工作項 表 WFWorkItem 表里出現(xiàn)具體的執(zhí)行人信息。此外,有時候工作項會出現(xiàn)該派的 情況,這個時候,改派以后具體參與者也在工作項表 WFWorkItem 表有描述,而 工作項參與者 WFWIParticipant 表不會有什么變化。 2.2.4 時間限制時間限制 活動的時間限制表示活動實例啟動啟動后必須在多長時間內(nèi)完成。在活動 時間限制的設(shè)置中 EOS WorkFlow 為開發(fā)人員提供了指定具體的限制時間、超時 是否進(jìn)行郵件通知、是否在超時前進(jìn)行提醒、是否發(fā)提醒通知等功能。 活動時間限制的設(shè)置:開發(fā)人員可以根據(jù)業(yè)務(wù)需要在“人工活動”和“子流程 活動”中進(jìn)行設(shè)置。 活動時間限制的計時:從活動實例啟動時開始計時 活動時間限制的獲?。褐苯又付?、從相關(guān)數(shù)據(jù)獲?。ǜ袷剑?.5.20 表示時 限為 3 天 5 小時 20 分鐘) 活動還有超時的觸發(fā)事件設(shè)置,可以針對超時做具體的操作。 EOSEOS WORKFLOWWORKFLOW 判斷流程或人工活動超時的原理判斷流程或人工活動超時的原理 流程或人工活動的時間限制中設(shè)置的限制時間將寫入表 WFProcessInst 或 WFWorkItem 的 limitNum 字段中,單位為毫秒,limitNumDesc 是其描述字段; finalTime 是時間限制到達(dá)后的時間。EOS WorkFlow 將當(dāng)前時間與 startTime 相減的結(jié)果與 limitNum 比較,一旦超出時間限制就將 isTimeOut 字段置為 Y, 表示超時;timeOutNum 表示超時了多長時間,在流程結(jié)束時寫入。如果設(shè)置了 超時提醒,該字段可能出現(xiàn)負(fù)數(shù),是未超時的表現(xiàn),只有正數(shù)才表示超時的時 間,timeOutNumDesc 是其描述字段。 2.2.5 多工作項多工作項 一個活動到底產(chǎn)生多少個工作項并且產(chǎn)生的這些工作項又由誰來做呢?EOS WorkFlow 就工作項的產(chǎn)生和分配問題提供了 2 種策略: 按參與者設(shè)置個數(shù)領(lǐng)取工作項:按參與者設(shè)置個數(shù)領(lǐng)取工作項:按照此活動參與者的個數(shù)產(chǎn)生工作項。每 個參與者一個工作項,若參與者中包括若干人員(比如參與者的類型為機(jī)構(gòu)或 角色) ,則這些人員可通過先“領(lǐng)取”的方式執(zhí)行工作項。 例如:某活動設(shè)置了 3 個參與者:tiger,角色 B(包含 fish 和 goose 兩人), 機(jī)構(gòu) A(包含 kitty、snoppy、micky 三人),那么按照此策略將產(chǎn)生 3 個工作項。 具體分配為:tiger 一個工作項,由其直接執(zhí)行(該參與者只有一個人所以無需 先領(lǐng)取);角色 B 一個工作項,由 fish 或 goose 中的一個人以領(lǐng)取的方式執(zhí)行; 同理,機(jī)構(gòu) A 一個工作項,由 kitty、snoppy 或 micky 中的一個人以領(lǐng)取的方 式執(zhí)行。 按操作員個數(shù)分配工作項按操作員個數(shù)分配工作項:根據(jù)參與者中的人員個數(shù)產(chǎn)生工作項,并且這 些工作項將直接分配到參與者中的人員,每人一個。 例如,上面的例子若按此策略將產(chǎn)生 6 個工作項, tiger、fish、goose、kitty、snoppy,micky 每人分配一個工作項,直接執(zhí)行。 多工作項執(zhí)行 不管工作項的個數(shù)如何相關(guān)人員每個人至多只能執(zhí)行一個。 未完成工作項自動終止未完成工作項自動終止 1)選擇選擇“是是”:工作流引擎在結(jié)束活動實例的同時對于那些剩余的未完成 的工作項作“停止停止”處理。 2)選擇選擇“否否”:那些剩余的未完成的工作項仍處于運行運行狀態(tài),盡管此時活 動實例已結(jié)束。這些工作項的擁有者此時無論是否處理它們,已不會對運 行的流程造成任何影響,只有當(dāng)流程實例結(jié)束時,引擎才會將這些工作項 終止 活動項與工作項活動項與工作項 活動項和工作項是一對多的關(guān)系,人工活動被激活后,形成活動項實例繼 而有生成工作項實例,供參與者操作。在工作項表 WFWorkItem 中保存了活動項 實力和工作項之間的關(guān)系。 通過通過 BL_BL_finishActivityByDefIDfinishActivityByDefID 結(jié)束活動的方式結(jié)束工作項結(jié)束活動的方式結(jié)束工作項 在現(xiàn)有工作流工作項結(jié)束調(diào)用中一般都會采用 BL_finishWorkItem 這個運 算邏輯調(diào)用,但是也有情況可以通過 BL_finishActivityByDefID 來結(jié)束活動的 方式結(jié)束工作項。如果這樣做的話會帶來一個問題, BL_finishActivityByDefID 方法是結(jié)束活動,當(dāng)活動中的工作項需要領(lǐng)取而又沒有領(lǐng)取的情況下,如果直 接使用該方法,則會導(dǎo)致此活動被終止,而不是正常結(jié)束,所以這種情況下只 能直接使用 BL_finishWorkItem 來結(jié)束工作項。要么先領(lǐng)取,然后再用 BL_finishActivityByDefID 來結(jié)束活動。orkItem 2.2.6 觸發(fā)事件觸發(fā)事件 創(chuàng)建創(chuàng)建:指活動被實例化時 啟動啟動:指活動被實例化并滿足啟動條件時,當(dāng)活動被創(chuàng)建的同時也會被啟動, 所以這兩項的觸發(fā)時機(jī)是一致的。 結(jié)束結(jié)束:當(dāng)活動完成時(finish) 超時超時:當(dāng)活動超時時(如果設(shè)置了時間限制,該項有效)觸發(fā) 事件類型:標(biāo)明事件動作的類型。EOS WorkFlow 提供基于 EOS 平臺的業(yè)務(wù)邏輯 和運算邏輯兩種類型。 事件動作:由開發(fā)人員根據(jù)具體的業(yè)務(wù)需求自行定義??梢允且粋€運算邏輯也 可以是一個業(yè)務(wù)邏輯。 觸發(fā)事件設(shè)置說明: 1、觸發(fā)時機(jī)和調(diào)用方式。這里需要特別注意的是,調(diào)用方式同步和異步的 區(qū)別。同步是指:以“同步”的方式調(diào)用觸發(fā)事件,等待事件運行完成后,該活 動才啟動 。 異步是指:以“異步”的方式調(diào)用觸發(fā)事件,該活動在啟動完觸發(fā)事 件后就啟動,而無需等待觸發(fā)事件運行完成。 2、觸發(fā)事件。如果用業(yè)務(wù)邏輯業(yè)務(wù)邏輯來實現(xiàn),那么觸發(fā)事件中產(chǎn)生的數(shù)據(jù)還可以 在業(yè)務(wù)邏輯中輸出,這樣就可以將這些數(shù)據(jù)直接設(shè)置為相關(guān)數(shù)據(jù)了。如果是運 算邏輯則不能輸出到相關(guān)數(shù)據(jù)區(qū)中。 3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙掛車轉(zhuǎn)讓協(xié)議書
- 吳中勞務(wù)派遣協(xié)議書
- 商標(biāo)起名轉(zhuǎn)讓協(xié)議書
- 廠長目標(biāo)責(zé)任協(xié)議書
- 合伙家電維修協(xié)議書
- 員工免責(zé)聲明協(xié)議書
- 品牌羊肉代理協(xié)議書
- 單方解除裝修協(xié)議書
- 逐步提升中級會計實務(wù)考試試題及答案
- 古宅拆遷復(fù)原協(xié)議書
- 七年級下冊英語第三次月考試題
- 涉密人員錄用審查表
- GB/T 41631-2022充油電纜用未使用過的礦物絕緣油
- GB/T 39559.2-2020城市軌道交通設(shè)施運營監(jiān)測技術(shù)規(guī)范第2部分:橋梁
- GB/T 19106-2013次氯酸鈉
- 2023年江西省三支一扶真題及答案解析
- 中國鋁業(yè)遵義氧化鋁有限公司氧化鋁工程分解分級槽基礎(chǔ)工程 施工組織設(shè)計
- 初中信息技術(shù)-算法基礎(chǔ)知識教學(xué)教學(xué)課件
- 訴訟文書送達(dá)地址確認(rèn)書
- 《中興通訊績效管理制度》-人事制度表格【管理資料】
- (完整版)硬件測試規(guī)范
評論
0/150
提交評論