1. 程式人生 > >ccbpm工作流引擎是怎樣支持多種流程模式的

ccbpm工作流引擎是怎樣支持多種流程模式的

功能 back 技術 其它 等等 先後 添加 ccf 進行

前言:

在BPM領域支持流程運轉的理論模型有多種。有的21種、28種。32種。

每種模式都代表了這樣的模式的理論設計者研究者的人員主張、思想。這些模式盡可能的,全然去覆蓋到現實生產、工作、應用上的流程流轉規則。

可是不論什麽領域都有自己未探索到的流程運轉可能,假設說自己的理論可以涵蓋全部的應用需求,那就說的有點太早。

就類似於世界上的教派或者哲學家一樣。不同的教主與哲學家有不同的世界觀。不同的世界認識,都對自己的“追隨者”來宣揚自己的主張、觀點,可是他們也能“和諧”相處,對於同一個事物都有自己的觀點,也有同樣的認識,同一時候也有自己的“理論”解釋不了的事物。

這篇文章介紹了Ccbpm的流程的4大執行模式。以及是怎樣支持各式各樣的流程變化。

Ccbpm控制流程執行模式的方式:

Ccbpm使用節點模式、流程屬性、節點屬性來控制流程運轉規則,以不不變應萬變的方式來應對各種生產、管理模式下的流程運轉須要。

Ccbpm的概念比較簡單easy理解。它有4大執行模式。各自是線性流程、同表單分合流、異表單分合流、父子流程。

節點類型:普通節點、分流節點、合流節點、分合流節點、子線程節點。

技術分享


節點多人處理模式:搶辦模式、協作模式、隊列模式、共享模式。

與父子流程相關的一些屬性控制等等,例如以下圖。

技術分享


Ccbpm 的4大流程運轉模式的解釋:

線性流程:在統一個時間點,僅僅有一個活動的節點,每一個節點都依照一定的步驟,一定的順序就執行。在特定的節點同意跳轉、同意自己定義以後的流程執行步驟。我們把這種流程稱為線性流程,也叫順序流程。

在一個系統中大約85%以上的流程,都是該類流程。

技術分享


自由流程:

技術分享


同表單分合流:ccbpm的強大在於ccbpm集成了ccform。流程與表單是相輔相成的。就好像一個火車頭與車廂的關系,同表單的分合流,就是一個節點上能夠存在多個活動的線程,線程與處理人是1對1的關系。每一個處理人的內容都是一樣的。所以我們成為同表單的分合流。

例如以下圖:

技術分享

技術分享

技術分享

異表單分合流:假設您了解了同表單的分合流。就不難了解這個流程模式的概念了。

例如以下圖:

技術分享

技術分享


父子流程: 父子流程,就是在一個流程A的一個節點上,能夠啟動另外的一個流程B,當前的流程我們稱為父流程,被啟動的流程成為子流程,假設子流程B的一個節點上啟動另外一個流程C,那末B流程與C流程就是父子流程, A 與C就是爺爺與孫子關系。可是ccbpm不研究跨界關系。只研究相近的兩個流程之間的關系。

比方:一個project類的流程。調用施工流程、與催款流程。例如以下圖:

技術分享


節點多人處理工作模式:

具體文檔地址:http://jflow.mydoc.io/?v=5404&t=17947

多人待辦工作處理模式,也是待辦處理模式。是當接受的節點是多個人的時候,怎樣處理待辦?

依據不用的場景。ccBPM把多人在普通節點下的處理模式分為例如以下幾種。

搶辦模式:

A發送到B ,B節點上有n個人能夠處理。這n個人都能夠看到待辦,當當中一個人處理後。其它人的待辦就消失了。這種工作模式屬於搶辦,這n個人能夠同一時候打開,當一 個人發送後,其它人都不能在發送了。

通俗的說,也就是誰搶到了這件工作,就是誰處理的。

搶辦模式是一個默認的處理模式。

協作模式:

A發送到B ,B節點上有n個人能夠處理。

這個n個人都能夠去處理,都能夠去發送,有最後一個處理人發送到下一個節點上去,這n個人的處理不分順序。這種模式我們叫做協作模式。

協作模式通經常使用在具有審核組件的表單中。每一個人都能夠填寫自己的意見。發表自己的看法,在審核組件裏審核每一個人在一個節點上僅僅能寫入一條數據。也就是說僅僅能表達一次意見。

也經經常使用在傳閱的情況下,必須這些人都讀取了,知道了才幹向下運動。

它與抄送不同的地方是。抄送能夠不看,就能夠向下執行,可是他必須處理才幹向下執行。

通常的協作模式,就是多人都要點擊一下發送功能button,來確認自己處理了,確認自己允許了或者認可了。

隊列模式:

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 是否啟用任務池? 此字段用來控制該流程是否啟用任務池。

  任務池的SDK接口

  1。獲得共享任務: DB_TaskPool

  2,獲得共享任務中我的待辦:DB_TaskPoolOfMy

  3,從共享任務中取回:Node_TaskPoolTakebackOne

4,把取回的共享任務放入任務池: Node_TaskPoolPutOne

綜述:一個好的工作流引擎。一定是與業務接地氣的引擎,一個好用的流程引擎應用在MIS系統上,一定是與表單引擎結合的引擎。流程在運動過程中能夠操縱表單數據的處理。


您假設對CCBPM感興趣。

請關註微信獲取源代碼:

技術分享

ccbpm工作流引擎是怎樣支持多種流程模式的