美文网首页
Activiti 7.x 组任务的分配及处理

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

作者: MaJiT | 来源:发表于2020-03-01 15:59 被阅读0次

    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")

    相关文章

      网友评论

          本文标题:Activiti 7.x 组任务的分配及处理

          本文链接:https://www.haomeiwen.com/subject/ztwqkhtx.html