溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SpringBoot1.5.9如何集成Activiti6

發(fā)布時間:2021-11-23 11:10:53 來源:億速云 閱讀:96 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關(guān)SpringBoot1.5.9如何集成Activiti6,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1.通過以下地址創(chuàng)建基于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.添加業(yè)務(wù)流程文件

在src/main/java/resource目錄下創(chuàng)建processes目錄

創(chuàng)建process.bpmn文件,內(nèi)容如下

<?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="經(jīng)理審批" 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文件

配置內(nèi)容如下

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.代碼實現(xiàn)

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.實現(xiàn)接口

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() {

        // 獲取當(dāng)前方法名

        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();

        // 定義任務(wù)辦理人

        String name1 = "zhangsan";

        String name2 = "lisi";

        System.out.println("method " + methodName + " begin ...");

        // 輸出流程部署數(shù)量

        System.out.println("調(diào)用流程存儲服務(wù),查詢部署數(shù)量" + 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的任務(wù)列表

        List<Task> taskList = taskService.createTaskQuery().taskAssignee(name1).list();

        // 輸出任務(wù)數(shù)量

        System.out.println(taskList.size());

        if (taskList != null && taskList.size() > 0){

            for (Task task : taskList){

                System.out.println("任務(wù)ID:"+task.getId());

                System.out.println("任務(wù)辦理人:"+task.getAssignee());

                System.out.println("任務(wù)名稱:"+task.getName());

                System.out.println("任務(wù)創(chuàng)建時間:"+task.getCreateTime());

                System.out.println("流程實例ID:"+task.getProcessDefinitionId());

                System.out.println("-------------------------------------------");

            }

        }

        System.out.println("method " + methodName + " end ...");

        return false;

    }

}

6.啟動服務(wù)并通過以下地址進行訪問

http://localhost:8082/activityConsumerService/startActivityDemo

7.查看控制臺輸出內(nèi)容并不報錯表示已整合完成

關(guān)于“SpringBoot1.5.9如何集成Activiti6”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI