flowable工作流引擎迁移API实例分析-成都快上网建站

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实例分析”的全部内容了,学会的朋友赶紧操作起来吧。相信创新互联小编一定会给大家带来更优质的文章。谢谢大家对创新互联网站的支持!


文章题目:flowable工作流引擎迁移API实例分析
转载源于:http://kswjz.com/article/iejogo.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流