天天看點

SpringBoot內建Activiti70、前言1、目錄截圖2、流程設計2、pom檔案3、application.yml4、啟動類5、運作效果附錄

0、前言

  • springboot 2.1.5.RELEASE,試過其他版本如2.5.x,直接報錯;2.3.x,報log。。。異常。
  • activiti dependence 7.1.24
  • MySQL5.7

1、目錄截圖

SpringBoot內建Activiti70、前言1、目錄截圖2、流程設計2、pom檔案3、application.yml4、啟動類5、運作效果附錄

2、流程設計

bpmn.js設計後導出, 但是無法配置isExecutable=TRUE

詳見附錄《 diagram.bpmn檔案内容》

SpringBoot內建Activiti70、前言1、目錄截圖2、流程設計2、pom檔案3、application.yml4、啟動類5、運作效果附錄

2、pom檔案

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <activiti-dependencies.version>7.1.24</activiti-dependencies.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.activiti.dependencies</groupId>
                <artifactId>activiti-dependencies</artifactId>
                <version>${activiti-dependencies.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>alfresco</id>
            <name>Activiti Releases</name>
            <url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

           

3、application.yml

spring:
  datasource:
    url: jdbc:mysql://192.168.1.13:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
    username: root
    password: '123456'
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialization-mode: always
  activiti:
    database-schema-update: true
    history-level: full
    db-history-used: true
           

4、啟動類

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * @Author LaoHa
 * @Date 2021/7/2
 */
@SpringBootApplication
public class AppStart {
    public static void main(String[] args) {
        SpringApplication.run(AppStart.class,args);

        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        RepositoryService repositoryService = processEngine.getRepositoryService();
        Deployment deployment = repositoryService.createDeployment()
                .name("我的請假流程")
                .addClasspathResource("bpmn/diagram.bpmn")
                .deploy();
        System.out.println(deployment.getId());
        System.out.println(deployment.getName());
    }
}

           

5、運作效果

  • 建立activiti資料庫
    SpringBoot內建Activiti70、前言1、目錄截圖2、流程設計2、pom檔案3、application.yml4、啟動類5、運作效果附錄

附錄

  • diagram.bpmn檔案内容
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="bpmn-js (https://demo.bpmn.io)" exporterVersion="8.7.1">
  <process id="Process_1" isExecutable="true">
    <startEvent id="StartEvent_1y45yut" name="startEvent">
      <outgoing>SequenceFlow_0h21x7r</outgoing>
    </startEvent>
    <sequenceFlow id="SequenceFlow_0h21x7r" sourceRef="StartEvent_1y45yut" targetRef="Task_1hcentk" />
    <userTask id="Task_1hcentk" name="holiday apply">
      <incoming>SequenceFlow_0h21x7r</incoming>
      <outgoing>SequenceFlow_0wnb4ke</outgoing>
    </userTask>
    <exclusiveGateway id="ExclusiveGateway_15hu1pt" name="Exclusive GateWay">
      <incoming>SequenceFlow_0wnb4ke</incoming>
      <outgoing>Flow_01xjf9l</outgoing>
      <outgoing>Flow_1bg6oi0</outgoing>
    </exclusiveGateway>
    <sequenceFlow id="SequenceFlow_0wnb4ke" sourceRef="Task_1hcentk" targetRef="ExclusiveGateway_15hu1pt" />
    <sequenceFlow id="Flow_01xjf9l" sourceRef="ExclusiveGateway_15hu1pt" targetRef="Activity_12fkaph" />
    <userTask id="Activity_12fkaph" name="manager check">
      <incoming>Flow_01xjf9l</incoming>
      <outgoing>Flow_0kximvf</outgoing>
    </userTask>
    <sequenceFlow id="Flow_1bg6oi0" sourceRef="ExclusiveGateway_15hu1pt" targetRef="Activity_1ukrlln" />
    <userTask id="Activity_1ukrlln" name="leader check">
      <incoming>Flow_1bg6oi0</incoming>
      <outgoing>Flow_1rji5ba</outgoing>
    </userTask>
    <exclusiveGateway id="Gateway_02hpx0d" name="Exclusive GateWay">
      <incoming>Flow_1rji5ba</incoming>
      <incoming>Flow_0kximvf</incoming>
      <outgoing>Flow_16qsj0c</outgoing>
    </exclusiveGateway>
    <sequenceFlow id="Flow_1rji5ba" sourceRef="Activity_1ukrlln" targetRef="Gateway_02hpx0d" />
    <sequenceFlow id="Flow_0kximvf" sourceRef="Activity_12fkaph" targetRef="Gateway_02hpx0d" />
    <endEvent id="Event_1p1hhlh" name="EndEvent">
      <incoming>Flow_16qsj0c</incoming>
    </endEvent>
    <sequenceFlow id="Flow_16qsj0c" sourceRef="Gateway_02hpx0d" targetRef="Event_1p1hhlh" />
  </process>
  <bpmndi:BPMNDiagram id="BpmnDiagram_1">
    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1">
      <bpmndi:BPMNEdge id="SequenceFlow_0wnb4ke_di" bpmnElement="SequenceFlow_0wnb4ke">
        <omgdi:waypoint x="320" y="210" />
        <omgdi:waypoint x="365" y="210" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="SequenceFlow_0h21x7r_di" bpmnElement="SequenceFlow_0h21x7r">
        <omgdi:waypoint x="188" y="210" />
        <omgdi:waypoint x="220" y="210" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_01xjf9l_di" bpmnElement="Flow_01xjf9l">
        <omgdi:waypoint x="390" y="185" />
        <omgdi:waypoint x="390" y="140" />
        <omgdi:waypoint x="440" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1bg6oi0_di" bpmnElement="Flow_1bg6oi0">
        <omgdi:waypoint x="390" y="235" />
        <omgdi:waypoint x="390" y="270" />
        <omgdi:waypoint x="440" y="270" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1rji5ba_di" bpmnElement="Flow_1rji5ba">
        <omgdi:waypoint x="540" y="270" />
        <omgdi:waypoint x="620" y="270" />
        <omgdi:waypoint x="620" y="235" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0kximvf_di" bpmnElement="Flow_0kximvf">
        <omgdi:waypoint x="540" y="140" />
        <omgdi:waypoint x="620" y="140" />
        <omgdi:waypoint x="620" y="185" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_16qsj0c_di" bpmnElement="Flow_16qsj0c">
        <omgdi:waypoint x="645" y="210" />
        <omgdi:waypoint x="692" y="210" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="StartEvent_1y45yut_di" bpmnElement="StartEvent_1y45yut">
        <omgdc:Bounds x="152" y="192" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <omgdc:Bounds x="145" y="235" width="51" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_1n7339w_di" bpmnElement="Task_1hcentk">
        <omgdc:Bounds x="220" y="170" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ExclusiveGateway_15hu1pt_di" bpmnElement="ExclusiveGateway_15hu1pt" isMarkerVisible="true">
        <omgdc:Bounds x="365" y="185" width="50" height="50" />
        <bpmndi:BPMNLabel>
          <omgdc:Bounds x="424.5" y="196.5" width="47" height="27" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_1j52f5p_di" bpmnElement="Activity_1ukrlln">
        <omgdc:Bounds x="440" y="230" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_1bj3888_di" bpmnElement="Activity_12fkaph">
        <omgdc:Bounds x="440" y="100" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Gateway_02hpx0d_di" bpmnElement="Gateway_02hpx0d" isMarkerVisible="true">
        <omgdc:Bounds x="595" y="185" width="50" height="50" />
        <bpmndi:BPMNLabel>
          <omgdc:Bounds x="537.5" y="196.5" width="47" height="27" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Event_1p1hhlh_di" bpmnElement="Event_1p1hhlh">
        <omgdc:Bounds x="692" y="192" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <omgdc:Bounds x="686" y="235" width="49" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

           

繼續閱讀