千家信息网

flowable工作流引擎迁移API实例分析

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,小编今天带大家了解flowable工作流引擎迁移API实例分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小
千家信息网最后更新 2025年12月03日flowable工作流引擎迁移API实例分析

小编今天带大家了解flowable工作流引擎迁移API实例分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习"flowable工作流引擎迁移API实例分析"的知识吧。

流程迁移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);    }

流程迁移Flowable VS Camunda工作流

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

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

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

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

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

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

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

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

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

感谢大家的阅读,以上就是"flowable工作流引擎迁移API实例分析"的全部内容了,学会的朋友赶紧操作起来吧。相信小编一定会给大家带来更优质的文章。谢谢大家对网站的支持!

实例 流程 版本 支持 功能 节点 引擎 工作 数据 工作流 逻辑 实例分析 分析 历史 历史数据 朋友 过程 强大 接下来 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 应用技术和网络技术什么区别 数据库系统包含操作系统吗 浙江ai人工智能服务器 软件开发采购赠送 微程互联网科技有限公司广州 r320服务器指示灯 宁夏银川软件开发公司贵吗 网络安全红蓝对抗的意义 wow服务器ip 途家网网络技术有限公司招聘 网络技术选型和运维 厦门网约车软件开发 广州贝诺网络技术公司 云南超频服务器欢迎选购 杭州游卡网络技术有限公司在哪 软件开发运行慢 软件开发税收优惠政策是什么 崇明区品牌软件开发创新服务 数据库技术在会计中的应用 数据库如何约束输入的数字 厦门勇仕网络技术有限公司游戏 创建数据库案例 优合信网络技术有限公司 可以一起编辑的数据库 数据库 r n 数据库链接地址怎么填 江苏网络服务器机柜厂家云空间 渠道服的服务器在哪里 邯郸市顺通软件开发有限公司 数据库sql中拼接字符串
0