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