这篇文章将为大家详细讲解有关SpringBoot1.5.9如何集成Activiti6,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1.通过以下地址创建基于Maven的SpringBoot Web项目
https://start.spring.io/
2.添加项目的依赖文件
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">
<modelVersion>4.0.0</modelVersion>
<groupId>activiti.demo</groupId>
<artifactId>activiti-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>activiti-demo</name>
<description>spring-activiti-demo</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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>6.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.添加业务流程文件
在src/main/java/resource目录下创建processes目录
创建process.bpmn文件,内容如下
<?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" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/testm1510735932336" id="m1510735932336" name="">
<process id="leave" isExecutable="true" isClosed="false" processType="None">
<startEvent id="_2" name="StartEvent"></startEvent>
<endEvent id="_3" name="EndEvent"></endEvent>
<userTask id="approve" name="经理审批" activiti:assignee="${approve}"></userTask>
<exclusiveGateway id="_5" name="ExclusiveGateway"></exclusiveGateway>
<sequenceFlow id="_6" sourceRef="approve" targetRef="_5"></sequenceFlow>
<sequenceFlow id="_7" name="通过" sourceRef="_5" targetRef="_3">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${pass}]]></conditionExpression>
</sequenceFlow>
<userTask id="application" name="提交申请" activiti:assignee="${apply}"></userTask>
<sequenceFlow id="_9" sourceRef="_2" targetRef="application"></sequenceFlow>
<sequenceFlow id="_10" sourceRef="application" targetRef="approve"></sequenceFlow>
<userTask id="modify" name="修改申请" activiti:assignee="${apply}"></userTask>
<sequenceFlow id="_12" name="不通过" sourceRef="_5" targetRef="modify">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!pass}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="_13" sourceRef="modify" targetRef="approve"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_leave">
<bpmndi:BPMNPlane bpmnElement="leave" id="BPMNPlane_leave">
<bpmndi:BPMNShape bpmnElement="_2" id="BPMNShape__2">
<omgdc:Bounds height="35.0" width="35.0" x="15.0" y="60.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="_3" id="BPMNShape__3">
<omgdc:Bounds height="35.0" width="35.0" x="630.0" y="63.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="approve" id="BPMNShape_approve">
<omgdc:Bounds height="55.0" width="85.0" x="315.0" y="50.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="_5" id="BPMNShape__5">
<omgdc:Bounds height="40.0" width="40.0" x="505.0" y="60.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="application" id="BPMNShape_application">
<omgdc:Bounds height="55.0" width="85.0" x="135.0" y="50.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="modify" id="BPMNShape_modify">
<omgdc:Bounds height="55.0" width="85.0" x="315.0" y="150.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="_6" id="BPMNEdge__6">
<omgdi:waypoint x="400.0" y="77.0"></omgdi:waypoint>
<omgdi:waypoint x="505.0" y="80.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="_7" id="BPMNEdge__7">
<omgdi:waypoint x="545.0" y="80.0"></omgdi:waypoint>
<omgdi:waypoint x="630.0" y="80.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="_9" id="BPMNEdge__9">
<omgdi:waypoint x="50.0" y="77.0"></omgdi:waypoint>
<omgdi:waypoint x="135.0" y="77.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="_10" id="BPMNEdge__10">
<omgdi:waypoint x="220.0" y="77.0"></omgdi:waypoint>
<omgdi:waypoint x="315.0" y="77.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="_12" id="BPMNEdge__12">
<omgdi:waypoint x="525.0" y="100.0"></omgdi:waypoint>
<omgdi:waypoint x="525.0" y="177.0"></omgdi:waypoint>
<omgdi:waypoint x="400.0" y="177.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="_13" id="BPMNEdge__13">
<omgdi:waypoint x="357.0" y="150.0"></omgdi:waypoint>
<omgdi:waypoint x="357.0" y="105.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
4.配置application.properties文件
配置内容如下
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/activiti?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&autoReconnect=true&failOverReadOnly=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.show-sql=true
server.port=8082
server.context-path=/
server.session.timeout=10
server.tomcat.uri-encoding=UTF-8
5.代码实现
a.定义接口
package com.springboot.demo.service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/activityConsumerService")
public interface ActivityConsumerService {
@RequestMapping(value = "/startActivityDemo",method = RequestMethod.GET)
public boolean startActivityDemo();
}
b.实现接口
package com.springboot.demo.service.impl;
import com.springboot.demo.service.ActivityConsumerService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName ActivityConsumerServiceImpl
* @Description TODO
* @Author yunshuodeng
* @Date 2019-04-29 13:28
* @Version 1.0
**/
@Service("activityService")
public class ActivityConsumerServiceImpl implements ActivityConsumerService {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private RepositoryService repositoryService;
@Override
public boolean startActivityDemo() {
// 获取当前方法名
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
// 定义任务办理人
String name1 = "zhangsan";
String name2 = "lisi";
System.out.println("method " + methodName + " begin ...");
// 输出流程部署数量
System.out.println("调用流程存储服务,查询部署数量" + repositoryService.createDeploymentQuery().count());
Map<String,Object> map = new HashMap<>();
map.put("apply",name1);
map.put("approve",name2);
// 流程启动
ExecutionEntity executionEntity = (ExecutionEntity) runtimeService.startProcessInstanceByKey("leave",map);
// 查询name1的任务列表
List<Task> taskList = taskService.createTaskQuery().taskAssignee(name1).list();
// 输出任务数量
System.out.println(taskList.size());
if (taskList != null && taskList.size() > 0){
for (Task task : taskList){
System.out.println("任务ID:"+task.getId());
System.out.println("任务办理人:"+task.getAssignee());
System.out.println("任务名称:"+task.getName());
System.out.println("任务创建时间:"+task.getCreateTime());
System.out.println("流程实例ID:"+task.getProcessDefinitionId());
System.out.println("-------------------------------------------");
}
}
System.out.println("method " + methodName + " end ...");
return false;
}
}
6.启动服务并通过以下地址进行访问
http://localhost:8082/activityConsumerService/startActivityDemo
7.查看控制台输出内容并不报错表示已整合完成
关于“SpringBoot1.5.9如何集成Activiti6”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。