(一)首先 pom.xml 文件中引入相关的依赖,具体依赖如下所示:
xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>2.1.3.RELEASEversion> parent> <modelVersion>4.0.0modelVersion> <groupId>com.activiti.examplesgroupId> <artifactId>activiti-3artifactId> <version>1.0version> <properties> <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding> <java.version>8java.version> <maven.compiler.source>${java.version}maven.compiler.source> <maven.compiler.target>${java.version}maven.compiler.target> <activiti-dependencies.version>7.1.24activiti-dependencies.version> properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.activiti.dependenciesgroupId> <artifactId>activiti-dependenciesartifactId> <version>${activiti-dependencies.version}version> <scope>importscope> <type>pomtype> dependency> dependencies> dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webartifactId> dependency> <dependency> <groupId>org.activitigroupId> <artifactId>activiti-spring-boot-starterartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-jdbcartifactId> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <scope>runtimescope> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> <scope>testscope> dependency> dependencies> <build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> plugin> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-compiler-pluginartifactId> <version>${maven-compiler-plugin.version}version> <configuration> <release>${java.version}release> <showDeprecation>trueshowDeprecation> <showWarnings>trueshowWarnings> <optimize>trueoptimize> configuration> plugin> plugins> build> <repositories> <repository> <id>alfrescoid> <name>Activiti Releasesname> <url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/url> <releases> <enabled>trueenabled> releases> repository> repositories> project>
(二)springboot 的配置文件 application.yml中添加相关的配置:
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/platform_activiti?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false username: root password: pass hikari: minimum-idle: 5 maximum-pool-size: 20 connection-test-query: SELECT 1 activiti: # 开启历史库 db-history-used: true history-level: audit
(三)流程资源
资源文件放在 resources/processes 目录下,activiti程序启动会自动发布流程
(四)编写Applocation主程序
package com.activiti.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ActivitiApplication { public static void main(String[] args) { SpringApplication.run(ActivitiApplication.class, args); } }
运行程序,从控制台输出中可以看到,自动创建了数据库,并且发布了"请假申请"的流程
(五)编写基于SpringBootTest的测试程序
package com.activiti.example; import org.activiti.api.process.runtime.ProcessRuntime; import org.activiti.api.task.runtime.TaskRuntime; import org.activiti.engine.*; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.task.Task; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import java.util.Map; @RunWith(SpringRunner.class) @SpringBootTest public class ActivitiTest { @Autowired private RepositoryService repositoryService; @Autowired private TaskService taskService; @Autowired private RuntimeService runtimeService; @Autowired private HistoryService historyService; /** * 启动一个实例 */ @Test public void startProcessInstance() { System.out.println("Number of process definitions : "+ repositoryService.createProcessDefinitionQuery().count()); System.out.println("Number of tasks : " + taskService.createTaskQuery().count()); runtimeService.startProcessInstanceByKey("myProcess_1"); } /** * 查询用户的任务列表 */ @Test public void taskQuery() { //根据流程定义的key,负责人assignee来实现当前用户的任务列表查询 Listlist = taskService.createTaskQuery() .processDefinitionKey("myProcess_1") .taskAssignee("john") .list(); if(list!=null && list.size()>0){ for(Task task:list){ System.out.println("任务ID:"+task.getId()); System.out.println("任务名称:"+task.getName()); System.out.println("任务的创建时间:"+task.getCreateTime()); System.out.println("任务的办理人:"+task.getAssignee()); System.out.println("流程实例ID:"+task.getProcessInstanceId()); System.out.println("执行对象ID:"+task.getExecutionId()); System.out.println("流程定义ID:"+task.getProcessDefinitionId()); System.out.println("getOwner:"+task.getOwner()); System.out.println("getCategory:"+task.getCategory()); System.out.println("getDescription:"+task.getDescription()); System.out.println("getFormKey:"+task.getFormKey()); Map map = task.getProcessVariables(); for (Map.Entry m : map.entrySet()) { System.out.println("key:" + m.getKey() + " value:" + m.getValue()); } for (Map.Entry m : task.getTaskLocalVariables().entrySet()) { System.out.println("key:" + m.getKey() + " value:" + m.getValue()); } } } } /** * 完成任务 */ @Test public void completeTask(){ //任务ID String taskId = "967465fe-3367-11ea-a057-30b49ec7161f"; taskService.complete(taskId); System.out.println("完成任务:任务ID:"+taskId); } /** * 历史活动实例查询 */ @Test public void queryHistoryTask() { List list = historyService.createHistoricTaskInstanceQuery() // 创建历史活动实例查询 .processInstanceId("9671cdea-3367-11ea-a057-30b49ec7161f") // 执行流程实例id .orderByTaskCreateTime() .asc() .list(); for (HistoricTaskInstance hai : list) { System.out.println("活动ID:" + hai.getId()); System.out.println("流程实例ID:" + hai.getProcessInstanceId()); System.out.println("活动名称:" + hai.getName()); System.out.println("办理人:" + hai.getAssignee()); System.out.println("开始时间:" + hai.getStartTime()); System.out.println("结束时间:" + hai.getEndTime()); } } }
源码下载 https://download.csdn.net/download/zsg88/12094838