用子流程來分解大流程續


年前寫過一篇,用子流程來分解大流程。當業務流程處理環節多,繁雜時,可以用子流程來分解。就像我們程序員最熟悉的子函數一樣,把處理同一事項的歸納成一個子函數,子函數可以在多個場景多次調用,也可以在同一場景中反復調用。

用子流程來分解大流程,作用和子函數類似。將功能處理過程比較獨立或者單一的歸納成一個子流程。子流程本身是一個完整的處理過程,可以單獨啟動執行,也可以嵌入到其它流程中使用。

單獨啟動執行:這種就是常見的業務流程的使用。

嵌入其它流程中被調用:和主流程就會有千絲萬縷的關聯了。
分析一下,主要體現在,傳入傳回參數,同步異步的運行。和子函數不同的還有,主流程實例和子流程實例之間的對應關系。

傳入參數:主流程送給子流程的參數,和子函數的調用參數一樣理解。
傳回參數:子流程運行結束,返回給主流程的,和子函數的返回值一樣理解。

同步:主流程運行到子流程,啟動了子流程了,需要等待子流程運行結束,返回主流程,主流程再接下去執行。和子函數的同步調用一樣。
異步:主流程運行到子流程節點,啟動了子流程了,不需要等待子流程運行結束,立即就返回了主流程了,接着主流程往下執行。 和異步調用子函數類似。

主流程實例和子流程實例,一對多的關系:主流程實例運行到子流程時,啟動一個子流程實例。當主流程因為循環,返回,自由跳轉等等返回到子流程節點之前,再次運行時,會再次啟動子流程實例,這時候是又生成了一個新的子流程實例了。 主流程實例只有一個,形成了主子流程實例,一對多的關聯關系。

主流程實例和子流程實例,一對一的關聯:主流程實例運行到子流程實例時候,啟動一個子流程實例。當主流程由於多種原因返回到子流程節點之前,需要再次啟動子流程實例時,
 當子流程實例未運行結束時候,則不產生新的子流程實例,繼續原來的子流程實例的運行。
 當子流程實例已經運行結束了,則將子流程實例再次激活,並回退到開始節點,重新運行。
 
總之,使得主子流程實例 始終是 一一對應的關系。即當已經產生了一個子流程實例后,就不會再產生新的子流程實例。


子流程的運用場景:
1、將功能單一的業務流程嵌入到大的業務流程中。可以在多個業務流程中被調用,也可以同一個業務流程中多次被調用。
 如整個采購系統中的 退貨流程,退貨流程本身是規范的,沒有歧義的,按照退貨辦理順序流轉。可以主動發起退貨流程,也可以嵌入到采購流程中,庫房管理流程中,銷售流程中。。。。。
 
2、分解大的業務流程:
 通常很多企業上工作流系統,是因為業務流程繁雜,環節多,步驟又多變,便於流程化管理和后期的維護,才會選擇工作流管理系統。當一個頁面都顯示不下一個業務處理過程的節點時,很自然的就會考慮用子流程來分解大的業務流程,使得界面更加清晰流暢,而事實上,那么大的業務流程肯定是可以分類的,用子流程來分解是最好的方法。
 
 但是,用子流程只是為了分解大的業務流程的話,主子流程實例就必須是一對一的關聯。如主流程實例運行到子流程后,啟動了子流程,返回主流程,主流程因為各種原因,返回了,再次運行到子流程時,應該是重做子流程的業務,而不是再次啟動一個新的子流程。因此主子流程的銜接需要這樣一個開關來決定是一一對應的還是一對多的關聯。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM