SpringBoot简简单单整合Flowable

一、Flowable整合SpringBoot

  Flowable在Java项目中开发我们更多的还是会在SpringBoot环境中来使用,所以整合SpringBoot环境还是必不可少的。具体我们来看看如何实现

1.添加相关依赖

  首先需要添加必要的依赖

<dependency>
            <groupId>org.flowable</groupId>
            <artifactId>flowable-spring-boot-starter</artifactId>
            <version>6.6.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.14</version>
        </dependency>
        <dependency>
            <groupId>MySQL</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

2.添加对应的配置

  然后在属性文件中添加数据的配置信息和Flowable的必要配置。

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/flowable1?serverTimezone=UTC&nullCatalogMeansCurrent=true
    username: root
    password: 123456
    hikari:
      minimum-idle: 5
      idle-timeout: 600000
      maximum-pool-size: 10
      auto-commit: true
      pool-name: MyHikariCP
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1
flowable:
  async-executor-activate: false #关闭定时任务JOB
  #  将databaseSchemaUpdate设置为true。当Flowable发现库与数据库表结构不一致时,会自动将数据库表结构升级至新版本。
  database-schema-update: true
server:
  port: 8082

  系统启动的时候检查如果数据库对应的表结构没有创建,会帮助我们先创建对应的表结构。到此整合就搞定了,非常的简单,然后我们就可以通过案例来测试了

3.案例应用

3.1 流程部署

  • processes目录下的任何BPMN 2.0流程定义都会被自动部署。创建processes目录,并在其中创建示例流程定义(命名为one-task-process.bpmn20.xml)。
  • cases目录下的任何CMMN 1.1事例都会被自动部署。
  • forms目录下的任何Form定义都会被自动部署。
SpringBoot简简单单整合Flowable
在这里插入图片描述

通过手动方式来部署,我们可以从容器中直接获取相关的对象,ProcessEngine,RuntimeService等。

@SpringBootTest
class FlowableSpringBoot28ApplicationTests {

    @Autowired
    private ProcessEngine processEngine;

    @Autowired
    private RepositoryService repositoryService;


    @Autowired
    private TaskService taskService;


    @Autowired
    private RuntimeService runtimeService;


    /**
     * Deploy
     */

    @Test
    void testDeploy() {
        //RepositoryService repositoryService = processEngine.getRepositoryService();
        Deployment deploy = repositoryService.createDeployment()
                .addClasspathResource("请假流程.bpmn20.xml")
                .name("holiday")
                .deploy();
        System.out.println("deploy.getId() = " + deploy.getId());
        System.out.println("deploy.getName() = " + deploy.getName());
    }

}

3.2 启动流程

  启动流程和前面介绍的就没什么差异了,通过RuntimeService来实现

    /**
     * start process
     */

    @Test
    void startFlow(){
        Map<String,Object> map = new HashMap();
        map.put("assignee0","zhangsan");
        map.put("assignee1","zhangsan");
        runtimeService.startProcessInstanceById("holiday28:2:3653a34e-ae45-11ec-969d-c03c59ad2248",map);
    }

3.3 处理流程

  处理流程和前面介绍的也一样,通过TaskService来处理

    /**
     * complete Task
     */

    @Test
    void completeTask(){
        Task task = taskService.createTaskQuery()
                .processInstanceId("fb166cd8-ae45-11ec-92c4-c03c59ad2248")
                .taskAssignee("zhangsan")
                .singleResult();
        if(task != null){
            taskService.complete(task.getId());
            System.out.println("complete ....");
        }
    }


原文始发于微信公众号(波哥带你学编程):SpringBoot简简单单整合Flowable

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/58469.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!