activiti7__04Task基本使用


任務的類型
任務的圖形化是以矩形為基礎
在左側添加具體的圖標,
用來描述一種特定任務類型。
用戶任務需要人來參與,需要人為觸發。


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.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class Test04Task {

    @Autowired
    private RepositoryService repositoryService;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskService taskService;

    /**
     * 先創建一張流程圖
     * 然后創建一個具體的流程審批實例
     * 才能執行具體的審批流程
     * 每一個流程節點相當於一個task
     */
    @Test
    public void init() {
        String fileName = "BPMN/test04.bpmn";
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource(fileName)
                .name("流程審批V1")
                .deploy();
        System.out.println(deployment.getName());
        String bpmnId = "myProcess_task";//bpmn文件定義的id
        String bussinessKey = "";//自定義的業務id
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(bpmnId, bussinessKey);
        //返回流程實體的流程定義id
        //myProcess_task:1:761a75f4-4c12-11eb-a38b-6c71d96cc83a
        System.out.println(processInstance.getProcessDefinitionId());
    }


    /**
     * 查詢任務實例
     */
    @Test
    public void test111() {
        List<Task> tasks = taskService.createTaskQuery().list();
        for (int i = 0; i < tasks.size(); i++) {
            Task task = tasks.get(i);
            System.out.println(task.getDelegationState());
            System.out.println(task.getId());//7153543a-4bcc-11eb-b25e-6c71d96cc83a
            System.out.println(task.getCreateTime());
            System.out.println(task.getDescription());
        }
    }

    /**
     * 查詢某人當前的待辦任務
     */
    @Test
    public void test222() {
        List<Task> tasks = taskService.createTaskQuery()
                .taskAssignee("bajie")
                .list();
        for (int i = 0; i < tasks.size(); i++) {
            Task task = tasks.get(i);
            System.out.println(task.getDelegationState());
            System.out.println(task.getId());//7153543a-4bcc-11eb-b25e-6c71d96cc83a
            System.out.println(task.getCreateTime());
            System.out.println(task.getDescription());
        }
    }

    /**
     * 完成某個節點的任務
     * 任務完成以后會流轉到下一個人
     */
    @Test
    public void test333() {
        taskService.complete("7153543a-4bcc-11eb-b25e-6c71d96cc83a");
        System.out.println("任務完成");
    }

    @Test
    public void test400() {
        String fileName = "BPMN/test04Claim.bpmn";
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource(fileName)
                .name("多個候選人任務")
                .deploy();
        System.out.println(deployment.getName());
        String bpmnId = "myProcess_claim";//bpmn文件定義的id
        String bussinessKey = "";//自定義的業務id
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(bpmnId, bussinessKey);
        //返回流程實體的流程定義id
        //myProcess_claim:1:dfd1c4d5-4c16-11eb-91e5-6c71d96cc83a
        System.out.println(processInstance.getProcessDefinitionId());
    }

    /**
     * 一個任務多個候選人
     * 某個候選人拾取任務
     */
    @Test
    public void test444() {
        //通過taskService.createTaskQuery().list()獲取taskid
        String taskId = "dfedb14a-4c16-11eb-91e5-6c71d96cc83a";
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        System.out.println(task.getId());
        taskService.claim(taskId, "bajie");
    }

    /**
     * 任務拾取錯了
     * 歸還任務
     * 任務缺乏執行能力 把任務交辦出去給別人辦理
     */
    @Test
    public void test555() {
        String taskId = "dfedb14a-4c16-11eb-91e5-6c71d96cc83a";
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        taskService.setAssignee(taskId, "null");//歸還候選任務
        taskService.setAssignee(taskId, "wukong");//交辦
    }


}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM