Activiti 7.x 组任务的分配及处理

2020-03-01  本文已影响0人  MaJiT

1.组任务的分配

在流程定义中Candidate Users 可以分配多个人,(zhangsan,lisi,wangwu)用逗号隔开;
这样zhangsan,lisi,wangwu,都有相同的待办任务,但是对应的Assignee位NULL

2.拾取任务

通过以下代码zhangsan用户可以拾取任务,任务拾取完毕后对应表中的Assignee变成zhangsan但是任务并没有完成

        //1.得到ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.得到TaskService对象
        TaskService taskService = processEngine.getTaskService();

        //3.设置一些参数,流程定义的key,候选用户
        String key = "myProcess_1";
        String candidate_users="zhangsan";

        //4.执行查询
        Task task = taskService.createTaskQuery()
                .processDefinitionKey(key)
                .taskCandidateUser(candidate_users)//设置候选用户
                .singleResult();
        if(task!=null){
            taskService.claim(task.getId(),candidate_users);//第一个参数任务ID,第二个参数为具体的候选用户名
            System.out.println("任务拾取完毕!");
        }

3.查询个人任务

//1.得到ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.得到TaskService对象
        TaskService taskService = processEngine.getTaskService();

        //3.设置一些参数,流程定义的key,用户
        String key = "myProcess_1";
        String assignee="zhangsan";

        //4.执行查询
        List<Task> list = taskService.createTaskQuery()
                .processDefinitionKey(key)
                .taskAssignee(assignee)  //设置任务的负责人
                .list();
        //5.输出
        for(Task task :list){
            System.out.println(task.getProcessInstanceId());
            System.out.println(task.getId());
            System.out.println(task.getName());
            System.out.println(task.getAssignee());//任务的执行人
        }

4.处理任务

//1.得到ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.得到TaskService对象
        TaskService taskService = processEngine.getTaskService();

        //3.设置一些参数,流程定义的key,用户
        String key = "myProcess_1";
        String assignee="zhangsan";

        //4.执行查询
        Task task = taskService.createTaskQuery()
                .processDefinitionKey(key)
                .taskAssignee(assignee)  //设置任务的负责人
                .singleResult();
        //5.执行当前的任务
        if(task!=null){
            taskService.complete(task.getId());
            System.out.println("任务执行完毕!");
        }

5.归还组任务

用户拾取成功任务后,如果不想处理此任务可以归回到组任务
taskService.setAssignee(task.getId(),null)

6.交接组任务

用户不想处理此任务可以交给其他的候选人处理
taskService.setAssignee(task.getId(),"lisi")

上一篇下一篇

猜你喜欢

热点阅读