ccflow 馳騁工做流引擎的共享任務,應用背景,設置,設計,sdk接口
------------------------------------------------------------------- web
在之前的版本中,若是多人處理一個工做,ccflow 按照強辦處理,好比: a 發送到 b , 在B 點若是N人處理(N>=2),其中的一我的處理完成後,其餘的人就不能看到了,若是多我的同時打開了,一我的發送了,另外的一我的在執行發送就會提示發送錯誤。 ui
以上的應用場景具備必定的侷限性,若是處理得工做人員有多個,容易出現工做交叉處理的狀況,爲此ccflow啓用了任務池的概念。 設計
關於對ccflow任務池的描述: 日誌
1,在流程屬性與全局配置設置了啓動任務池的狀態下,若是一個節點遇到多我的處理,這個任務就放在了任務池裏,只有參與處理的人人員才能看獲得。
2,工做人員在處理該工做以前須要申請,放到本身的代辦裏,一人申請以後,其餘人就不能申請了,多我的同時申請第一我的申請的先獲得。
3,申請以後,任務池裏就不出如今條工做而是進入了被申請人的待辦裏。
4,若是申請人處理不了這件工做,他能夠把該工做放入任務池中,放入任務池的工做能夠被其餘的N我的能夠看到。
5,無論取回與放入,都須要寫入流程日誌。 接口
任務池的功能啓用: 工作流
1,任務池功能有兩個地方配置,web.config , 與流程屬性,屬性名稱都是: IsEnableTaskPool 是否啓用任務池。 配置
2,web.config 中的配置,是用來講明全局是否啓用任務池?若是全局啓用了任務池,流程屬性裏的 IsEnableTaskPool 設置纔有效。 List
3,若是全局啓用了任務池,可是個別的流程不使用任務池,就在流程屬性裏單獨配置它,這樣既能夠解決有一些流程須要啓用任務池,有一些流程不須要任務池的須要。 sdk
任務池的設計: co
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 是否啓用任務池? 此字段用來控制該流程是否啓用任務池。
任務池的SDK接口:
1,得到共享任務: DB_TaskPool
2,得到共享任務中個人待辦:DB_TaskPoolOfMy
3,從共享任務中取回:Node_TaskPoolTakebackOne
4,把取回的共享任務放入任務池: Node_TaskPoolPutOne