Spring Boot 3 + Flowable 7 工作流引擎使用笔记

在现代企业中,工作流管理是一项至关重要的任务,可以帮助组织提高效率、优化流程并降低人为错误。Flowable 是一个强大的业务流程管理(BPM)平台,它提供了一个轻量级的、可嵌入的工作流引擎。在这篇文章中,我们将探索如何在 Spring Boot 3 中集成 Flowable 7,以实现工作流的创建和管理。

1. 项目搭建

首先,我们需要一个 Spring Boot 3 项目。可以使用 Spring Initializr 创建项目,选择以下依赖:

  • Spring Web
  • Spring Data JPA
  • H2 Database
  • Flowable

然后,在 pom.xml 中添加 Flowable 相关依赖:

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!-- Flowable Engine -->
    <dependency>
        <groupId>org.flowable</groupId>
        <artifactId>flowable-spring-boot-starter-process</artifactId>
        <version>7.13.0</version>
    </dependency>

    <!-- H2 Database for testing -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2. 配置 Flowable

application.yml 文件中,配置 Flowable 的基本设置:

spring:
  flowable:
    databaseSchema: flowable
    asyncExecutorActivate: true
    history: full
    id-generator: sequence

3. 创建流程定义

接下来,我们需要定义一个简单的 BPMN 流程。创建一个 process.bpmn20.xml 文件放在 src/main/resources/processes 目录下,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             targetNamespace="http://flowable.org/bpmn"
             xmlns:flowable="http://flowable.org/bpmn">
    <process id="simpleProcess" name="简单流程" isExecutable="true">
        <startEvent id="startEvent"/>
        <sequenceFlow id="flow1" sourceRef="startEvent" targetRef="serviceTask"/>
        <serviceTask id="serviceTask" name="任务" flowable:class="com.example.service.MyServiceTask"/>
        <sequenceFlow id="flow2" sourceRef="serviceTask" targetRef="endEvent"/>
        <endEvent id="endEvent"/>
    </process>
</definitions>

在上面的 BPMN 中,我们定义了一个简单的流程,包括一个开始事件、一个服务任务和一个结束事件。

4. 实现服务任务

创建一个自定义服务任务,在 src/main/java/com/example/service 目录下创建一个 MyServiceTask 类:

package com.example.service;

import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Service;

@Service
public class MyServiceTask implements JavaDelegate {

    @Override
    public void execute(DelegateExecution execution) {
        System.out.println("Executing MyServiceTask");
    }
}

5. 启动流程

在我们控制器中启动流程,可以创建一个简单的 REST API:

package com.example.controller;

import org.flowable.engine.RuntimeService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WorkflowController {

    @Autowired
    private RuntimeService runtimeService;

    @GetMapping("/start-process")
    public String startProcess() {
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("simpleProcess");
        return "Process started with ID: " + processInstance.getId();
    }
}

6. 运行项目

运行 Spring Boot 应用程序后,可以使用 Postman 或浏览器访问 http://localhost:8080/start-process 启动我们的工作流。控制台中将会输出 “Executing MyServiceTask”,表示工作流的执行过程已经完成。

总结

本文讲述了如何在 Spring Boot 3 中集成 Flowable 7 工作流引擎,我们从创建 Maven 项目到定义 BPMN 流程,最后实现了一个简单的工作流。通过自定义服务任务,可以根据实际业务逻辑进行扩展,为企业的工作流管理带来便利。希望本文对你在使用 Flowable 时有所帮助!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部