從0到1構(gòu)建工作流引擎(二)

5 評(píng)論 6356 瀏覽 46 收藏 25 分鐘

在構(gòu)建完整的工作流引擎時(shí),應(yīng)當(dāng)遵循哪些功能邏輯和業(yè)務(wù)邏輯呢?這篇文章里,作者就結(jié)合實(shí)際工作案例,對(duì)功能與邏輯進(jìn)行了詳細(xì)拆解,一起來看,或許會(huì)對(duì)你有所幫助。

最近我做了工作流引擎系統(tǒng),借鑒了市面上的一些成熟工作流引擎,將其做了一些簡(jiǎn)化以更適用于實(shí)際情況,同時(shí)在復(fù)盤的時(shí)候發(fā)現(xiàn)當(dāng)初踩了一些坑。所以希望以文章的形式寫出來構(gòu)建一個(gè)完整的工作流引擎應(yīng)該有哪些功能模塊,哪些功能邏輯,可以抽象哪些業(yè)務(wù)邏輯,有哪些思考的點(diǎn)。希望對(duì)需要的同學(xué)有所幫助,也和大家一起討論改進(jìn)。

文章分為兩篇,由4個(gè)板塊組成:

  1. 工作流引擎簡(jiǎn)介;
  2. 從案例出發(fā)推演功能;
  3. 功能模塊概覽;
  4. 功能與邏輯詳解。

本文是第二篇,本文包括第四個(gè)板塊。前三個(gè)板塊請(qǐng)看《從0到1構(gòu)建工作流引擎(一)

四、功能與邏輯詳解

由上一篇文章中我們知道了一個(gè)工作流引擎應(yīng)該有圖中這些功能,本篇文章主要對(duì)每個(gè)功能進(jìn)行詳解,包括其背后的邏輯、分支情況和思考點(diǎn)。

其中,業(yè)務(wù)系統(tǒng)管理畢竟維護(hù)的頻率太低,主要維護(hù)哪些字段也需要和開發(fā)溝通,組織架構(gòu)管理也無非是部門信息和人員信息,所以這兩塊功能就直接跳過。

1. 角色矩陣管理

角色矩陣管理功能主要分為兩類,矩陣人員和固定人員,具體解釋如下:

  • 矩陣人員:組織架構(gòu)下會(huì)多個(gè)部門都會(huì)存在的角色,如部門負(fù)責(zé)人;所以該角色會(huì)由多人擔(dān)任,且對(duì)應(yīng)其所在部門;
  • 固定人員:組織架構(gòu)下只會(huì)固定存在一個(gè)的角色,如財(cái)務(wù)總監(jiān),總經(jīng)理等角色;所以該角色只會(huì)由一人擔(dān)任。

1)矩陣人員操作頁面

上圖為矩陣人員的列表配置頁。通過圖中可以看到,左側(cè)功能為矩陣角色的添加維護(hù)板塊,右側(cè)是角色對(duì)應(yīng)的人員的添加維護(hù)板塊。

操作邏輯為:

  1. 先添加矩陣人員角色;
  2. 再為角色選擇角色變量(數(shù)據(jù)來源于條件變量管理);
  3. 再選中該角色為其添加人員(人員的數(shù)據(jù)來源于組織架構(gòu)管理);
  4. 最后再為人員配置變量值(數(shù)據(jù)來源于條件變量管理中該條件變量的值)。

這樣矩陣人員的數(shù)據(jù)就配置好了,具體怎么用看后文流程模型管理中描述。但是這里有2個(gè)問題:

a. 為什么條件變量是跟著角色走,也就是一個(gè)角色一個(gè)條件變量,而不是一個(gè)人員一個(gè)條件變量?

條件變量跟著人員走也可以,但是角色只會(huì)存在于一個(gè)操作節(jié)點(diǎn)中,操作節(jié)點(diǎn)的主要目的是對(duì)一個(gè)變量進(jìn)行處理,如果有2個(gè)及以上變量,為什么不再多設(shè)幾個(gè)操作節(jié)點(diǎn)呢。所以這樣會(huì)增加配置和理解的難度,還不如單純一點(diǎn)。

還有就是為了防止用戶操作過程中選錯(cuò)選漏條件變量等風(fēng)險(xiǎn),導(dǎo)致流程沒有找到對(duì)應(yīng)的審批人。

b. 為什么要有一條默認(rèn)數(shù)據(jù)?

比如區(qū)域負(fù)責(zé)人這個(gè)角色負(fù)責(zé)的區(qū)域該有東南西北,如果我只配了東南西的3個(gè)人員,區(qū)域?yàn)楸钡捻?xiàng)目走流程時(shí)就會(huì)因?yàn)檎也坏教幚砣藛T而報(bào)錯(cuò)。

又比如只有東是一個(gè)負(fù)責(zé)人,南西北是一個(gè)負(fù)責(zé)人,我只需要配東就行了,南西北就直接由默認(rèn)包含了,因?yàn)楣ぷ髁饕鏁?huì)優(yōu)先找非默認(rèn)的數(shù)據(jù),發(fā)現(xiàn)找不到就直接找默認(rèn)那條數(shù)據(jù)。

所以在變量值很多的情況下,有一條默認(rèn)數(shù)據(jù)可以達(dá)到2個(gè)目的,1是防止漏配,2是簡(jiǎn)便配置過程和數(shù)據(jù)。

2)固定人員操作界面

上圖是固定人員的列表配置頁。通過圖中可以看到,左側(cè)功能為固定角色的添加維護(hù)板塊,右側(cè)同樣是角色對(duì)應(yīng)的人員的添加維護(hù)板塊。

操作邏輯為:

  1. 先添加固定人員角色;
  2. 再選中該角色為其添加人員(人員的數(shù)據(jù)來源于組織架構(gòu)管理)就行了,相較于用戶矩陣的配置更為簡(jiǎn)單。

與用戶矩陣不同的是,固定人員配置的都是由一個(gè)人擔(dān)任的角色,比如總經(jīng)理,財(cái)務(wù)總監(jiān)此類,不需要由條件變量去判斷該由誰去審批。所以一個(gè)角色雖然可以為其添加多個(gè)人員,但是只能有1個(gè)人員的狀態(tài)開啟。

這里有3個(gè)思考點(diǎn):

a. 如果允許多個(gè)人員開啟會(huì)怎么樣?

如果直接在固定人員里開啟2個(gè)及以上人員,流程這個(gè)操作節(jié)點(diǎn)時(shí),這2個(gè)人是會(huì)簽還是或簽?zāi)亍?/p>

這個(gè)思考點(diǎn)可以結(jié)合下文流程模型中來看,流程模型中的操作節(jié)點(diǎn)是可以添加多個(gè)處理人的,所以這是能達(dá)到并審目的的。甚至可以用并行網(wǎng)關(guān)也是可以達(dá)到并審目的。

b. 如果沒有矩陣人員這個(gè)功能,全靠固定人員來配置需要怎么配?

A部門的部門負(fù)責(zé)人(張三),B部門的部門負(fù)責(zé)人(李四),C部門的部門負(fù)責(zé)人(王五)……也就是有多少個(gè)人會(huì)參與到審批,就需要配多少個(gè)固定角色,并且流程中也需要配多少個(gè)操作節(jié)點(diǎn)。

c. 例如總經(jīng)理這類角色是否可以用矩陣人員來配置?

也是可以的,但是在配置條件變量、變量值的時(shí)候,還有在流程的后端邏輯處理就需要改變一些規(guī)則了,變得更復(fù)雜了,同時(shí)在操作人員的認(rèn)知上和配置上來說會(huì)比較麻煩。

2. 條件變量管理

條件變量的數(shù)據(jù)來源于業(yè)務(wù)系統(tǒng),如erp、oa等,它的目的是為了將業(yè)務(wù)系統(tǒng)中的字段與工作流引擎建立映射對(duì)應(yīng)關(guān)系;如項(xiàng)目分一級(jí)項(xiàng)目和二級(jí)項(xiàng)目,一級(jí)由XX審批,二級(jí)由XXX審批,所以業(yè)務(wù)系統(tǒng)在發(fā)起流程時(shí)會(huì)記錄該項(xiàng)目是一級(jí)還是二級(jí),工作流引擎以此來判斷該走哪個(gè)審批。

而條件變量從用法上可以分兩類:

  1. 用于流程模型配置中不同的順序流;
  2. 用于矩陣人員配置中人員與變量建立關(guān)系。

(但是在系統(tǒng)中并沒有強(qiáng)制規(guī)定某個(gè)條件變量是否只能用于順序流或者矩陣人員,所以這一點(diǎn)是很靈活的)

注意,具體條件變量需要配置哪些字段需要和開發(fā)同學(xué)溝通,有沒有必要單獨(dú)做一個(gè)前端頁面需要看實(shí)際情況而定,畢竟開發(fā)同學(xué)可以直接在數(shù)據(jù)庫維護(hù),因?yàn)樵鰷p字段可能是一個(gè)低頻次操作。不過做出來有一個(gè)好處就是方便查看有哪些變量和變量值,也可以手動(dòng)維護(hù)。

從圖中可以看到條件變量包括編碼和數(shù)據(jù)類型,這個(gè)編碼是在業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫中存儲(chǔ)的編碼,在工作流引擎的數(shù)據(jù)庫中配置是為建立映射對(duì)應(yīng)關(guān)系。數(shù)據(jù)類型包括字符型、布爾型等。

3. 流程模型管理

前面將配置流程所需要用到的元素和數(shù)據(jù)都已配置好了,接下來就是最重要的流程模型管理了,也就是怎樣配置一個(gè)完整的流程了。

1)流程模型配置–流轉(zhuǎn)線配置界面

上圖是流程模型–流轉(zhuǎn)線的配置頁面,流轉(zhuǎn)線也就是圖中互斥網(wǎng)關(guān)(菱形帶×)后的兩條線。整個(gè)頁面主要由三部分組成:

  1. 最上面一排左邊是對(duì)流程的增刪改按鈕;右邊是對(duì)模型或頁面的操作按鈕;
  2. 中間是可視化編輯器,可對(duì)模塊進(jìn)行拖拽添加或修改;
  3. 下面是對(duì)操作節(jié)點(diǎn)和流轉(zhuǎn)線的配置板塊。

基于上圖中的這個(gè)操作界面,我們要添加一個(gè)完整的流程應(yīng)該怎么做?

  • 第一步:先將流程所需的元素添加完整,如操作節(jié)點(diǎn)、網(wǎng)關(guān)、流轉(zhuǎn)線、結(jié)束節(jié)點(diǎn)等;
  • 第二步:再將流轉(zhuǎn)線上的流轉(zhuǎn)條件配置完整(如果沒有用到互斥網(wǎng)關(guān)可以忽略這一步);
  • 第三步:再將操作節(jié)點(diǎn)內(nèi)各維度的屬性配置完整,如處理人、抄送人、操作按鈕等;
  • 第四步:保存流程,這時(shí)候會(huì)進(jìn)行一系列的判斷以確保流程無誤。

接下來結(jié)合圖中的操作界面,我來講一下這4個(gè)步驟每一步的詳細(xì)操作和判斷邏輯。而第一步添加/刪除操作節(jié)點(diǎn)、網(wǎng)關(guān)、流轉(zhuǎn)線的交互邏輯這里就沒必要展開說了,我們的主要目的是說說功能邏輯和判斷邏輯,所以直接從第二步講起。

通過上圖中下方的彈窗,我們可以看到一個(gè)流轉(zhuǎn)線的流轉(zhuǎn)條件是由多個(gè)條件共同組成規(guī)則,并且每個(gè)條件由4個(gè)元素組成:

  • a. 邏輯符號(hào):包括并且和或者兩個(gè)選項(xiàng),并且代表交集,或者代表合集;
  • b. 條件變量:在條件變量管理中配置的數(shù)據(jù);
  • c. 比較符:有包含、不包含、等于、不等于、大于、大于等于、小于、小于等于。比較符的使用需要和開發(fā)同學(xué)溝通;
  • d. 變量值:在條件變量管理中配置的數(shù)據(jù)。

然后我們根據(jù)幾個(gè)例子來看一下,具體應(yīng)該怎么配置:

例1:當(dāng)項(xiàng)目是海外項(xiàng)目時(shí)由分管領(lǐng)導(dǎo)審批,非海外項(xiàng)目由部門負(fù)責(zé)人審批。

由于只有2個(gè)審批人參與,所以我們需要配置2條流轉(zhuǎn)線和其流轉(zhuǎn)條件。

在第一個(gè)流轉(zhuǎn)線的流轉(zhuǎn)條件中先選擇“是否海外項(xiàng)目”這個(gè)條件變量,再選擇“包含”這個(gè)比較符,最后的變量值選擇“是”;在第二個(gè)流轉(zhuǎn)線的流轉(zhuǎn)條件中選擇“否”就行了。如下圖:

例2:當(dāng)項(xiàng)目是海外項(xiàng)目且是一級(jí)項(xiàng)目時(shí)由分管領(lǐng)導(dǎo)審批,當(dāng)項(xiàng)目是海外項(xiàng)目且是二級(jí)項(xiàng)目時(shí)部門負(fù)責(zé)人審批,當(dāng)項(xiàng)目非海外項(xiàng)目時(shí)由總經(jīng)理審批。

可以看出這時(shí)是由3個(gè)審批人參與了,所以需要配置3條流轉(zhuǎn)線和其流轉(zhuǎn)條件。和例1不同,這時(shí)有2個(gè)條件變量來參與流程的走向了。所以我們需要配如下3個(gè)條件

但問題來了,有2個(gè)條件變量,各有2個(gè)條件值,實(shí)際項(xiàng)目會(huì)根據(jù)排列組合可以得出4種情況:

  1. 是海外項(xiàng)目,且一級(jí)項(xiàng)目
  2. 是海外項(xiàng)目,且二級(jí)項(xiàng)目
  3. 非海外項(xiàng)目,且一級(jí)項(xiàng)目
  4. 非海外項(xiàng)目,且二級(jí)項(xiàng)目

我們只配了3種情況,如果出現(xiàn)第4種情況時(shí)或者我配漏了,流程由于找不到滿足的流轉(zhuǎn)條件,就會(huì)直接掛起。

為了不讓流程掛起,我們就需要引入默認(rèn)流轉(zhuǎn)這個(gè)功能(在操作頁面的流轉(zhuǎn)條件旁邊),我們可以將其中一個(gè)流轉(zhuǎn)條件設(shè)置為默認(rèn)流轉(zhuǎn),這樣第4種情況找不到滿足的條件時(shí),就會(huì)默認(rèn)走入這一條流轉(zhuǎn)條件。

同時(shí)默認(rèn)除了可以實(shí)現(xiàn)邏輯更嚴(yán)密的目的,還有一個(gè)好處就是讓配置過程更簡(jiǎn)便,我只需要配前兩條流轉(zhuǎn)條件就行,第3條直接設(shè)置為默認(rèn)流轉(zhuǎn),就不用再配什么流轉(zhuǎn)條件了,在條件變量很多的情況下就顯得非常好用了。

例3:前面我們看的都是條件之間是并且的關(guān)系,接下來我們看一下或者的關(guān)系。

當(dāng)項(xiàng)目是海外項(xiàng)目或者是一級(jí)項(xiàng)目時(shí)由分管領(lǐng)導(dǎo)審批,非海外項(xiàng)目或者是二級(jí)項(xiàng)目時(shí)由部門負(fù)責(zé)人審批。

這個(gè)例子很簡(jiǎn)單,只需要這樣配就行了:

同例1一樣,同樣有2個(gè)條件變量,各有2個(gè)條件值,實(shí)際項(xiàng)目也會(huì)根據(jù)排列組合可以得出4種情況:

  1. 是海外項(xiàng)目,且一級(jí)項(xiàng)目
  2. 是海外項(xiàng)目,且二級(jí)項(xiàng)目
  3. 非海外項(xiàng)目,且一級(jí)項(xiàng)目
  4. 非海外項(xiàng)目,且二級(jí)項(xiàng)目

情況1、2、3的項(xiàng)目會(huì)走流轉(zhuǎn)線1,情況4的項(xiàng)目會(huì)走流轉(zhuǎn)線2。

但仔細(xì)想一想,情況2的項(xiàng)目也滿足流轉(zhuǎn)線2的條件二,那為什么不走流轉(zhuǎn)線2呢?這里面還有一個(gè)隱藏邏輯,當(dāng)邏輯比較符是或者時(shí),出現(xiàn)兩個(gè)流轉(zhuǎn)線的流轉(zhuǎn)條件有交集時(shí),系統(tǒng)需要從上往下判斷,也就是先判斷流轉(zhuǎn)線1內(nèi)的條件一是否滿足,再判斷條件二是否滿足,然后再判斷流轉(zhuǎn)線2的條件一和條件二是否滿足。

所以當(dāng)情況2的項(xiàng)目走到流轉(zhuǎn)線1的條件一時(shí)就發(fā)現(xiàn)滿足了,也就不需要再往下找流轉(zhuǎn)線2的條件二了。

例4:我們來看一個(gè)復(fù)雜的配置情況,只有2個(gè)審批人,但是有3個(gè)條件變量,每個(gè)條件變量各有2個(gè)條件值,但混合并且和或者的情況:

由于有3個(gè)條件變量和各有2個(gè)條件值,實(shí)際項(xiàng)目可得出8種項(xiàng)目:

  1. 是海外項(xiàng)目,且一級(jí)項(xiàng)目,且工期大于15天
  2. 是海外項(xiàng)目,且一級(jí)項(xiàng)目,且工期小于等于15天
  3. 是海外項(xiàng)目,且二級(jí)項(xiàng)目,且工期大于15天
  4. 是海外項(xiàng)目,且二級(jí)項(xiàng)目,且工期小于等于15天
  5. 非海外項(xiàng)目,且一級(jí)項(xiàng)目,且工期大于15天
  6. 非海外項(xiàng)目,且一級(jí)項(xiàng)目,且工期小于等于15天
  7. 非海外項(xiàng)目,且二級(jí)項(xiàng)目,且工期大于15天
  8. 非海外項(xiàng)目,且二級(jí)項(xiàng)目,且工期小于等于15天

以上各類情況流轉(zhuǎn)至流轉(zhuǎn)線如下:

2)流程模型配置–操作節(jié)點(diǎn)配置界面

操作節(jié)點(diǎn)也就是圖中“部門負(fù)責(zé)人審批”、“分管領(lǐng)導(dǎo)審批”等。與上面流轉(zhuǎn)線配置頁面大部分相同,不同的地方是最下面排節(jié)點(diǎn)屬性配置的字段有些差別。

當(dāng)流程走向正確的流轉(zhuǎn)線之后,就會(huì)來到操作節(jié)點(diǎn),所以我們需要為其配置處理人、操作等,才能讓流程走向下一個(gè)節(jié)點(diǎn)。

我們先看處理人配置彈窗。如圖所示,我們可以配置多條處理人數(shù)據(jù),每條處理人需要先選擇角色類型(矩陣人員或者固定人員),再選擇對(duì)應(yīng)的角色,下方就會(huì)帶出可能參與審批的人員。

矩陣人員前面的案例已經(jīng)講過,會(huì)由條件變量去判斷具體的審批人,這里就不多說了;固定人員就是固定的一個(gè)人去審批,沒有條件變量參與判斷。

需要注意的是審批模式的或簽和會(huì)簽。當(dāng)處理人配置了多個(gè)時(shí),如圖中,可能參與審批的人有張三、李四、趙六,如果是或簽則需要他們3人其中一人審批通過即可,因?yàn)榱鞒虝?huì)同時(shí)流轉(zhuǎn)到他們3人處,;如果是會(huì)簽,則需要他們3人都通過后,流程才會(huì)流轉(zhuǎn)到下一節(jié)點(diǎn)。

然后自動(dòng)完成條件可多選也可不選,當(dāng)前處理人可能在前面的操作節(jié)點(diǎn)中已經(jīng)存在了并且已經(jīng)通過了,這里可以不用再次審批;如果處理人是發(fā)起人時(shí)也可自動(dòng)通過。設(shè)置這個(gè)條件的目的是為了加快流程的審批,減少一些不必要的操作。

最后是操作設(shè)置,在工作流引擎中勾選了當(dāng)前審批人可以進(jìn)行哪些操作后,該功能將在業(yè)務(wù)系統(tǒng)中展示并使用,這一點(diǎn)需要與開發(fā)同學(xué)溝通清楚。具體操作按鈕的邏輯如下:

  • 提交:該按鈕在提交節(jié)點(diǎn)中默認(rèn)選中;提交后則開始審批流,并流轉(zhuǎn)到下一個(gè)節(jié)點(diǎn)
  • 通過:點(diǎn)擊后當(dāng)前節(jié)點(diǎn)通過,并流轉(zhuǎn)到下一個(gè)節(jié)點(diǎn)
  • 駁回:當(dāng)前節(jié)點(diǎn)不通過,點(diǎn)擊后流轉(zhuǎn)到提交人處,需重新提交流程
  • 退回:當(dāng)前節(jié)點(diǎn)不通過,但不是流轉(zhuǎn)到提交人處,而是退回到上一個(gè)節(jié)點(diǎn)
  • 如果上一個(gè)節(jié)點(diǎn)是并審,則需要所有人再次通過;如果該節(jié)點(diǎn)是并審,退回后再次流轉(zhuǎn)則不需要其他人通過
  • 撤回:如果當(dāng)前節(jié)點(diǎn)通過,流轉(zhuǎn)到下一節(jié)點(diǎn)且未通過時(shí),可撤回后重新處理
  • 轉(zhuǎn)辦:將流程轉(zhuǎn)給指定人選來處理(前提是該指定人有功能權(quán)限)
  • 終止:可直接將當(dāng)前流程終止,如需操作則要再次提交

說完了操作節(jié)點(diǎn)屬性配置有哪些功能后,我們?cè)賮砜磶讉€(gè)邏輯問題:

1.如果處理人配置的是矩陣人員,而其角色對(duì)應(yīng)條件變量中在實(shí)際發(fā)生的流程里沒有時(shí)怎么辦?

比如我先設(shè)置了一個(gè)角色叫項(xiàng)目經(jīng)理,條件變量選的是項(xiàng)目等級(jí),張三負(fù)責(zé)一級(jí)項(xiàng)目,李四負(fù)責(zé)二級(jí)項(xiàng)目;然后有個(gè)操作節(jié)點(diǎn)叫項(xiàng)目經(jīng)理審批,選擇了項(xiàng)目經(jīng)理這個(gè)角色,。但是實(shí)際提交的立項(xiàng)流程的表單中沒有項(xiàng)目等級(jí)這個(gè)字段,那實(shí)際流程都跑到這個(gè)節(jié)點(diǎn)了但是又找不到條件變量來判斷該由誰去處理該怎么辦。

這時(shí)有2種處理方式,1是直接將流程掛起,2是默認(rèn)由角色中配置的第一個(gè)人員審批,兩種處理各有利弊。

2.同一個(gè)條件變量,如果在流轉(zhuǎn)條件中設(shè)置了,又在矩陣人員中設(shè)置并配到了操作節(jié)點(diǎn)會(huì)怎樣?

這種配法倒不會(huì)讓流程掛起,也沒有邏輯性的問題,但是會(huì)讓流轉(zhuǎn)條件沒有存在的意義了,為了更簡(jiǎn)化直接配一個(gè)操作節(jié)點(diǎn)就行了。

4. 流程版本管理

配置完一個(gè)完整的流程模型后,我們需要部署。但是一個(gè)模型可能前后會(huì)進(jìn)行多次修改,每次修改就需要部署一次,所以一個(gè)模型會(huì)有多個(gè)版本,我們也就需要一個(gè)列表來對(duì)這些版本進(jìn)行查看和管理。

更為重要的問題是,一個(gè)流程實(shí)例(實(shí)際發(fā)生的流程)可能會(huì)經(jīng)歷較長(zhǎng)的時(shí)間才能審核完,有多個(gè)流程實(shí)例都在運(yùn)行中時(shí),所有完成的時(shí)間你沒法預(yù)估,可能這個(gè)流程實(shí)例走完了下一個(gè)又發(fā)生了。但這時(shí)你又有修改流程的需求,總不可能把流程暫停了不讓大家發(fā)起吧。

所以就引入了流程版本的概念,可能多個(gè)版本共存。比如現(xiàn)在是版本1有10個(gè)流程實(shí)例在運(yùn)行中,你在0點(diǎn)改了流程模型并且部署了版本2,那從0點(diǎn)以后發(fā)生的流程都是走的版本2,但不會(huì)影響之前運(yùn)行中的10個(gè)流程,那10個(gè)流程還是走的版本1。

如果這時(shí)你又說那10個(gè)流程實(shí)例走的是錯(cuò)誤的版本,需要走流程2,可以將這10個(gè)流程實(shí)例直接終止,讓他們重新發(fā)起流程就行了。

所以我們可以看到每個(gè)流程版本都有運(yùn)行中、掛起中、已完成的數(shù)據(jù)統(tǒng)計(jì)(掛起中的數(shù)據(jù)怎么處理在后文中講解)

5. 流程監(jiān)控管理

該列表是所有發(fā)生過的和正在發(fā)生的流程實(shí)例的集合展示,點(diǎn)擊列表我們可以進(jìn)入下一頁查看其執(zhí)行詳情:

流程執(zhí)行詳情頁主要目的是為查看某一條流程的詳細(xì)情況,并對(duì)其進(jìn)行相關(guān)處理;如因?yàn)闂l件變量、處理人配置等原因未找到正確的處理人,流程將會(huì)掛起,此處可選擇正確的處理人,以將流程正常運(yùn)行完結(jié)。

本文由 @橘鉆 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 Pixabay,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 寫的超級(jí)好?。?!

    來自上海 回復(fù)
  2. 文章寫的很用心,不過針對(duì)角色的處理有點(diǎn)復(fù)雜。角色管理應(yīng)該納入到組織管理里,和流程引擎完全解耦,對(duì)角色的設(shè)置不用考慮流程引擎的因素。流程引擎里節(jié)點(diǎn)處理人的設(shè)置應(yīng)該分為組織架構(gòu)節(jié)點(diǎn)、角色、制定人員即可,另外節(jié)點(diǎn)審批需要考慮百分比會(huì)簽的情況。

    來自上海 回復(fù)
    1. 放到組織管理里的也有一個(gè)角色,但是和流程引擎里用到的那個(gè)角色是兩個(gè)獨(dú)立的角色,你可以看一下我的第一篇文章中的場(chǎng)景一和場(chǎng)景二寫了這兩個(gè)角色的區(qū)別用途;
      百分比這個(gè)功能做細(xì)了確實(shí)可以有,比如SaaS一類的,不過我們公司當(dāng)時(shí)還沒有業(yè)務(wù)需求。

      來自重慶 回復(fù)
    2. 我看了,我的意思是標(biāo)準(zhǔn)BPM的做法要保留,依然要去關(guān)聯(lián)組織/角色/人員(會(huì)有按照角色去審批的場(chǎng)景),如果有其他需求在現(xiàn)有標(biāo)準(zhǔn)NPM的基礎(chǔ)上拓展就行。
      你這個(gè)角色相當(dāng)于是為了維護(hù)提交人所屬部門的所屬區(qū)域/事業(yè)部總監(jiān)、分管VP,同時(shí)也維護(hù)了每個(gè)部門的負(fù)責(zé)人。但是你這種設(shè)計(jì)無疑就造成了數(shù)據(jù)冗余和極高的數(shù)據(jù)維護(hù)成本。首頁部門負(fù)責(zé)人直接獲取組織架構(gòu)的就可以,不需要額外維護(hù)一個(gè)表。針對(duì)分管VP,是需要維護(hù)一個(gè)表,不過VP一般都是條線分管,在vp分管的頂級(jí)部門節(jié)點(diǎn)維護(hù)就行,查詢部門所屬分管VP時(shí)支持向上查詢就可以滿足需求,區(qū)域/事業(yè)部總監(jiān)同理。

      來自上海 回復(fù)
  3. 很專業(yè)了

    來自中國 回復(fù)