flowable修改运行中的实例流程

flowable修改运行中的实例流程

问题

今天项目中发现有流程流转时找不到serviceTask里指定的classname,经排查发现是前几天更改了bpmn,将里面的delegate类路径全给改了,所以之前运行中的流程都找不到包了,导致报错:
在这里插入图片描述

解决思路

摆在眼前两条路,第一条是把运行中的流程全都给改了,第二条是在原路径中加上delegate类。第二条路看起来偷懒、简单,但是仔细一看,我的delegate都是注入的bean,这样会导致有重复name的bean。于是采用第一种方法,解决。下面上测试代码。

代码

 @Test
    public void illegalProcessMigrateTest() {
        List<Illegal> illegalList = illegalMapper.selectNotComplete(null, "2020-11-18");
        Deployment deploy = repositoryService.createDeployment().
                addClasspathResource("processes/IllegalProcess.bpmn20.xml").deploy();

        int success = 0, fail = 0;

        ProcessDefinition def = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult();

        for (Illegal illegal : illegalList) {
            String processId = illegal.getProcessId();
            try {
                ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult();
                ProcessInstanceMigrationValidationResult validationResult = runtimeService.createProcessInstanceMigrationBuilder()
                        .migrateToProcessDefinition(def.getId())
                        .validateMigration(pi.getProcessInstanceId());

                runtimeService.createProcessInstanceMigrationBuilder()
                        .migrateToProcessDefinition(def.getId())
                        .migrate(pi.getProcessInstanceId());
                boolean isMigrationValid = validationResult.isMigrationValid();
                if (isMigrationValid) {
                    success++;
                } else {
                    fail++;
                }
            } catch (Exception e) {
                e.printStackTrace();
                fail++;
            }

        }
        log.info("违章:更新老流程实例流程,成功:{}个,失败:{}个", success, fail);
    }

总结

1.servicetask的delegate类里尽量还是放一些基础功能,不要轻易修改(也不要轻易移动~~~),一些脚本可以通过script task来执行。
2.碰到问题,百度上找不到,直接上官网找。

参考

https://flowable.com/open-source/docs/bpmn/ch09-ProcessInstanceMigration/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 目前的最新版本的Flowable 6.x系列和7.x系列都支持JDK 17。如果你想在JDK 17上运行Flowable,你可以按照以下步骤进行: 1. 在POM文件添加以下依赖: ``` <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifactId> <version>${flowable-version}</version> </dependency> ``` 2. 在Spring Boot应用程序的主类上添加以下注释:`@EnableProcessApplication` 3. 确保你的JDK版本为JDK 17。 4. 运行你的Spring Boot应用程序。 注意:如果你使用的是Flowable 6.x系列,你需要使用6.6.0及以上版本;如果你使用的是Flowable 7.x系列,你需要使用7.0.0及以上版本。同时,你需要使用支持JDK 17的Spring Boot版本。 希望这可以帮助到你! ### 回答2: 在JDK 17下运行Flowable是可以的。Flowable是Reactive Streams的一个实现,它提供了一种用于处理异步数据流(流)的编程模型。通过使用Flowable,我们可以更好地处理大量数据或需要异步处理的任务。 要在JDK 17运行Flowable,首先需要确保Flowable API及其依赖项正常安装在项目。可以通过使用构建工具(如Maven或Gradle)将Flowable库添加为项目的依赖项来实现。 在代码,我们可以创建一个Flowable对象并定义操作符(operators)来处理流。例如,我们可以使用map操作符对流的元素进行转换,使用filter操作符筛选出特定的元素等等。然后,我们可以通过使用订阅(subscribe)方法来订阅Flowable并开始处理数据流。 在运行时,JDK 17提供了对Flowable的支持,它能够识别Flowable的异步特性,并根据需要进行线程调度和处理。这意味着我们可以使用JDK 17的优化功能,如垃圾收集器和并行处理能力,来更高效地处理Flowable流。 总结而言,JDK 17兼容Flowable并提供了强大的功能,可以帮助我们处理异步数据流。尽管Flowable是Reactive Streams的一部分,但它仍然可以在JDK 17使用,并且可以充分利用JDK 17的优化能力。 ### 回答3: JDK 17 是Java Development Kit(Java开发工具包)的一个版本,而Flowable是一个开源的用于处理业务流程的框架。 Flowable 是一个轻量级的、可扩展的企业级流程引擎,它使用Java语言编写,通过提供一系列的API和工具,可以帮助开发人员建立和管理复杂的业务流程Flowable提供了流程的定义、执行和监控能力,同时还提供了包括任务管理、用户认证等功能。 要在JDK 17上运行Flowable,需要遵循以下步骤: 1. 确保你已经安装了JDK 17并设置了正确的环境变量。 2. 下载Flowable的最新版本,可以从官方网站或者Maven仓库获取。 3. 在项目添加Flowable的依赖,可以通过Maven或者Gradle进行配置。 4. 创建一个Java类,在其编写使用Flowable的代码逻辑。 5. 在代码,引用Flowable的API进行流程的定义和执行,例如创建一个流程实例启动流程、查询任务等。 6. 运行代码,可以通过命令行、IDE或者其他工具执行。 需要注意的是,JDK 17使用了一些新的语言特性和功能,可能与旧版本的JDK有些不兼容。因此,在将Flowable迁移到JDK 17上之前,需要对代码进行一些修改和调整,以适应新版本的Java。此外,也需要确保Flowable的版本兼容JDK 17。 总结来说,要在JDK 17上运行Flowable,需要先安装JDK 17,然后配置Flowable的依赖并编写相应的代码。在运行时,需要注意版本兼容性和语言特性的使用,以确保顺利运行Flowable框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值