老汉色av影院,av熟女先锋影音,欧美性爱迷奸系列精品视频,国产丰满老熟女重口对白,av甜汤网,第一黄色影院

熱門資訊
干貨分享

工作流參與者和工作項(xiàng)模式分析

作者:alphaflow來源:flowyun.com訪問:160時(shí)間:2019-05-09

對(duì)于當(dāng)前的工作流應(yīng)用來說,人工節(jié)點(diǎn)無疑扮演著一個(gè)非常重要的角色。因?yàn)闊o論是傳統(tǒng)的協(xié)同辦公系統(tǒng)還是越來越多的企業(yè)應(yīng)用,都需要有人參與到具體的流程中來。這篇文章著重分析工作流應(yīng)用中人工節(jié)點(diǎn)所涉及到的參與者模式以及與此關(guān)聯(lián)的工作項(xiàng)模式,最后會(huì)提供部分的解決方案作為參考。先簡(jiǎn)單說說什么是人工節(jié)點(diǎn)。

人工節(jié)點(diǎn)的概念是與自動(dòng)節(jié)點(diǎn)相對(duì)的。顧名思義,人工節(jié)點(diǎn)就是需要有人參與的節(jié)點(diǎn),在實(shí)際流程中,它體現(xiàn)在產(chǎn)生由人完成的工作項(xiàng)以及由人決定一些決策變量,這些決策變量會(huì)對(duì)流程的運(yùn)行產(chǎn)生影響(例如分支的選擇等等)。自動(dòng)節(jié)點(diǎn)則是由工作流引擎自己調(diào)用完成,不需要人的參與,通常是執(zhí)行定制的業(yè)務(wù)操作。相比較而言,人工節(jié)點(diǎn)更多的應(yīng)用在管理流程里,而自動(dòng)節(jié)點(diǎn)更多的則是應(yīng)用在企業(yè)業(yè)務(wù)流程里。

人工節(jié)點(diǎn)的職責(zé)有三個(gè):第一是決定該節(jié)點(diǎn)的參與者;第二是根據(jù)參與者生成需要人來處理的工作項(xiàng);最后是當(dāng)工作項(xiàng)被參與者處理完畢時(shí),它將繼續(xù)觸發(fā)流程的流轉(zhuǎn)。參與者處理工作項(xiàng)時(shí)可以處理相應(yīng)的業(yè)務(wù)和設(shè)置流程決策變量。

下面我們就按照這三個(gè)職責(zé)分別對(duì)人工節(jié)點(diǎn)所涉及到的參與者模式和工作項(xiàng)模式進(jìn)行分析。

一、決定參與者模式

換句話說就是決定該節(jié)點(diǎn)的參與者,這里有兩種模式:引擎自動(dòng)獲取和最終用戶指定。

1.1 引擎自動(dòng)獲取

所謂引擎自動(dòng)獲取就是由引擎在運(yùn)行期計(jì)算實(shí)際的節(jié)點(diǎn)參與者,不需要最終用戶的參與。這個(gè)計(jì)算基于流程定義時(shí)對(duì)該節(jié)點(diǎn)參與者的定義。

(1)直接指定人員、部門或角色

這種情況最簡(jiǎn)單,也最直接,用戶定義節(jié)點(diǎn)時(shí)直接在組織用戶樹里選定人員、部門或角色,然后在運(yùn)行期根據(jù)定義執(zhí)行與或者是或的運(yùn)算。大多數(shù)的工作流引擎都支持這種模式。但很明顯它也存在著很大的局限性,它是靜態(tài)的,一旦流程定義完畢參與者也就跟著固定下來,運(yùn)行期的任何變化都不會(huì)對(duì)參與者造成影響,一個(gè)很簡(jiǎn)單的需求,請(qǐng)假流程,節(jié)點(diǎn)的參與者需要是當(dāng)前申請(qǐng)者的部門領(lǐng)導(dǎo),因?yàn)樯暾?qǐng)者在定義期是不確定的,所以根本無法指定節(jié)點(diǎn)的參與者,所以這種模式遠(yuǎn)遠(yuǎn)滿足不了用戶稍微復(fù)雜一點(diǎn)的需求。

(2)調(diào)用用戶定制的計(jì)算參與者代碼

這種情況通常是由引擎提供一個(gè)接口或是父類,用戶需要實(shí)現(xiàn)或是繼承這個(gè)接口或父類,然后實(shí)現(xiàn)相應(yīng)的方法。這個(gè)方法通常會(huì)傳遞進(jìn)一個(gè)執(zhí)行上下文的參數(shù),用戶代碼通過這個(gè)上下文可以訪問到當(dāng)前流程實(shí)例的信息,例如當(dāng)前節(jié)點(diǎn)狀態(tài),工作流變量等等,然后用戶可以根據(jù)實(shí)際業(yè)務(wù)和當(dāng)前流程實(shí)例信息進(jìn)行邏輯計(jì)算,最后返回一個(gè)參與者的ID集合。對(duì)于上一個(gè)模式里提到的計(jì)算當(dāng)前申請(qǐng)者部門領(lǐng)導(dǎo)的例子,這個(gè)模式實(shí)現(xiàn)起來非常簡(jiǎn)單,首先獲得當(dāng)前申請(qǐng)者ID,然后在根據(jù)這個(gè)ID找出該申請(qǐng)者部門再找出該部門領(lǐng)導(dǎo)即可。

實(shí)際流程運(yùn)行到該節(jié)點(diǎn)就會(huì)調(diào)用用戶自己定制的計(jì)算參與者的代碼,方法返回的參與者ID即作為該節(jié)點(diǎn)的實(shí)際參與者。

這種模式對(duì)于工作流引擎的實(shí)現(xiàn)而言最為簡(jiǎn)單,因?yàn)樗炎畲蟮膹?fù)雜性都拋給了用戶,由用戶代碼來計(jì)算實(shí)際的參與者。實(shí)際上很多開源的工作流引擎采用的都是這種方式,例如JBPM。但是這種方式給用戶帶來最大靈活性的同時(shí)也帶來了復(fù)雜和煩瑣。特別是當(dāng)面對(duì)一個(gè)數(shù)量巨大的流程需求時(shí),為每一個(gè)流程的每一個(gè)人工節(jié)點(diǎn)都定義一個(gè)參與者計(jì)算類是讓人頭疼的。再加上現(xiàn)在強(qiáng)調(diào)業(yè)務(wù)的敏捷,業(yè)務(wù)里的改變要迅速反饋到流程的定義里,讓最終用戶來編寫或修改這個(gè)參與者計(jì)算類不現(xiàn)實(shí)也不可能。補(bǔ)充一下,這也是用戶在考慮采用開源的工作流引擎還是商業(yè)工作流引擎時(shí)需要著重考慮的一個(gè)方面。

(3)指定前續(xù)節(jié)點(diǎn)的參與者

實(shí)際上是用戶在節(jié)點(diǎn)定義時(shí)指定參與者為前續(xù)某個(gè)節(jié)點(diǎn)的參與者,當(dāng)流程運(yùn)行到該節(jié)點(diǎn),引擎會(huì)自動(dòng)獲取所指定的前續(xù)節(jié)點(diǎn)的參與者作為該節(jié)點(diǎn)的實(shí)際參與者。

這個(gè)模式實(shí)現(xiàn)起來并不困難,大多數(shù)商業(yè)工作流引擎都對(duì)該模式進(jìn)行了支持。它能夠滿足用戶的部分特定需求。

(4)更為復(fù)雜的情況

用戶的需求永遠(yuǎn)是復(fù)雜的,引擎所要做得就是盡量降低這種復(fù)雜性,流程的變化要能夠迅速跟上業(yè)務(wù)的變化??紤]下面兩種稍微復(fù)雜一點(diǎn)但是又很常見的需求。需求一:參與者為當(dāng)前申請(qǐng)者的部門領(lǐng)導(dǎo)且職位為副總;需求二:參與者需要是測(cè)試部的所有女同事。這兩種需求模式1、3都不能滿足,2可以,但是正如提到的那樣,模式2可能會(huì)非常的煩瑣,不能適應(yīng)業(yè)務(wù)的敏捷。其實(shí)這里的復(fù)雜性主要體現(xiàn)在:1、這里的參與者可能是運(yùn)行期決定的;2、參與者的限制條件可能非常多,而這些條件不是簡(jiǎn)單的部門、角色或職位所能描述的。

對(duì)于一般的工作流引擎而言,它們都會(huì)選擇模式2的實(shí)現(xiàn),讓用戶自己實(shí)現(xiàn)邏輯。實(shí)際在后面的部分解決方案里,我們會(huì)看到更為好一點(diǎn)的實(shí)現(xiàn)方式。

1.2 最終用戶指定

運(yùn)行期由最終用戶來決定節(jié)點(diǎn)的參與者。這也是中國(guó)國(guó)情所獨(dú)有的特色。這種模式最為常見的就是用戶提交工作項(xiàng)時(shí)的提交頁面,用戶在該頁面上選定下一節(jié)點(diǎn)(多數(shù)分支用戶選定時(shí))和下一節(jié)點(diǎn)的參與者。這種模式本身并不困難,問題在于在提交頁面需要給用戶提供一個(gè)參與者的選擇范圍,讓用戶進(jìn)行選擇。而關(guān)于這個(gè)選擇范圍,則又回到前面所提到的引擎自動(dòng)獲取的模式,這個(gè)范圍同樣是需要引擎計(jì)算的。于是又回到了剛剛討論過的四種模式。

二、參與者執(zhí)行模式

現(xiàn)在,已經(jīng)獲得了節(jié)點(diǎn)的參與者。引擎下一步將會(huì)根據(jù)這個(gè)參與者生成工作項(xiàng),注意,這里的參與者可能是一個(gè)人,也可能會(huì)是一個(gè)人員范圍(即多個(gè)人)。于是就產(chǎn)生了參與者的執(zhí)行模式,也可以理解為工作項(xiàng)的生成模式。

2.1競(jìng)爭(zhēng)參與

當(dāng)有多個(gè)參與者參與這個(gè)節(jié)點(diǎn)時(shí)就會(huì)產(chǎn)生競(jìng)爭(zhēng)參與這個(gè)模式。同樣一個(gè)工作,A可以完成,B也可以完成,于是就產(chǎn)生競(jìng)爭(zhēng),誰先開始這項(xiàng)工作,就由誰負(fù)責(zé)完成該工作。

2.2順序參與

多個(gè)參與者按照指定的順序完成該工作項(xiàng)。A完成之后由B完成,B完成之后再交給C完成。

2.3同時(shí)參與

多個(gè)參與者同時(shí)對(duì)工作進(jìn)行處理,所有參與者均完成后,流程繼續(xù)向后流轉(zhuǎn)。這個(gè)模式其實(shí)比較復(fù)雜,因?yàn)檫@里同時(shí)涉及到一個(gè)完成規(guī)則:是所有參與者均完成工作項(xiàng)后流程流轉(zhuǎn),還是有其他規(guī)則?例如完成2個(gè)工作項(xiàng)即可流轉(zhuǎn),完成80%的工作項(xiàng)即可流轉(zhuǎn)。稍候會(huì)討論到。

2.4負(fù)載均衡

這也是一個(gè)常見的需求。這項(xiàng)工作A和B都可以完成,但是A目前有10個(gè)待辦工作項(xiàng),B只有2個(gè)待辦工作項(xiàng)。于是用戶期望該工作交由B來完成。這里需要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的負(fù)載均衡。其實(shí)這種情況只是智能決策的一種最簡(jiǎn)單的情況,所謂智能決策是指系統(tǒng)能夠根據(jù)一定的指標(biāo)(由數(shù)據(jù)分析,例如人員的處理效率,工作負(fù)載等等)和規(guī)則來決定該節(jié)點(diǎn)的參與者。

三、工作項(xiàng)完成模式

這個(gè)模式在參與者執(zhí)行模式為同時(shí)參與時(shí)有效。在說到這個(gè)模式之前,先簡(jiǎn)單說說工作項(xiàng)可能存在的幾種特殊狀態(tài),這些狀態(tài)包括掛起、人工終止和委派。掛起就是工作項(xiàng)暫時(shí)停止執(zhí)行,掛起會(huì)影響到流程的流轉(zhuǎn),會(huì)導(dǎo)致流程的掛起。人工終止則是人工手動(dòng)改變?cè)摴ぷ黜?xiàng)的狀態(tài),使該工作項(xiàng)終止執(zhí)行,這個(gè)人通常會(huì)是管理員。人工終止也會(huì)對(duì)流程流轉(zhuǎn)產(chǎn)生影響,當(dāng)除去該工作項(xiàng)之外的所有工作項(xiàng)都完成時(shí),人工終止該工作項(xiàng)會(huì)觸發(fā)流程的流轉(zhuǎn)。委派就是將該工作項(xiàng)委派給他人完成,同時(shí)該工作項(xiàng)也就結(jié)束了。人工終止和委派是工作項(xiàng)結(jié)束的特殊狀態(tài)。

3.1全部完成

當(dāng)所有工作項(xiàng)都結(jié)束時(shí)觸發(fā)節(jié)點(diǎn)的結(jié)束和流程的流轉(zhuǎn)。

3.2完成規(guī)定的個(gè)數(shù)

節(jié)點(diǎn)定義時(shí)指定工作項(xiàng)必須完成的個(gè)數(shù),當(dāng)完成的工作項(xiàng)達(dá)到這個(gè)指定的個(gè)數(shù)時(shí)觸發(fā)節(jié)點(diǎn)的結(jié)束和流程的流轉(zhuǎn)。 

3.3完成規(guī)定的百分比

節(jié)點(diǎn)定義時(shí)指定工作項(xiàng)必須完成的百分比,當(dāng)完成的工作項(xiàng)占所有工作項(xiàng)的比例達(dá)到這個(gè)指定的百分比時(shí)觸發(fā)節(jié)點(diǎn)的結(jié)束和流程的流轉(zhuǎn)。

其實(shí)這里很明顯的可以看出不管是所謂的參與者執(zhí)行模式還是工作項(xiàng)完成模式不過都是一定的規(guī)則,既然是一定的規(guī)則那必然就限定了應(yīng)用的靈活性,用戶能否自定義規(guī)則?根據(jù)業(yè)務(wù)靈活地修改規(guī)則?規(guī)則引擎+DSL應(yīng)該是一個(gè)不錯(cuò)的選擇。


本文核心關(guān)鍵詞:工作流工作項(xiàng)模式

?2023 AlphaFlow流程云 杭州微宏科技有限公司 版權(quán)所有 ICP備案號(hào):浙ICP備18039265號(hào)-1