扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
小编今天带大家了解flowable工作流引擎迁移API实例分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“flowable工作流引擎迁移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:获取批处理的执行结果。
接下来,以两个版本的流程为例对流程实例迁移功能展开说明:
版本1的流程图:
2
版本2的流程:
版本2的流程比版本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); ListactivityMigrationMappings = 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); }
Flowable 流程实例迁移功能相比与Camunda而言,功能更加的薄弱和单一。可能有些功能跟商业版有关系,因此开源出来的功能比较单一。没有Camunda那么强大。
Flowable 流程实例迁移功能对于查询做的还不够完善,没有大量的查询逻辑,不方便用户根据特定场景进行操作。
对于批处理模块,没有Camunda强大,因次Flowable开源版本仅支持实例的批量迁移,而不支持其他的批处理操作。
Flowable开源版本批量迁移实例之后,原有的历史数据会被删除掉,Camunda不会删除历史数据。因此在Flowable中使用该功能的时候一定要小心,防止历史数据被清除掉。整个完整实例树痕迹不会保留。
Flowable开源版本可以进行任意数据的迁移,Camunda会对迁移的源节点和目标节点进行对比,如果不在一个区间就不让迁移。Flowable控制的不严格。
Camunda支持在迁移的过程中去设置异步或者同步执行,Flowable不支持。
Camunda支持在迁移的过程中去设置是否删除原有实例数据信息,Flowable不支持。
Camunda支持在迁移的过程中去设置是否可以触发节点监听器逻辑,Flowable不支持。
均支持开发人员设置批量处理任务的阈值和速率。
感谢大家的阅读,以上就是“flowable工作流引擎迁移API实例分析”的全部内容了,学会的朋友赶紧操作起来吧。相信创新互联小编一定会给大家带来更优质的文章。谢谢大家对创新互联网站的支持!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流