目录

一、7.x版本新特性

运行环境

新版本改动

二、6.x ->7.x 的操作步骤

1. java必须是17以上的版本

2. spring-boot必须是3

3. flowable必须是7.0.0以上的版本

4. druid连接池必须是sbt3版本

5. mybatis和mybatis-plus版本也需要调整

6. flowable表需要更新(如果之前是6.x版本的话)

三、适配达梦数据库的操作步骤

1. 需要调整DmDatabase的getDatabaseMinorVersion(附加操作1)

2. 占位(附加操作2)


一、7.x版本新特性

介绍: Flowable 7.0 版本新特性:更高效、更灵活的业务流程管理_flowable最新版本-CSDN博客
github仓库: https://github.com/flowable/flowable-engine
官方开源文档: Getting Started · Flowable Open Source Documentation
🔔  主要变化

涉及删除异步历史记录支持。在版本 6 中,用户可以将历史数据存储为与运行时数据相同的事务的一部分(这是现在版本 7 中的唯一选项),也可以仅将运行时数据存储,然后将历史数据存储在异步作业中,以便在异步执行器最早方便时进行处理。后一种方法有一个很大的缺点,特别是在高并发的情况下,历史数据的存储顺序与运行时数据的顺序相同。因此,Flowable 7 将在同一事务中存储运行时和历史数据(如果历史级别设置为高于无级别)。

  排除 Flowable UI 应用程序。 虽然任务和管理应用程序通常被称为示例应用程序,但 Flowable Modeler 是对案例、流程和其他模型类型进行建模的重要工具。如您所知,Flowable UI 应用程序使用不受支持的 AngularJS 和 Oryx 版本,并且已经过时了很长时间。因此,Flowable 决定构建一种新的设计工具,具有全新的用户体验来设计 CMMN 和 BPMN 应用程序。新版本是使用 ( React 和 ReactFlow ) 实现的,并且已在 design 上免费提供。可以通过 链接 轻松注册一个帐户。

  完全关注 CMMN、BPMN 和 DMN 引擎,并从版本 7 中删除表单和内容引擎。 值得注意的是,在版本 6 中,表单和内容引擎的功能很少。

运行环境

  • Spring 6
  • Spring Boot 3
  • Java 17

新版本改动

  • 支持CMMN的批量迁移
  • 对案例重新激活的重复支持
  • 支持停止内务处理批处理
  • 支持 http 任务的 HTTP HEAD 和 OPTIONS
  • 删除重新定位的 Spring Boot Starters
  • flowable-spring-boot-starter-basic - 应改用 flowable-spring-boot-starter-process
  • flowable-spring-boot-starter-rest-api - 应改用 flowable-spring-boot-starter-process-rest
  • 添加包含所有 Flowable 工件的 flowable-bom
  • 支持动态 Kafka 消息密钥
  • 将 TaskCompletionBuilder 添加到 CmmnTaskService
  • 添加对处理错误开始和边界事件的自定义输入参数以及在错误结束事件中传递其他数据的支持
  • 添加在变量中存储人工和用户任务完成器的功能
  • 支持在邮件任务中收集字符串或json数组作为邮件收件人
  • 升级到 Spring Boot 3.1
  • 升级到 Camel 4
  • 升级到 CXF 4
  • 提供通过 FlowableMailClient 发送电子邮件的抽象
  • 使用 Jakarta Mail 而不是 Javax Mail,并将 Apache Commons Email 替换为 Eclipse Angus Mail
  • 删除基于消息的执行程序
  • 删除一些 Flowable 已弃用的代码
    • CmmnRepositoryService#getDecisionTablesForCaseDefinition 改用CmmnRepositoryService#getDecisionsForCaseDefinition
    • RepositoryService#getDecisionTablesForProcessDefinition 改用 RepositoryService#getDecisionsForProcessDefinition
    • HistoricCaseInstanceQuery#limitCaseVariables 没有替代品,这是一个空操作
    • CaseInstanceQuery#limitCaseInstanceVariables - 没有替代品,这是一个空操作
    • HistoricProcessInstanceQuery#limitProcessInstanceVariables - 没有替代品,这是一个noop
    • ProcessInstanceQuery#limitProcessInstanceVariables - 没有替代品,这是一个noop
    • TaskInfoQuery#limitTaskVariables - 没有替代品,这是一个noop
    • 从 CmmnEngineConfiguration 和 ProcessEngineConfigurationImpl 中删除了查询限制配置
    • 删除了 HistoryManager#recordActivityEnd - 没有替换,Flowable 从未调用该方法
    • 删除了 org.flowable.engine.FlowableTaskAlreadyClaimedException - 改用 org.flowable.common.engine.api.FlowableTaskAlreadyClaimedException
    • 删除了 org.flowable.engine.cfg MailServerInfo - 改用 org.flowable.common.engine.impl.cfg.MailServerInfo
    • 删除了 org.flowable.http.HttpRequest - 改用 org.flowable.http.common.api.HttpRequest
    • 删除了 org.flowable.http.HttpResponse - 改用 org.flowable.http.common.api.HttpResponse
    • 删除了 org.flowable.http.delegate.HttpRequestHandler - 改用 org.flowable.http.common.api.delegate.HttpRequest
    • 删除了 org.flowable.http.delegate.HttpResponseHandler - 改用 org.flowable.http.common.api.delegate.HttpResponse
    • 删除了 org.flowable.identitylink.service.IdentityLinkType - 改用 org.flowable.identitylink.api.IdentityLinkType
    • 删除了 ManagedAsyncJobExecutor - 在引擎配置中配置线程工厂
    • 删除了org.flowable.spring.SpringCallerRunsRejectedJobsHandler - 改用org.flowable.spring.job.service.SpringCallerRunsRejectedJobsHandler
    • 删除了 org.flowable.spring.SpringRejectedJobsHandler - 改用 org.flowable.spring.job.service.SpringRejectedJobsHandler
  • 删除异步历史记录支持。如果您使用的是异步历史记录,请确保在启动新版本之前没有异步历史记录作业

二、6.x ->7.x 的操作步骤

1. java必须是17以上的版本

<java.version>17</java.version>

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

2. spring-boot必须是3

<spring-boot.version>3.1.5</spring-boot.version>
<!-- SpringBoot的依赖配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

3. flowable必须是7.0.0以上的版本

<flowable.version>7.0.0</flowable.version>
            <dependency>
                <groupId>org.flowable</groupId>
                <artifactId>flowable-spring-boot-starter</artifactId>
                <version>${flowable.version}</version>
            </dependency>

4. druid连接池必须是sbt3版本

<druid.version>1.2.18</druid.version>
<!-- 阿里数据库连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-3-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>

5. mybatis和mybatis-plus版本也需要调整

        略

6. flowable表需要更新(如果之前是6.x版本的话)

update ACT_GE_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'common.schema.version';

update ACT_GE_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'entitylink.schema.version';

update ACT_GE_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'identitylink.schema.version';

update ACT_GE_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'job.schema.version';

update ACT_GE_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'batch.schema.version';

update ACT_GE_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'task.schema.version';

alter table ACT_RU_VARIABLE add META_INFO_ nvarchar(4000);

alter table ACT_HI_VARINST add META_INFO_ nvarchar(4000);

update ACT_GE_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'variable.schema.version';

update ACT_GE_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'schema.version';

update ACT_ID_PROPERTY set VALUE_ = '7.0.0.0' where NAME_ = 'schema.version';

三、适配达梦数据库的操作步骤

兼容达梦数据库: Flowable工作流兼容达梦数据库_flowable适配达梦-CSDN博客
🔔  注意事项:
  • 适配的是dm8,其他版本未测试
  • 自动加载数据源时,flowable无法识别DM数据库类型,采用覆盖源码,设置成Oracle的数据库类型,需要修改文件
  • 99%操作都和这篇博客里提到的一模一样,附加操作下面另说

最终效果如下:

1. 需要调整DmDatabase的getDatabaseMinorVersion(附加操作1)

当报这个错误时,就需要进行调整了

2. 占位(附加操作2)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐