轻松开始工作流,快速开始flowable
Springboot Flowable
环境:springboot 2以上
工具:ecplise(工作流插件)
如果有更好用的集成插件,希望可以介绍一下,毕竟用配套的designer,开发速度太慢了
Spring Boot是关于约定优于配置的。首先,您需要创建一个Spring Boot项目。最简单的方法是通过start.spring.io创建一个项目。例如,创建一个包含web和h2依赖项的项目。然后在创建的项目中添加flowable-spring-boot-starter或flowable-spring-boot-starter-rest依赖项。如果您不需要所有引擎,请查看其他Flowable启动器。例如对于Maven
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter</artifactId>
<version>${flowable.version}</version>
</dependency>
这就是所需要的。此依赖项将传递性地将正确的Flowable依赖项添加到类路径中。您现在可以运行Spring Boot应用程序:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
因此,通过在类路径中添加依赖项并使用@SpringBootAplication注释,幕后发生了很多事情:
-
自动创建内存中数据源(因为H2驱动程序在类路径上)并传递给Flowable流程引擎配置
-
已创建并公开Flowable ProcessEngine,CmmnEngine,DmnEngine,FormEngine,ContentEngine和IdmEngine bean
-
所有Flowable服务都以Spring bean的形式公开
-
Spring Job Executor已创建
将自动部署processes文件夹中的任何BPMN 2.0流程定义。创建文件夹进程并将虚拟进程定义(名为one-task-process.bpmn20.xml)添加到此文件夹。该文件的内容如下所示。
* 将自动部署案例文件夹中的任何CMMN 1.1案例定义。
* 将自动部署dmn文件夹中的任何DMN 1.1 dmn定义。
* 将自动部署表单文件夹中的任何表单定义。
流程定义的XML内容如下所示。请注意,目前,我们正在将一个名为“kermit”的受让人硬编码到用户任务中。我们稍后再回过头来看看。
<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:flowable="http://flowable.org/bpmn"
targetNamespace="Examples">
<process id="oneTaskProcess" name="The One Task Process">
<startEvent id="theStart" />
<sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask" />
<userTask id="theTask" name="my task" assignee="kermit" />
<sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
此外,添加以下代码行以测试部署是否实际工作。 CommandLineRunner是一种特殊的Spring bean,在应用程序启动时执行:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
public CommandLineRunner init(final RepositoryService repositoryService,
final RuntimeService runtimeService,
final TaskService taskService) {
return new CommandLineRunner() {
@Override
public void run(String... strings) throws Exception {
System.out.println("Number of process definitions : "
+ repositoryService.createProcessDefinitionQuery().count());
System.out.println("Number of tasks : " + taskService.createTaskQuery().count());
runtimeService.startProcessInstanceByKey("oneTaskProcess");
System.out.println("Number of tasks after process start: "
+ taskService.createTaskQuery().count());
}
};
}
}
如上所述,Spring Boot是关于配置的约定。默认情况下,通过在类路径上只有H2,它创建了一个内存中的数据源并将其传递给Flowable流程引擎配置。
要更改数据源,只需添加数据库驱动程序依赖项并将URL提供给数据库。例如,要切换到MySQL数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/flowable-spring-boot?characterEncoding=UTF-8
spring.datasource.username=flowable
spring.datasource.password=flowable
如果应用程序现在已启动,您将看到它使用MySQL作为数据库(以及HikariCP连接池框架)
org.flowable.engine.impl.db.DbSqlSession : performing create on engine with resource org/flowable/db/create/flowable.mysql.create.engine.sql
org.flowable.engine.impl.db.DbSqlSession : performing create on history with resource org/flowable/db/create/flowable.mysql.create.history.sql
org.flowable.engine.impl.db.DbSqlSession : performing create on identity with resource org/flowable/db/create/flowable.mysql.create.identity.sql