天天看點

springboot2.0+activiti 7 整合(二)--運作一個簡單的流程

根據上篇文章 springboot2.0+activiti 7 整合(一)--初識activiti和建立資料庫 操作,已經把activiti的資料庫建立完成;接下來運作一個簡單的官方示例。 官方demo 要運作一個activiti的demo,至少需要三部分:

  • activiti的API+springboot
  • activiti的資料庫
  • bpmn檔案

1、先檢視資料庫的任務表

檢視act_ru_task表

剛建立的資料庫是沒有任務的。

springboot2.0+activiti 7 整合(二)--運作一個簡單的流程

2、建立bpmn檔案

在resources目錄下,建立一個processes的檔案夾,再建立bpnm檔案(one-task-process.bpmn20.xml)。注意:(activiti支援的是bpmn2.0,所有bpmn檔案名一定是*.bpmn20.xml結尾),因為idea的繪制工具插件預設bpmn檔案是bpmn結尾。

<?xml version="1.0" encoding="UTF-8"?>
<definitions
        xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
        xmlns:activiti="http://activiti.org/bpmn"
        targetNamespace="Examples">

    <process id="oneTaskProcess" name="The One Task Process">
        <startEvent id="theStart" />
        <sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask" />
        <userTask id="theTask" name="my task" />
        <sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd" />
        <endEvent id="theEnd" />
    </process>

</definitions>           

3、配置application.yml

之前建立資料庫的時候降低了mysql的版本,現在資料庫建立完成,以後的調用可以使用開發過程中mysql的版本了。我這裡就更新了mysql 的版本,使用

com.mysql.cj.jdbc.Driver

spring:
  datasource:
    #資料源基本配置
    username: root
    password: root
    url: jdbc:mysql://localhost/activiti?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false
    driver-class-name: com.mysql.cj.jdbc.Driver

           

4、建立測試類

官方文檔是寫在main函數裡面運作,我因為平時習慣使用測試類:

package com.example.activitidemo2;

import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
class ActivitiDemo2ApplicationTests {

    @Resource
    RepositoryService repositoryService;

    @Resource
    RuntimeService runtimeService;

    @Resource
    TaskService taskService;

    @Test
    void contextLoads() {
        System.out.println("Number of process definitions : "
                + repositoryService.createProcessDefinitionQuery().count());
        System.out.println("Number of tasks : " + taskService.createTaskQuery().count());
        runtimeService.startProcessInstanceByKey("oneTaskProcess");
        System.out.println("Number of tasks after process start: " + taskService.createTaskQuery().count());
    }

}
           

運作結果應如下:

Number of process definitions : 1
Number of tasks : 0
Number of tasks after process start: 1
           

5、再檢視資料庫

springboot2.0+activiti 7 整合(二)--運作一個簡單的流程

多運作幾次測試程式,任務的數量也會不斷增多。

到此一個流程就啟動起來了,接下來開始繪制我們自己的業務流程圖并運作。