1. 程式人生 > 實用技巧 >馳騁工作流引擎設計系列13 退回設計

馳騁工作流引擎設計系列13 退回設計

>>> hot3.png

  1. 關鍵字

馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow

  1. 退回設計
  2. 退回規則設計

流程引擎的退回與傳送,分別是前進與後退,它是流程引擎的基礎功能操作,流程的退回根據不同的應用場景,也是需要不同的方式來控制,我們把這些方式叫做規則處理。

退回規則設定

退回規則在節點按鈕標籤欄目中的退回標籤設定,如下圖:

e3e7c65d10f5080bde12aeec45a9d0a8e60.jpg

不能退回:當前節點不能執行退回功能,當前節點的操作人員就不能看到退回按鈕。

只能退回上一個節點:只能退回上一個節點,從那裡傳送來的,就退回到那裡去。

可以退回以前任意節點:不限制退回的節點,但是退回的節點必須是當前節點以前的節點。

可退回指定的節點:

退回指定的節點,此功能需要在流程屬性中的可退回的節點中設定它。

05611ba99fbb73f613f8ab7a2732a7c6c74.jpg

總結:

1,根據實際業務需求,設定不同的退回方式。

2, 配合退回前、退回後的事件完成業務的可逆的操作。

  1. 退回的訊息處理

1.執行退回後,系統都會向執行人傳送訊息,傳送物件僅限於上一節點的執行人員,這樣上被退回的點上的工作人員就有一個待辦工作,如果您集成了ccim它就會自動發一個訊息提醒。

2.退回的動作寫入WF_Track中,流程軌跡中就能很好的反應出來。

3.被退回的人在進入當前工作時,第一次會有訊息提示。

Ccbpm如何處理流程退回過程的資料的完整性?

流程在退回時,有一段流程資料就是從當前點到退回點的所做的工作,這部分節點的資料如何處理成為了我們要探討與取捨的難點。

以請假流程為例,申請人發起,部門經理審批,總經理審批,人力資源歸檔。如果總經理退回到第一個點,可以解釋為,部門經理做的無效的工作,此部分工作需要刪除,在3.0以前的版本,ccbpm都是這樣的處理的,這樣的解釋也是使用者所接受的。

但是在其它的流程就不能這樣解釋了,因為他需要保留歷史痕跡,並且在退回後有如下可能要發生。

  1. 退回到指定的點後,發起人刪除流程。
  2. 退回到退回節點後,發起人修改表單後傳送,按原節點發回來。
  3. 退回到退回節點後,發起人修改表單後傳送,經歷與其它的路線步驟到當前點。
  4. 退回到退回節點後,發起人修改表單後傳送,該走其它的路線不經當前點。

基於如上可能性的發生ccbpm,做了如下處理。

  1. 退回階段流程資料寫入txt 檔案裡,放在D:\ccflow\CCFlow\DataUser\ReturnLog
  2. 增加了流程報告與節點的焦點欄位功能,系統把每一步驟的操作都記到日誌表裡了,通過焦點欄位的配合,可以讓操作員方便明晰的看到軌跡。

Ccbpm6.0通過如上兩個方法解決退回資料的完整性問題。

  1. 退回並原路返回

與節點屬性中的[是否可以退回並原路返回?] 配合使用

應用場景:一個流程走過了ABCDEFG幾個節點,在G節點上發現要退回給B節點上去,還期望B節點的人員完成後直接傳送給G節點上來,這種應用場景就是是否可以在退回後原路返回。如果是直接退回並不原路返回,那麼ccbpm將會刪除退回點與退回到點中間的資料,否則就不刪除它。

退回資訊填寫欄位

使用者經常會在審批意見的欄位中填寫意見然後點退回按鈕,審批意見就是該操作員的稽核意見,這個時候ccbpm需要把稽核意見帶入退回視窗,這個欄位就是退回資訊填寫欄位。

2a4c615b342651bc4c1f125d9afe21dc721.jpg

在demo的第二個節點,我們看看退回的效果,我們先看看測試效果。

59338d2b1ccc4a5885531d38973e243720d.jpg

點退回,ccbpm就會把稽核意見放到退回的窗口裡面。

2f30f5c0782c9e4f91a7d864c749c9f710c.jpg

  1. 介面定義

退回是比較常用的方法之一,退回方法的api是BP.WF.Dev2Interface.Node_ReturnWork。

仔細的看看引數,就知道如何呼叫該退回方法了。

fc8fa6843ef1e3502d62466fa9ea962c51f.jpg

我們不建議使用者直接呼叫api,而建議呼叫ccbpm的這個工作部件,這個工作部件呼叫很簡單。詳細請參考:BP.WF.Dev2Interface.UI_Window_Return

a1caa6a39fe6d8ba5ea69b23f2173018c1b.jpg

由於在BP.WF.Dev2Interface這個類庫裡,已經很清晰的描述了各個api的作用,由於同步與變更的關係,這裡不再贅述。

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