zoukankan      html  css  js  c++  java
  • Activiti 开发案例之动态指派任务

    流程图

    以上是一个请假的流程图,以下为流程任务节点描述:

    • 员工发起请假流程
    • 部门经理审批
    • 同意则进入人事审批
    • 拒绝则调整申请或者直接结束流程
    • 人事审批通过则进入销假环节
    • 人事审批拒绝则调整申请或者直接结束流程
    • 员工销假结束流程

    任务分配

    员工发起申请

    ProcessInstance process = runtimeService.startProcessInstanceByKey("leave",businessKey, variables);
    Task task = taskService.createTaskQuery().processInstanceId(process.getId()).active().singleResult();
    //此时,不要应删除掉流程图中赋值的角色,否则会重复
    taskService.addCandidateGroup(task.getId(),"部门经理");
    

    部门经理审批

    通过逻辑:

    Map<String,Object> variables=new HashMap<String,Object>();
    variables.put("approve", "true");
    Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult();
    //一定要认领任务之后,重新获取当前任务,然后分配角色。
    taskService.claim(taskId, userId);
    taskService.complete(taskId, variables);
    task = taskService.createTaskQuery().processInstanceId(process.getId()).active().singleResult();
    //此时,不要应删除掉流程图中赋值的角色,否则会重复
    taskService.addCandidateGroup(task.getId(),"人事");
    

    拒绝逻辑:

    Map<String,Object> variables=new HashMap<String,Object>();
    variables.put("approve", "false");
    Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult();
    //一定要认领任务之后,重新获取当前任务,然后分配角色。
    taskService.claim(taskId, userId);
    taskService.complete(taskId, variables);
    task = taskService.createTaskQuery().processInstanceId(process.getId()).active().singleResult();
    //applyId为申请人ID
    taskService.addCandidateUser(task.getId(),applyId);
    

    待办任务

    API 查询

    TaskQuery taskQuery = taskService.createTaskQuery();
    List<Task>  list = taskQuery.taskCandidateOrAssigned(userId)
    

    使用API的话,需要做视图映射,Activiti开发案例之创建用户表视图实现关联查询

    SQL 查询

    -- 多个用户或者角色可以用 IN 
    select  distinct RES.* from ACT_RU_TASK RES 
    
    left join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ 
    
    WHERE SUSPENSION_STATE_ = '1' 
    
    AND ( RES.ASSIGNEE_ ='99' or (RES.ASSIGNEE_ is null 
    
    AND ( I.USER_ID_  = '99' or I.GROUP_ID_  = '部门经理'  ))) 
    
  • 相关阅读:
    判断一个值是不是数字
    webpack起的项目怎么用手机访问?
    vue 父子组件数据双向绑定
    js取整
    封装加减乘除函数 解决JS 浮点数计算 Bug
    javascript笔记 (持续更新)
    ajax请求的原生js实现
    程序员の健康和效率装备列表,普通人也能参考
    Java static,final 基本概念
    Download EditPlus Text Editor
  • 原文地址:https://www.cnblogs.com/smallSevens/p/11324995.html
Copyright © 2011-2022 走看看