java系统迁移工作列表,flowable工作流引擎-流程实例迁移

本文介绍Flowable 6.5版本提供的流程实例迁移API,包括创建迁移计划、验证迁移逻辑及执行迁移等功能。同时对比了Flowable与Camunda在流程迁移方面的差异。

摘要:flowable6.5版本提供了流程实例的迁移API,开发人员可以将指定版本下的流程实例迁移到最新的版本中。本文重点讲解Flowable的这些APi使用,以及对比Camunda工作流引擎流程实例迁移功能。

流程迁移API说明

流程迁移API服务类可以通过流程引擎类进行获取,如下所示:

processMigrationService = processEngine.getProcessMigrationService();

注意:只有Flowable6.5以及以上的版本才可以使用该功能。

通过processMigrationService可以使用如下的API:

ProcessInstanceMigrationBuilder createProcessInstanceMigrationBuilder();

ProcessInstanceMigrationBuilder createProcessInstanceMigrationBuilderFromProcessInstanceMigrationDocument(ProcessInstanceMigrationDocument document);

ProcessInstanceMigrationValidationResult validateMigrationForProcessInstance(String processInstanceId, ProcessInstanceMigrationDocument processInstanceMigrationDocument);

ProcessInstanceMigrationValidationResult validateMigrationForProcessInstancesOfProcessDefinition(String processDefinitionId, ProcessInstanceMigrationDocument processInstanceMigrationDocument);

ProcessInstanceMigrationValidationResult validateMigrationForProcessInstancesOfProcessDefinition(String processDefinitionKey, int processDefinitionVersion, String processDefinitionTenantId, ProcessInstanceMigrationDocument processInstanceMigrationDocument);

void migrateProcessInstance(String processInstanceId, ProcessInstanceMigrationDocument processInstanceMigrationDocument);

void migrateProcessInstancesOfProcessDefinition(String processDefinitionId, ProcessInstanceMigrationDocument processInstanceMigrationDocument);

void migrateProcessInstancesOfProcessDefinition(String processDefinitionKey, int processDefinitionVersion, String processDefinitionTenantId, ProcessInstanceMigrationDocument processInstanceMigrationDocument);

Batch batchMigrateProcessInstancesOfProcessDefinition(String processDefinitionId, ProcessInstanceMigrationDocument processInstanceMigrationDocument);

Batch batchMigrateProcessInstancesOfProcessDefinition(String processDefinitionKey, int processDefinitionVersion, String processDefinitionTenantId, ProcessInstanceMigrationDocument processInstanceMigrationDocument);

ProcessInstanceBatchMigrationResult getResultsOfBatchProcessInstanceMigration(String migrationBatchId);

上述的一系列API可以归纳为如下几种:

创建迁移计划(ProcessInstanceMigrationBuilder),该实例对象中可以设置一系列的迁移逻辑,比如将那个版本下面的实例迁移到特定版本的模板中

validateXX验证是否可以执行迁移逻辑。

migrateProcessInstance开头的方法,同步执行迁移计划,调用该API之后,引擎立即开始执行迁移工作。

batchMigrateXX开头的,批处理迁移实例。当需要迁移非常多实例的时候,可以使用批处理进行操作。该操作需要开启定时器,否则不生效。

getResultsOfBatchProcessInstanceMigration:获取批处理的执行结果。

流程迁移API使用

接下来,以两个版本的流程为例对流程实例迁移功能展开说明:

版本1的流程图:

2

版本2的流程:

版本2的流程比版本1的流程多了一个任务节点,其他的元素均一样。

演示视频可以参考视频:

部署版本1流程

操作如下:

/**

* 1

*/

@Test

public void deploy(){

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

System.out.println(processEngine);

RepositoryService repositoryService = processEngine.getRepositoryService();

//taskWithEventProcess.bpmn20.xml

repositoryService

.createDeployment()

.addClasspathResource("processMigrationService/2.1.bpmn20.xml")

.deploy();

runtimeService.startProcessInstanceByKey("a2");

}

上述代码中部署流程之后,立即启动了新的实例。目前实例位于1节点。

实例迁移

接下来开始部署2流程,并实现将1节点迁移到版本为2的2节点中。代码如下:

@Test

public void batchMigrateProcessInstancesOfProcessDefinition2(){

String processDefinitionKey="a2";

int processDefinitionVersion=1;

String processDefinitionTenantId="";

ProcessInstanceMigrationDocumentImpl

processInstanceMigrationDocument =new ProcessInstanceMigrationDocumentImpl();

processInstanceMigrationDocument.setMigrateToProcessDefinition(processDefinitionKey,2);

List activityMigrationMappings = new ArrayList();

ActivityMigrationMapping.OneToOneMapping mappingFor = ActivityMigrationMapping.createMappingFor("sid-A8596132-C632-4DB0-81D6-5603D6516F3C", "sid-84BBB613-FB20-430B-B4C1-E60F4DA02CFB");

activityMigrationMappings.add(mappingFor);

processInstanceMigrationDocument.setActivityMigrationMappings(activityMigrationMappings);

processMigrationService

.migrateProcessInstance("12505",processInstanceMigrationDocument);

}

上述API的讲解参考视频:

流程迁移Flowable VS Camunda工作流

Flowable 流程实例迁移功能相比与Camunda而言,功能更加的薄弱和单一。可能有些功能跟商业版有关系,因此开源出来的功能比较单一。没有Camunda那么强大。

Flowable 流程实例迁移功能对于查询做的还不够完善,没有大量的查询逻辑,不方便用户根据特定场景进行操作。

对于批处理模块,没有Camunda强大,因次Flowable开源版本仅支持实例的批量迁移,而不支持其他的批处理操作。

Flowable开源版本批量迁移实例之后,原有的历史数据会被删除掉,Camunda不会删除历史数据。因此在Flowable中使用该功能的时候一定要小心,防止历史数据被清除掉。整个完整实例树痕迹不会保留。

Flowable开源版本可以进行任意数据的迁移,Camunda会对迁移的源节点和目标节点进行对比,如果不在一个区间就不让迁移。Flowable控制的不严格。

Camunda支持在迁移的过程中去设置异步或者同步执行,Flowable不支持。

Camunda支持在迁移的过程中去设置是否删除原有实例数据信息,Flowable不支持。

Camunda支持在迁移的过程中去设置是否可以触发节点监听器逻辑,Flowable不支持。

均支持开发人员设置批量处理任务的阈值和速率。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值