您好,登錄后才能下訂單哦!
去年換了工作到現在這家公司,當時我進入的部門工作效率低下,為了短期內
提高效率,在倉促之間封裝了一套姑且稱之為工作流驅動吧,極大的提高了工
作效率,但畢竟在很短時間內完成,有些問題妥協了一些不太完善的解決辦法
,今年優先的計劃就是調整工作流,如果有必要將重新設計。
現在要說的是一個非常關鍵的問題的解決方案調整:當單據將要流轉到下一個
節點時,如何根據單據中業務數據選取下一個節點。
如何選取下一個節點的前提是要有判斷條件,可以在流程配置時設置條件,根
據條件的判斷結果來決定流轉到的相應節點,判斷條件的依據則是來至于業務
單據的數據,而這里的問題就是如何將業務數據傳給工作流。
一:直接將單據中的數據提交給工作流,這個辦法被首先排除掉了,因為這會
造成工作流的驅動依賴于業務數據的提交,而我們的業務是多種多樣,我來之
前的各種軟件系統沒有任何整體規劃,當然現在也沒有條件去重新規劃那些系
統,如果想適應所有的系統,工作流和業務之間的耦合必須完全解開,業務和
工作流之間就不能有直接的聯系。
二:我采取的方式:條件中包含參數保存的位置并且保存在數據庫中,由存儲
過程去根據條件到指定表中獲取所需業務數據,這種方式能滿足現下的需求,
但確定也很明顯:1,不利于維護,給流程模板的配置增加了很大復雜度,因為
指定節點條件不止包含判斷的邏輯還要包含參數在數據庫中的保存位置;2,不
利于擴展,比如一旦業務系統規模增大,增加了緩存,存儲過程將可能無法獲
取的最新的業務數據,從而判斷錯誤。
三,我目前準備采取的方法:在業務與工作流之間增加一個值對象來解耦,業
務只負責業務數據變更時更新值對象中對應的值,工作流所需的參數都從該值
對象獲取,值對象的生命周期為流程啟動到流程結束,值對象所含內容可以由
配置來決定結構,內部只包含流程模板中條件所需的判斷參數,這樣業務不用
關心工作流驅動需要什么,工作流不直接依賴于業務單據提供的信息,流程模
板也不必關心判斷條件所需的參數從何而來,而值對象只包含判斷所需信息,
雖然一直在內存中,但一個對象不會浪費多大內存。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。