activiti笔记3-分配任务、指派处理人

一、分配个人任务

三种方式

  • 方式一,直接在流程文件中指定办理人,assgnee:n. 代理人;受托人;分配到任务的人
    activiti笔记3-分配任务、指派处理人_第1张图片
    部署、开启流程
    @Test
    public void deployAndStart() {
        ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
        /**
         * 1.部署
         */
        //创建一个部署构建器对象,用于加载流程定义文件(bpmn文件和png文件)
        DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment();
        deploymentBuilder.name("taskProcess_NAME");//添加部署的名称
        deploymentBuilder.addClasspathResource("taskProcess.bpmn");//加载流程定义文件(bpmn文件和png文件)
//        deploymentBuilder.addClasspathResource("xxx.png");//加载png文件
        Deployment deployment = deploymentBuilder.deploy();//完成部署
        System.out.println("部署ID:"+deployment.getId());
        System.out.println("部署名称:"+deployment.getName());
        /**
         * 2.启动流程
         */
        ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("taskProcess");

        System.out.println("流程ID:" + processInstance.getId());//act_ru_execution的ID
        System.out.println("流程定义ID" + processInstance.getProcessDefinitionId());//act_re_procdef的ID

    }

activiti笔记3-分配任务、指派处理人_第2张图片
查询个人任务

    /**
     * 查询任务
     */
    @Test
    public void queryTask() {
        ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
        String assignee = "zhang";
        List<Task> list = processEngine.getTaskService()//与正在执行的任务管理相关的Service
                .createTaskQuery()//创建任务查询对象
                .taskAssignee(assignee)//指定个人任务查询,指定代理人
                .list();//以list形式记录对象
        if(list != null && list.size()>0) {
            for(Task task:list) {
                System.out.println("任务ID:"+task.getId());
                System.out.println("任务名称:"+task.getName());
                System.out.println("任务的创建时间:"+task.getCreateTime());
                System.out.println("任务的代理人:"+task.getAssignee());
                System.out.println("流程实例ID:"+task.getProcessInstanceId());
                System.out.println("执行对象ID:"+task.getExecutionId());
                System.out.println("流程定义ID:"+task.getProcessDefinitionId());
                System.out.println(" ----------------------------------------------------- ");
            }
        }
    }

activiti笔记3-分配任务、指派处理人_第3张图片

  • 方式二,程序指定办理人,将assignee设置成变量
    activiti笔记3-分配任务、指派处理人_第4张图片
        /**
         * 2.启动流程
         */
        Map<String,Object> param=new HashMap<String, Object>();
        param.put("userID", "zhang");

        ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("task2Process",
                param);

查看zhang的任务
activiti笔记3-分配任务、指派处理人_第5张图片

  • 方式三,使用监听
    activiti笔记3-分配任务、指派处理人_第6张图片
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

public class TaskListenerImpl implements TaskListener {
    public void notify(DelegateTask delegateTask) {
        delegateTask.setAssignee("zhang");
    }
}

activiti笔记3-分配任务、指派处理人_第7张图片

二、分配给多人

对应分配给个人,有三种, candidate n.候选人,候补者;应试者
activiti笔记3-分配任务、指派处理人_第8张图片
第一种
activiti笔记3-分配任务、指派处理人_第9张图片
第二种
activiti笔记3-分配任务、指派处理人_第10张图片

        /**
         * 2.启动流程
         */
        // 流程需要的变量
        Map<String,Object> param=new HashMap<String, Object>();
        param.put("userIDs", "张三,李四,王五");

        ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("Task3Process",
                param);

第三种
activiti笔记3-分配任务、指派处理人_第11张图片

import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class TaskListenerImpl implements TaskListener {
    public void notify(DelegateTask delegateTask) {
        List<String> list = new ArrayList<String>(Arrays.asList("张三", "李四", "王五"));
        delegateTask.addCandidateUsers(list);
    }
}

查询某个候选人的任务
在这里插入图片描述

三、小记

不积跬步,无以至千里;不积小流,无以成江海。assignee和candidate,设置时对应。

四、引用、参考

[1]https://blog.csdn.net/liuweilong09/article/details/77235881
[2]https://blog.csdn.net/zjx86320/article/details/50412263

你可能感兴趣的:(activiti)