POM文件
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>5.22.0</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-rest</artifactId>
<version>5.22.0</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-diagram-rest</artifactId>
<version>5.22.0</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.22.0</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-json-converter</artifactId>
<version>5.22.0</version>
</dependency>
activiti.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contex
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 这里可以使用 链接池 dbcp-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/javacore?useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true"/>
<property name="username" value="root" />
<property name="password" value="asdf-1234" />
<property name="maxActive" value="3" />
<property name="maxIdle" value="1" />
</bean>
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" />
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
简单的画个流程,加点form变量
测试类,变量设置、获取,流程发布、审批,就入门了
package com.java.core.web;
import org.activiti.engine.*;
import org.activiti.engine.form.FormProperty;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
// 教程地址 --创建的数据库
// https://blog.csdn.net/qq_44033725/article/details/131531916
// 安装的bpmn插件
// https://blog.csdn.net/qq407995680/article/details/132554368
public class TestApplication {
//读取配置文件
ProcessEngineConfiguration processEngineConfiguration =
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.xml", "processEngineConfiguration");
/**
* 创建数据库表
*/
@Test
public void testCreat() {
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
System.out.println("processEngine = " + processEngine);
}
/**
* 部署流程图
*/
@Test
public void testDeployment() {
// 1.创建processEngine
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
// 2.获取RepositoryService
RepositoryService repositoryService = processEngine.getRepositoryService();
// 3.使用service进行流程部署 ,定义流程名,把 bpmn 和 png 部署到数据库
Deployment deployment = repositoryService.createDeployment()
.name("测试流程")
.addClasspathResource("bpmn/demo.bpmn20.xml")
.addClasspathResource("bpmn/demo.png")
.deploy();
System.out.println("流程部署id = " + deployment.getId());
System.out.println("流程部署name = " + deployment.getName());
}
/**
* 启动流程实例
*/
@Test
public void testStartProcess() {
// 1. 创建ProcessEngine
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
// 2. 获取RuntimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
Map<String, Object> variables = new HashMap<>();
variables.put("sourceId", "测试李四的值");
// 3. 根据流程定义的id启动流程
ProcessInstance myEvection = runtimeService.startProcessInstanceByKey("demo-process",variables);
System.out.println("流程定义id = " + myEvection.getProcessDefinitionId());
System.out.println("流程实例id = " + myEvection.getId());
System.out.println("当前活动id = " + myEvection.getActivityId());
}
/**
* 查询个人任务
**/
@Test
public void testFindPersonalTaskList() {
// 1.获取流程引擎
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
// 2.获取taskService
TaskService taskService = processEngine.getTaskService();
// 3.根据流程key 和 任务负责人 查询任务
List<Task> list = taskService.createTaskQuery()
.processDefinitionKey("demo-process")
.taskAssignee("李四")
.list();
for (Task task : list) {
System.out.println("流程图的名称 = " + task.getName());
System.out.println("流程图的id = " + task.getTaskDefinitionKey());
System.out.println("流程实例id = " + task.getProcessInstanceId());
System.out.println("当前任务id = " + task.getId());
System.out.println("当前任务负责人id = " + task.getAssignee());
}
}
/**
* 完成个人任务
*/
@Test
public void completTesk() {
// 1.获取流程引擎
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
// 2.获取taskService
TaskService taskService = processEngine.getTaskService();
// 表单属性值
FormService formService = processEngine.getFormService();
// Task task = taskService.createTaskQuery() //完成李四任务
// .processDefinitionKey("demo-process")
// //.taskAssignee("李四")
// .taskId("17505")
// .singleResult();
Task task = taskService.createTaskQuery() //完成张三任务
.processDefinitionKey("demo-process")
.taskAssignee("张三")
.singleResult();
List<FormProperty> taskFormData = formService.getTaskFormData(task.getId()).getFormProperties();
for (FormProperty formProperty : taskFormData) {
System.out.println("表单id = " + formProperty.getId());
System.out.println("表单name = " + formProperty.getName());
System.out.println("表单value = " + formProperty.getValue());
System.out.println("表单value = " + formProperty.getType());
}
System.out.println("流程图的名称 = " + task.getName());
System.out.println("流程图的id = " + task.getTaskDefinitionKey());
System.out.println("流程实例id = " + task.getProcessInstanceId());
System.out.println("当前任务id = " + task.getId());
System.out.println("当前任务负责人id = " + task.getAssignee());
Map<String, Object> variables = new HashMap<>();
variables.put("sourceId", "给张三了");
//taskService.complete(task.getId(),variables);
}
}