springboot 集成 flowable

慈云数据 2024-05-01 技术支持 93 0

随着企业对于业务流程管理需求的增加,流程引擎在企业信息化建设中的作用越来越重要。Flowable是一个开源的轻量级业务流程管理(BPM)和工作流引擎,它支持BPMN 2.0标准。

Flowable的一些特点:

  • 安装集成:Flowable可以与Spring Boot等现代开发框架集成,提供了一套完整的工具和API来支持工作流的建表、设计和实施。
  • 流程设计:使用Flowable,开发者可以构建符合BPMN 2.0规范的流程定义,这些流程定义可以通过流程设计器进行可视化设计,也可以通过XML或JSON格式的文件直接编辑。
  • 流程实例管理:Flowable允许用户创建和管理流程实例,查询实例状态,以及在运行时对流程实例进行干预,如启动、暂停或终止实例。
  • 数据访问:Flowable提供了访问流程相关数据的API,允许应用程序在流程执行过程中存取相关数据。
  • 数据库支持:Flowable支持多种数据库,这使得它可以在不同的企业环境中灵活部署和使用。
  • 社区文档:作为一个开源项目,Flowable拥有一个活跃的社区,提供丰富的文档和案例,帮助开发者学习和解决问题。

    今天介绍的是springboot2.3版本集成flowable。

    集成flowable

    pom.xml中引入以下内容:

      
                org.flowable
                flowable-spring-boot-starter
                ${flowable.version}
            
            
                org.flowable
                flowable-spring-boot-starter-ui-modeler
                ${flowable.version}
            
            
                org.flowable
                flowable-spring-boot-starter-ui-admin
                ${flowable.version}
            
            
                org.flowable
                flowable-spring-boot-starter-ui-idm
                ${flowable.version}
            
            
                org.flowable
                flowable-spring-boot-starter-ui-task
                ${flowable.version}
            
    

    配置文件追加配置自动建表:

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/tt?useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
        username: root
        password: pass
        driverClassName: com.mysql.cj.jdbc.Driver
    flowable:
      async-executor-activate: false
      database-schema-update: true
    

    默认会启动liquibase, 可关闭:

    spring:
      liquibase:
        enabled: false
    

    生成的表如下:

    在这里插入图片描述

    生成的表分别做什么用的

    如果用过Activity的同学, 就会发现表名很多相同的, 但Flowable的表多了很多, 毕竟两者早期是同一个产品。表的功能一般可以通过第二个词语缩写来进行区分。

    Flowable 生成的数据表主要用于支撑工作流引擎的运行和管理。这些表中包括但不限于以下几类:

    • ACT_RE_: 以 “RE” 为前缀的表属于仓库服务(RepositoryService),它们主要存储与流程定义相关的静态信息,如流程定义、流程的资源(图片、规则等)。
    • ACT_RU_: 以 “RU” 为前缀的表属于运行时服务(RuntimeService),存储着流程实例在执行期间的动态数据,包括流程变量、用户任务、变量、职责(job)等。
    • ACT_ID_: 以 “ID” 为前缀的表与组织机构或用户身份有关,涉及用户、组和权限等信息。
    • ACT_HI_: 是Flowable工作流引擎中使用的历史数据表。
    • ACT_GE_:主要用于存储全局通用的数据和设置,这些数据在各种情况下都可能被使用

      简单使用flowable

      用户admin密码test:

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

      简单绘制一个请假审批:

      • 部门经理线的流条件:${day>1 && day 3]]>

        部署这个a.bpmn20.xml文件:

         @Test
            void test01() {
                // 配置数据库相关信息 获取 ProcessEngineConfiguration
                ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
                        .setJdbcUrl("jdbc:mysql://localhost:3306/tt?serverTimezone=UTC&nullCatalogMeansCurrent=true")
                        .setJdbcUsername("root")
                        .setJdbcDriver("com.mysql.cj.jdbc.Driver")
                        .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
                // 获取流程引擎对象
                ProcessEngine processEngine = cfg.buildProcessEngine();
                // 部署流程 获取RepositoryService对象
                RepositoryService repositoryService = processEngine.getRepositoryService();
                Deployment deployment = repositoryService.createDeployment()// 创建Deployment对象
                        .addClasspathResource("a.bpmn20.xml") // 添加流程部署文件
                        .name("请假") // 设置部署流程的名称
                        .deploy(); // 执行部署操作
                        }
        

        测试执行:

         Map variables = new HashMap();
                //days是流程图条件
                
                variables.put("day", 3);
                ProcessInstance pi = runtimeService.startProcessInstanceByKey("a", variables);
                System.out.println(pi.getName());
        

        我们分别调整day为1,3,5时,此时ACT_RU_TASK表(ACT_RU_TASK表存储了运行时的用户任务数据)中将有三条数据:

        在这里插入图片描述

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon