写个flowable的使用例子
时间: 2023-07-11 10:09:28 浏览: 90
好的,以下是一个简单的Flowable使用例子:
1. 引入依赖
在项目的pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter</artifactId>
<version>${flowable.version}</version>
</dependency>
```
其中,${flowable.version} 为 Flowable 版本号。
2. 配置数据库
在项目的配置文件(如application.yml)中添加以下配置:
```
spring:
datasource:
url: jdbc:mysql://localhost:3306/flowable?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
jpa:
hibernate:
ddl-auto: update
```
其中,url、username、password 分别为数据库连接信息,ddl-auto 为数据库表的创建方式。
3. 创建流程定义
使用Flowable Modeler创建一个简单的流程定义(如请假流程),并导出为 bpmn20.xml 文件。
4. 部署流程定义
使用Flowable提供的API将流程定义(bpmn20.xml)部署到Flowable引擎中:
```
@Autowired
private RepositoryService repositoryService;
public void deployProcessDefinition() {
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("processes/leave.bpmn20.xml")
.deploy();
log.info("Deployed process definition: {}", deployment.getName());
}
```
其中,repositoryService 为 Flowable 提供的服务类,addClasspathResource 方法指定 bpmn20.xml 文件的路径。
5. 启动流程实例
使用Flowable提供的API启动流程实例:
```
@Autowired
private RuntimeService runtimeService;
public void startProcessInstance() {
Map<String, Object> variables = new HashMap<>();
variables.put("leaveDays", 3);
variables.put("leaveReason", "家有急事");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave", variables);
log.info("Started process instance: {}", processInstance.getId());
}
```
其中,runtimeService 为 Flowable 提供的服务类,startProcessInstanceByKey 方法指定流程定义的 key(即请假流程的 ID),并传入流程变量。
6. 处理流程任务
根据流程定义中定义的任务节点,使用Flowable提供的API处理流程任务:
```
@Autowired
private TaskService taskService;
public void completeTask() {
Task task = taskService.createTaskQuery()
.processDefinitionKey("leave")
.taskAssignee("张三")
.singleResult();
if (task != null) {
taskService.complete(task.getId());
log.info("Completed task: {}", task.getName());
} else {
log.warn("No task found.");
}
}
```
其中,taskService 为 Flowable 提供的服务类,createTaskQuery 方法查询指定流程定义、任务处理人的任务,complete 方法完成任务。
7. 结束流程实例
当流程执行完成时,使用Flowable提供的API结束流程实例:
```
@Autowired
private HistoryService historyService;
public void endProcessInstance() {
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processDefinitionKey("leave")
.finished()
.singleResult();
if (historicProcessInstance != null) {
log.info("Ended process instance: {}", historicProcessInstance.getId());
} else {
log.warn("No process instance found.");
}
}
```
其中,historyService 为 Flowable 提供的服务类,createHistoricProcessInstanceQuery 方法查询指定流程定义已结束的流程实例。
以上是一个简单的Flowable使用例子,具体实现可根据具体需求进行修改和扩展。
阅读全文