zoukankan      html  css  js  c++  java
  • (十七)Activitivi5之组任务分配

    一、需求分析

    • 我们在实际业务开发过程中,某一个审批任务节点可以分配一个角色(或者叫做组),然后属于这个角色的任何一个用户都可以去完成这个任务节点的审批

    二、案例

      2.1  方式一:直接流程图配置中写死

    • 如下图,此时有两个用户

    • 如下图,此时有两个组(角色)

    • 用户和组(角色)关联关系表

     

    • 在流程图中配置

    • 最后部署、启动流程后,如下查询候选人 依然要用 taskCandidateUser,由于张三李四都是“管理员”组(角色),所以都可以完成该任务
        /**
         * 查看任务
         */
        @Test
        public void find_task() {
            
            List<Task> taskList=processEngine.getTaskService().createTaskQuery().taskCandidateUser("张三").list();
            for(Task task:taskList){
                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());
            }
        }

       2.2  方式二:使用流程变量

     

    • 启动流程的设置具体的值
      /**
         * 启动流程实例
         */
        @Test
        public void start(){
            Map<String,Object> variables=new HashMap<String,Object>();
            variables.put("groupId", "管理员);
            ProcessInstance pi=processEngine.getRuntimeService() // 运行时Service
                .startProcessInstanceByKey("groupProcess2",variables); // 流程定义表的KEY字段值
            System.out.println("流程实例ID:"+pi.getId());
            System.out.println("流程定义ID:"+pi.getProcessDefinitionId()); 
        }

       2.2  方式三:使用taskListener监听器

     

    • 在监听器中添加组(角色)
    package com.shyroke.activiti.listenter;
    
    import org.activiti.engine.delegate.DelegateTask;
    import org.activiti.engine.delegate.TaskListener;
    
    public class MyTaskListener implements TaskListener {
    
        public void notify(DelegateTask delegateTask) {
            delegateTask.addCandidateGroup("管理员");
        }
    
    }
    • 如下,所有“管理员”组的用户都可以完成这个任务
    /**
         * 查看任务
         */
        @Test
        public void find_task() {
            
            List<Task> taskList=processEngine.getTaskService().createTaskQuery().taskCandidateUser("李四").list();
            for(Task task:taskList){
                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());
            }
        }
        
  • 相关阅读:
    (HDU)1393 -- Weird Clock (奇怪的时钟)
    (HDU)1391 -- Number Steps (数字阶梯)
    (HDU)1390 -- Binary Numbers(二进制数)
    (HDU)1339 -- A Simple Task(简单任务)
    (HDU)1335 -- Basically Speaking(基础和交流)
    论文笔记:Fully-Convolutional Siamese Networks for Object Tracking
    论文笔记:Visual Object Tracking based on Adaptive Siamese and Motion Estimation Network
    论文笔记:Attentional Correlation Filter Network for Adaptive Visual Tracking
    论文笔记:Deep Attentive Tracking via Reciprocative Learning
    Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking---随笔
  • 原文地址:https://www.cnblogs.com/shyroke/p/8005616.html
Copyright © 2011-2022 走看看