spring boot为activiti编写单元测试

在resources文件夹下创建processes文件夹,把一个测试用的流程定义文件放到这个目录,这里以测试请假流程为例,测试的流程定义文件叫:leave.bpmn,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" id="sample-diagram" targetNamespace="http://activiti.org/bpmn" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
  <bpmn2:process id="leave" isExecutable="true">
    <bpmn2:startEvent id="StartEvent_1" name="开始">
      <bpmn2:outgoing>Flow_1jbxdia</bpmn2:outgoing>
    </bpmn2:startEvent>
    <bpmn2:userTask id="Activity_0uoi4rj" name="部门审核">
      <bpmn2:incoming>Flow_1jbxdia</bpmn2:incoming>
      <bpmn2:outgoing>Flow_0fay43k</bpmn2:outgoing>
    </bpmn2:userTask>
    <bpmn2:userTask id="Activity_0uo5u5x" name="人事审核">
      <bpmn2:incoming>Flow_0fay43k</bpmn2:incoming>
      <bpmn2:outgoing>Flow_19f31xq</bpmn2:outgoing>
    </bpmn2:userTask>
    <bpmn2:endEvent id="Event_0jf7yel" name="结束">
      <bpmn2:incoming>Flow_19f31xq</bpmn2:incoming>
    </bpmn2:endEvent>
    <bpmn2:sequenceFlow id="Flow_1jbxdia" sourceRef="StartEvent_1" targetRef="Activity_0uoi4rj" />
    <bpmn2:sequenceFlow id="Flow_0fay43k" sourceRef="Activity_0uoi4rj" targetRef="Activity_0uo5u5x" />
    <bpmn2:sequenceFlow id="Flow_19f31xq" sourceRef="Activity_0uo5u5x" targetRef="Event_0jf7yel" />
  </bpmn2:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="leave">
      <bpmndi:BPMNEdge id="Flow_19f31xq_di" bpmnElement="Flow_19f31xq">
        <di:waypoint x="830" y="258" />
        <di:waypoint x="942" y="258" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0fay43k_di" bpmnElement="Flow_0fay43k">
        <di:waypoint x="630" y="258" />
        <di:waypoint x="730" y="258" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1jbxdia_di" bpmnElement="Flow_1jbxdia" bioc:stroke="green" bioc:fill="green">
        <di:waypoint x="448" y="258" />
        <di:waypoint x="530" y="258" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1" bioc:stroke="gray" bioc:fill="#eae9e9">
        <dc:Bounds x="412" y="240" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="419" y="283" width="22" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_0uoi4rj_di" bpmnElement="Activity_0uoi4rj" bioc:stroke="green" bioc:fill="yellow">
        <dc:Bounds x="530" y="218" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_0uo5u5x_di" bpmnElement="Activity_0uo5u5x">
        <dc:Bounds x="730" y="218" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Event_0jf7yel_di" bpmnElement="Event_0jf7yel">
        <dc:Bounds x="942" y="240" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="949" y="283" width="22" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn2:definitions>

 

新建activiti的单元测试类,src/test/java/com/ruoyi/test/ActivitiJunitTest.java,代码如下:

package com.ruoyi.test;

import com.ruoyi.RuoYiApplication;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = RuoYiApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ActivitiJunitTest {
    private static final Logger log = LoggerFactory.getLogger(ActivitiJunitTest.class);

    @Autowired
    RepositoryService repositoryService;

    @Autowired
    RuntimeService runtimeService;

    @Autowired
    TaskService taskService;

    @Test
    public void testDeployment() {
        Deployment deployment = repositoryService.createDeployment()
                .name("测试流程文件部署")
                .addClasspathResource("processes/leave.bpmn")
                // .addClasspathResource("processes/leave.jpg")
                .deploy();

        log.info("部署的流程id = {}", deployment.getId());
        log.info("部署的流程名称 = {}", deployment.getName());
    }

    @Test
    public void testStartProcess() {
        String instanceKey = "leave";
        log.info("=== 启动请假流程 ===");
        Map<String, Object> map = new HashMap<String, Object>();
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(instanceKey, map);
        log.info("启动流程实例成功 = {}", processInstance);
        log.info("流程实例id = {}", processInstance.getId());
        log.info("流程定义id = {}", processInstance.getProcessDefinitionId());
    }

    @Test
    public void testGetTaskByAssignee() {
        List<Task> tasks = taskService.createTaskQuery()
                .taskAssignee("zhaoyun")
                .list();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("leaveReason", "请年假一天");
        map.put("leaveDays", 1);
        for (Task task : tasks) {
            log.info("任务id = {}", task.getId());
            taskService.complete(task.getId(), map);
        }
    }
}

 

参考资料:

https://blog.csdn.net/yangfenggh/article/details/122103447

https://blog.csdn.net/a771664696/article/details/118358296

https://wenku.baidu.com/view/20dceca4e63a580216fc700abb68a98271feacb6.html

https://www.cnblogs.com/flower-dance/p/13612279.html

https://zhuanlan.zhihu.com/p/507685215

https://www.cnblogs.com/zjBoy/p/7645459.html

posted @ 2022-05-10 16:54  jamstack  阅读(266)  评论(0编辑  收藏  举报