开源工作流程引擎ccflow多人待办处理模式的详解
2019獨角獸企業重金招聘Python工程師標準>>>
?
多人待辦工作處理模式,也是待辦處理模式。是當接受的節點是多個人的時候,如何處理待辦?
根據不用的場景,ccbpm把多人在普通節點下的處理模式分為如下幾種。
搶辦模式:
A發送到B ,B節點上有n個人可以處理。這n個人都可以看到待辦,當其中一個人處理后,其他人的待辦就消失了。這樣的工作模式屬于搶辦,這n個人可以同時打開,當一個人發送后,其他人都不能在發送了。通俗的說,也就是誰搶到了這件工作,就是誰處理的。搶辦模式是一個默認的處理模式。
協作模式:
A發送到B ,B節點上有n個人可以處理。這個n個人都可以去處理,都可以去發送,有最后一個處理人發送到下一個節點上去,這n個人的處理不分順序。這樣的模式我們叫做協作模式。
協作模式通常用在具有審核組件的表單中,每個人都可以填寫自己的意見,發表自己的看法,在審核組件里審核每個人在一個節點上只能寫入一條數據,也就是說只能表達一次意見。
也經常用在傳閱的情況下,必須這些人都讀取了,知道了才能向下運動。它與抄送不同的地方是,抄送可以不看,就可以向下運行,但是他必須處理才能向下運行。
通常的協作模式,就是多人都要點擊一下發送功能按鈕,來確認自己處理了,確認自己同意了或者認可了。
隊列模式:
A發送到B ,B節點上有n個人可以處理。這個n個人按照設置的先后順序去處理,在同一個時間點必須有一個人待辦,其他人看不到。
應用場景: 一個公文發送給一個部門,該部門下n個人可以接受(注意這是一個節點),按照國內的行政制度,這n個人會從小到達排一個隊列,有最小的級別的工作人員審批,然后依次類推,走到最后由最后一個人發送到下一個節點去。這n個人都是該節點的處理人,這n個人的審核步驟是由他們的順序確定的,所以在設置該節點的接受人時,要按照順序執行。
通常這樣的模式也與審核組件一起使用,每個人表達意見后,就發送到下一個節點,當然退回時也是這樣的模式
共享模式:
A發送到B ,B節點上有n個人可以處理。ccbpm有一個任務池,這寫人都需要從這個任務池里獲取。
關于對ccbpm任務池的描述:
1,在流程屬性與全局配置設置了啟動任務池的狀態下,如果一個節點遇到多個人處理,這個任務就放在了任務池里,只有參與處理的人人員才能看得到。
2,工作人員在處理該工作之前需要申請,放到自己的代辦里,一人申請之后,其他人就不能申請了,多個人同時申請第一個人申請的先得到。
3,申請之后,任務池里就不出現在條工作而是進入了被申請人的待辦里。
4,如果申請人處理不了這件工作,他可以把該工作放入任務池中,放入任務池的工作可以被其他的N個人可以看到。
5,不管取回與放入,都需要寫入流程日志。
6,任務池的設計:
1,在流程引擎控制表 WF_GenerWorkFlow 中增加了如下字段:
TaskSta, 枚舉類型, 0=不啟用,1=共享,2=被申請。
TodoEmpsNum, Int類型,處理人員數量,當前節點工作有多少人待辦,如果此值大于等于2,討論共享任務才有意義。
?????????TodoEmps varchar(500) 待辦人員,格式為 處理人員編號,處理人員名稱; 比如:guobaogeng,郭寶庚;fuhui,福惠;
?
2,在流程引擎控制表的人員列表中 WF_GenerWorkerList 中對于IsEnable字段,進行擴充了,如果等于 -1=任務池禁用,0=分配工作被屏蔽,1=正常。
3,增加了一個功能界面 /WF/TaskPoolSmaller.aspx 次功能界面是有在任務池啟用才能被使用。
4,在流程屬性里增加一個字段 IsEnableTaskPool 是否啟用任務池? 此字段用來控制該流程是否啟用任務池。
協作組長模式:
這個模式與協作模式區別在于,如果當前的人員中有一個是組長(領導),他在執行發送的時候就標記這個流程結束。
這種模式有如下3中情況:
第一種:接受人員列表里沒有領導/組長,這種模式與協作模式是一樣的,就是所有的成員都表態(舉手)才能向下發送。
第二種:只有一個領導/組長的情況,領導/組長向下發送的時候,標識該節點完成。比如: 當前節點是一個采樣節點,采樣組有1個組長n個組員,只有組長向下發送的時候才標記次流程完成。
第三種:有n個領導/組長的情況,n>=1 任何一個領導/組長向下發送的時候標記該流程完成。比如:當前節點的采樣任務交給了兩個采樣組負責,有兩個組長n個成員,任何一個組長向下發送,標記流程結束。
怎么標記該其中一個成員是領導?當前登錄人員是所在的部門的領導,他就是組長或者領導,我們用sql表達如下。SELECT COUNT(No) AS num FROM Port_Dept WHERE No='"+WebUser.FK_Dept+"' AND Leader='"+WebUser.No+"'
?
?
任務池的SDK接口:
1,獲得共享任務: DB_TaskPool
2,獲得共享任務中我的待辦:DB_TaskPoolOfMy
3,從共享任務中取回:Node_TaskPoolTakebackOne
4,把取回的共享任務放入任務池: Node_TaskPoolPutOne
?
?
?
轉載于:https://my.oschina.net/mengjuan/blog/3019938
總結
以上是生活随笔為你收集整理的开源工作流程引擎ccflow多人待办处理模式的详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自测题的整理(持续更新)
- 下一篇: Zabbix 3.4.3 使用阿里云短信