JBPM流程部署之流程例項遷移

2021-05-27 21:30:09 字數 2085 閱讀 8149

jbpm流程部署之流程例項遷移

前面我們已經學習了jbpm的流程版本公升級,流程版本公升級給我們帶來了乙個新的問題,那就是流程例項遷移;那麼什麼是流程例項的遷移呢?流程例項的遷移就是在流程發布的時候進行了版本公升級,這個時候如果我們讓已經執行的同乙個流程的例項,按照新版本的流程定義來流轉。流程例項的遷移是一件比較複雜的事情,今天我們就簡單的來了解一下jbpm中流程例項遷移的使用,後續我們就簡單的介紹一下相應的設計思路和擴充套件。

預設情況下,jbpm為我們提供了兩種啟動流程例項的方式    

processinstance processinstance = executionservice.startprocessinstancebykey("asyncfork");
這種方式會根據流程的pdkey來查詢該流程的最新版本進行啟動,這樣可以保證在我們在任何時候啟動的都是當前流程的最新版本

processinstance processinstance = executionservice.startprocessinstancebyid("asyncfork-1");
這種方式是根據流程的pdid來啟動給定版本的流程,這樣可以我們可以啟動該流程的任何版本

如果您對流程定義的屬性pdkey和pdid不是很清楚,請閱讀我先前的文章jbpm流程部署之流程版本公升級

雖然jbpm為我們提供了啟動流程例項的兩個方法,是我們可以方便的啟動最新版本、任意版本的流程,但是預設情況下,已經啟動的流程例項在整個生命週期內,都會一直使用同乙個版本的流程定義,即使有新的版本發布,也不會使用新的版本。但是現實中,有很多的時候我們需要定製流程例項是否遷移。今天我們就結合下邊的這個流程定義來看一下jbpm為我們提供的流程例項遷移的工具怎麼用!      

公升級先前的版本的所有流程例項

在以下兩種情況下,我們可以公升級先前所有版本的流程例項而不會引發異常

1. 保證流程定義整體結構不變和所有節點的名稱不變;

2. 保證先前版本的流程定義不變,只是新增了節點;

這個時候我們的流程定義xml如下     

結束先前版本的流程例項的執行

無論流程定義怎麼變化,我們都可以結束先前版本的流程例項執行

...

指定處於乙個區間的版本的流程例項進行遷移或者結束

只遷移版本為2和3的流程定義的流程例項

只遷結束版本為2和3的流程定義的流程例項 

只遷移最後兩個版本的流程例項只遷移最後兩個版本的流程例項   只遷移最後兩個版本的流程例項  

...

遷移所有版本的流程例項   

...

...

節點對映遷移

如果流程有的節點被刪除或者被替換,先前版本的流程的例項如果正好執行到刪除的節點,那麼我們就不能直接將其遷移,如果我們不能遷移,那麼我們需要提供節點對映

自定義遷移策略

如果jbpm提供的流程例項遷移策略不能滿足我們的業務需求,那麼我們可以實現jbpm提供的介面org.jbpm.pvm.internal.migration.migrationhandler,在這裡實現我們自己的遷移策略

...

JBPM流程部署之流程例項遷移

jbpm流程部署之流程例項遷移 前面我們已經學習了jbpm的流程版本公升級,流程版本公升級給我們帶來了乙個新的問題,那就是流程例項遷移 那麼什麼是流程例項的遷移呢?流程例項的遷移就是在流程發布的時候進行了版本公升級,這個時候如果我們讓已經執行的同乙個流程的例項,按照新版本的流程定義來流轉。流程例項的...

JBPM流程部署之流程例項遷移解析與擴充套件

jbpm流程部署之流程例項遷移解析與擴充套件 前面我們已經詳細的介紹了jbpm的流程例項遷移的配置和使用,相信大家已經對jbpm提供的流程例項遷移有所了解 今天我們來深入的分析一下jbpm提供給我們的流程例項遷移策略和相關流程例項遷移物件,最後我們會對分析中提到的不足,進行擴充套件優化!下面我們先來...

JBPM流程部署之流程版本公升級

jbpm流程部署之流程版本公升級 流程定義是根據流程定義描述語言 jpdl 對現實業務需求的抽象,是對現實業務需求的高度抽象化 現實中對於同乙個流程定義,很少會一成不變,很多時候隨著時間的流逝,我們的業務流程有少許的變化,那麼我們就需要對流程進行一些改變,這個時候就會涉及到流程的版本公升級的問題。今...