1. 程式人生 > 實用技巧 >CCBPM中流程回滾的介紹

CCBPM中流程回滾的介紹

>>> hot3.png

需求背景:

流程結束後,操作員發現此流程有一個錯誤,需要退回重新處理。對於ccBPM來說整體流程已經完成並且流程執行控制表已經被刪除了該流程的資料。

處理方案:

在流程屬性裡的相關功能裡增加一個相關功能,接受兩個引數一個workid,一個回滾原因. 此功能只有admin使用者才能操作。

其它說明:

1, 如果您是為了測試估計不能測試到效果,因為ccBPM在判斷最後一個節點是通過時間來排序的,測試的資料經常時間點是一致的,精確到分鐘。

2, 流程回滾後ccBPM會把日誌寫入wf_track表裡。

wps42B1.tmp

流程回滾的應用背景:

場景1:一件流程在完成後,發現這個流程有問題,需要退回到流程指定的節點上與當時該節點的處理人身上,讓他重做。

場景2:一個主流程啟動了n個子流程,他在監控子流程時發現子流程問題,需要重新去做。

這兩種場景下,都是在流程完全處理完後,並且流程引擎已經把該流程歸檔後要求重新回滾到指定的節點與該節點的處理人身上去,讓其在重新去處理。

回滾流程對應的API:

/// <summary>

/// 恢復已完成的流程資料到指定的節點,如果節點為0就恢復到最後一個完成的節點上去.

/// 恢復失敗丟擲異常

/// </summary>

/// <param name="flowNo">要恢復的流程編號</param>

/// <param name="workid">要恢復的workid</param>

/// <param name="backToNodeID">恢復到的節點編號,如果是0,標識回覆到流程最後一個節點上去.</param>

/// <param name="note">恢復的原因,此原因會記錄到日誌</param>

public static string Flow_DoRebackWorkFlow(string flowNo, Int64 workid, int backToNodeID, string note)

{

BP.WF.Ext.FlowSheet fs = new Ext.FlowSheet(flowNo);

return fs.DoRebackFlowData(workid, backToNodeID, note);

}

回滾流程的設計需求:

1, 回滾人接受到的資訊是退回狀態,而非流程的執行狀態。

2, 回滾後流程資料表的狀態由完成恢復到退回,最後結束節點恢復到回滾的點。

3, 恢復流程引擎登錄檔資料,當前表狀態標識為退回。

4, 恢復流程工作人員表,把所有參與該流程上的工作人員都恢復裡面去。

5, 寫入一條退回資訊,讓接受人員能夠看到退回的原因。

6, 寫入到流程日誌,保證它的完整可讀。

轉載於:https://my.oschina.net/ccflow/blog/539575