子流程

子流程

子流程含義是在某個流程流轉過程中可以創建一個新的流程並執行,結束后可以在此返回父流程。協眾OA的子流程可以實現多個不同工作(多個表單)的串聯,將多件工作融合到一個工作中,例如員工出差這個流程,出差設計到出差申請、費用審批、費用報銷等等,但是比如費用審批、費用報銷等等對於財務或者說便於統計的角度考慮,希望是一個獨立的流程,這時候可以通過子流程來實現關聯。也就是在出差流程中的某一個步驟設置為子流程——費用審批,當流程執行到此步驟,會自動創建子流程即費用審批的工作,執行完畢后再返回出差申請的流程,同時可以使用流程插件完成表單數據的關聯。

概述


協眾OA子流程
協眾OA子流程

解讀子流程


當業務流程處理環節多,繁雜時,可以用子流程來分解。就像我們程序員最熟悉的子函數一樣,把處理同一事項的歸納成一個子函數,子函數可以在多個場景多次調用,也可以在同一場景中反覆調用。
用子流程來分解大流程,作用和子函數類似。將功能處理過程比較獨立或者單一的歸納成一個子流程。子流程本身是一個完整的處理過程,可以單獨啟動執行,也可以嵌入到其它流程中使用。
單獨啟動執行:這種就是常見的業務流程的使用。
嵌入其它流程中被調用:和主流程就會有千絲萬縷的關聯了。
分析一下,主要體現在,傳入傳回參數,同步非同步的運行。和子函數不同的還有,主流程實例和子流程實例之間的對應關係。
傳入參數:主流程送給子流程的參數,和子函數的調用參數一樣理解。
傳回參數:子流程運行結束,返回給主流程的,和子函數的返回值一樣理解。
同步:主流程運行到子流程,啟動了子流程了,需要等待子流程運行結束,返回主流程,主流程再接下去執行。和子函數的同步調用一樣。
非同步:主流程運行到子流程節點,啟動了子流程了,不需要等待子流程運行結束,立即就返回了主流程了,接著主流程往下執行。和非同步調用子函數類似。
主流程實例和子流程實例,一對多的關係:主流程實例運行到子流程時,啟動一個子流程實例。當主流程因為循環,返回,自由跳轉等等返回到子流程節點之前,再次運行時,會再次啟動子流程實例,這時候是又生成了一個新的子流程實例了。主流程實例只有一個,形成了主子流程實例,一對多的關聯關係。
主流程實例和子流程實例,一對一的關聯:主流程實例運行到子流程實例時候,啟動一個子流程實例。當主流程由於多種原因返回到子流程節點之前,需要再次啟動子流程實例時,
當子流程實例未運行結束時候,則不產生新的子流程實例,繼續原來的子流程實例的運行。
當子流程實例已經運行結束了,則將子流程實例再次激活,並回退到開始節點,重新運行。
總之,使得主子流程實例 始終是 一一對應的關係。即當已經產生了一個子流程實例后,就不會再產生新的子流程實例。
子流程的運用場景:
1、將功能單一的業務流程嵌入到大的業務流程中。可以在多個業務流程中被調用,也可以同一個業務流程中多次被調用。
如整個採購系統中的 退貨流程,退貨流程本身是規範的,沒有歧義的,按照退貨辦理順序流轉。可以主動發起退貨流程,也可以嵌入到採購流程中,庫房管理流程中,銷售流程中。。。。。
2、分解大的業務流程:
通常很多企業上工作流系統,是因為業務流程繁雜,環節多,步驟又多變,便於流程化管理和後期的維護,才會選擇工作流管理系統。當一個頁面都顯示不下一個業務處理過程的節點時,很自然的就會考慮用子流程來分解大的業務流程,使得界面更加清晰流暢,而事實上,那麼大的業務流程肯定是可以分類的,用子流程來分解是最好的方法。
但是,用子流程只是為了分解大的業務流程的話,主子流程實例就必須是一對一的關聯。如主流程實例運行到子流程后,啟動了子流程,返回主流程,主流程因為各種原因,返回了,再次運行到子流程時,應該是重做子流程的業務,而不是再次啟動一個新的子流程。因此主子流程的銜接需要這樣一個開關來決定是一對一的還是一對多的關聯。