camunda是一個流程引擎架構,fork activiti得來,官網:https://camunda.org/
叢集部署的效果;
1、多個機器運行流程應用
2、流程有更新的時候,相容老流程(通常新流程是添加節點,和處理邏輯)
3、部署新應用的機器能執行新老job,部署老應用的機器不能執行,新應用的job
修改點:
1、流程定義的發布,原版中,需要發布的bpmn與資料庫中最新的流程定義比較,如果不同就發布
存在問的題:多機部署的情況下,新老應用來回重啟會導致資料庫中的流程定義來回傳布
顧修改點為:發布bpmn時和資料庫中的所有流程定義比較,如果找不到相同的再發布。
2、應用機拿資料庫job的方式,原版中,應用機器是拿所有版本的job,有一個配置jobExecutorDeploymentAware只拿自己本次部署的,但是會導致沒法處理比本次版本低的job
顧修改點為:在流程定義發布的時候,緩衝比發布版本低的所有deploymentId,從資料庫拿job的時候通過這些deploymentId來過濾
3、應用發布流程單修改,通過流程定義的某個版本號碼來啟動流程。此點需要基於1中緩衝,與bpmn相同的資料庫流程定義id
以上源碼修改之後
camunda就可以滿足叢集部署了
修改的檔案:
modified: pom.xml
modified: src/main/java/org/camunda/bpm/engine/ProcessEngineConfiguration.java
modified: src/main/java/org/camunda/bpm/engine/impl/cfg/ProcessEngineConfigurationImpl.java
modified: src/main/java/org/camunda/bpm/engine/impl/cmd/DeployCmd.java
modified: src/main/java/org/camunda/bpm/engine/impl/persistence/entity/JobManager.java
modified: src/main/resources/org/camunda/bpm/engine/impl/mapping/entity/Job.xml