任务的类型

任务类型中,以用户任务最为重要
image.png
image.png

用户任务的属性面板

image.png
Activiti7中候选组被弱化了

  • Assignee:执行人/代理人
  • Candidate Users:候选人,多个人,以逗号隔开
  • Candidate Groups:候选组
  • Due Date:任务到期时间
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
    3. <process id="myProcess_task" name="报销流程" isExecutable="true">
    4. <startEvent id="startevent1" name="开始"></startEvent>
    5. <userTask id="usertask1" name="发起报销" activiti:assignee="baJie"></userTask>
    6. <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    7. <userTask id="usertask2" name="审核报销" activiti:assignee="wuKong"></userTask>
    8. <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
    9. <endEvent id="endevent1" name="End"></endEvent>
    10. <sequenceFlow id="flow3" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow>
    11. </process>
    12. </definitions>
    ```java package com.torey.activiti7_workflow;

import org.activiti.engine.TaskService; import org.activiti.engine.task.Task; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest public class Part4_Task { @Autowired private TaskService taskService; /**

 * 当流程实例创建了之后,就会有任务节点
 * 所有任务查询,一般管理员用
 */
@Test
public void getTask(){
    List<Task> list = taskService.createTaskQuery().list();
    for (Task task : list) {
        System.out.println(":"+task.getId());
        System.out.println("taskName:"+task.getName());
        System.out.println("执行人:"+task.getAssignee());
    }
}

/**
 * 查询我的代办任务
 */
@Test
public void getTaskByAssignee(){
    List<Task> taskList = taskService.createTaskQuery()
            .taskAssignee("baJie").list();
    for (Task task : taskList) {
        System.out.println("id:"+task.getId());
        System.out.println("taskName:"+task.getName());
        System.out.println("执行人:"+task.getAssignee());
    }
}

/**
 * 执行任务
 */
@Test
public void completeTask(){
    String assignee="baJie";
    List<Task> taskList = taskService.createTaskQuery()
            .taskAssignee(assignee).list();
    if (null==taskList ||taskList.size()==0) {
        System.out.println("不存在该执行人" + assignee);
        return;
    }
    System.out.println(assignee+"的任务有"+taskList.size()+"个");
    for (Task task : taskList) {
        taskService.complete(task.getId());
    }
    taskList = taskService.createTaskQuery()
            .taskAssignee(assignee).list();
    System.out.println(assignee+"的任务执行完成,任务有"+taskList.size()+"个");

}

} ```