若依审批流-委派

在审批流中,委派​ 是一种常见的操作,指的是当前审批人将本应由自己处理的任务,临时交给他人代为处理,但最终决策权和责任仍归属于原审批人。

点击若依工作流进行在线体验

工作原理

审批流中的"委派"通常具备以下几个关键特点:

  • 临时性与可逆性:委派通常是一种临时性的安排。例如,当正式审批人休假、出差或因其他原因暂时无法处理任务时,会进行委派。一旦原审批人恢复工作,委派关系可能就会结束。
  • 责任主体不变 :尽管任务被交给他人处理,但最终的责任仍然由原审批人(即委派人)承担。被委派人的操作通常被视为替原审批人提供参考意见或初步处理。
  • 流程的可回溯性:在流程记录中,委派操作、被委派人的处理意见以及流程如何返回至原审批人,这些信息通常都会被记录下来,确保流程的透明和可追溯 。

需求

假设现在有一个请假流程, 用户提交申请数据, 审批人将任务委派给另一个跟进,被委派人给出自己的意见后,任务继续流转到审批人。(类似虚线任务)

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
  <bpmn:process id="Process_9729" name="请假流程" isExecutable="true">
    <bpmn:startEvent id="Event_0ucy4xc">
      <bpmn:outgoing>Flow_1fgnagb</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:sequenceFlow id="Flow_1fgnagb" sourceRef="Event_0ucy4xc" targetRef="Activity_04kx462" />
    <bpmn:userTask id="Activity_04kx462" name="请假申请" camunda:assignee="${startUser}">
      <bpmn:extensionElements>
        <camunda:formData>
          <camunda:formField id="type" label="请假类型" type="string" />
          <camunda:formField id="reason" label="请假理由" type="string" />
          <camunda:formField id="days" label="请假天数" type="long" defaultValue="" />
        </camunda:formData>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_1fgnagb</bpmn:incoming>
      <bpmn:outgoing>Flow_0nrxozi</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:sequenceFlow id="Flow_0nrxozi" sourceRef="Activity_04kx462" targetRef="Activity_0qetwmj" />
    <bpmn:userTask id="Activity_0qetwmj" name="直属领导审批" camunda:assignee="${candidate}">
      <bpmn:extensionElements>
        <camunda:formData>
          <camunda:formField id="userComment" label="评论" type="string" />
        </camunda:formData>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_0nrxozi</bpmn:incoming>
      <bpmn:outgoing>Flow_0bpj5l6</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:sequenceFlow id="Flow_0bpj5l6" sourceRef="Activity_0qetwmj" targetRef="Gateway_07216c1" />
    <bpmn:exclusiveGateway id="Gateway_07216c1">
      <bpmn:incoming>Flow_0bpj5l6</bpmn:incoming>
      <bpmn:outgoing>Flow_0uf4uhb</bpmn:outgoing>
      <bpmn:outgoing>Flow_1jmp8ly</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:endEvent id="Event_0lhm65y">
      <bpmn:incoming>Flow_0uf4uhb</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_0uf4uhb" name="审批通过" sourceRef="Gateway_07216c1" targetRef="Event_0lhm65y">
      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${approved == true}</bpmn:conditionExpression>
    </bpmn:sequenceFlow>
    <bpmn:endEvent id="Event_0xmax1y">
      <bpmn:incoming>Flow_1jmp8ly</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_1jmp8ly" name="审批拒绝" sourceRef="Gateway_07216c1" targetRef="Event_0xmax1y">
      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${approved==false}</bpmn:conditionExpression>
    </bpmn:sequenceFlow>
  </bpmn:process>

</bpmn:definitions>

演示效果

使用若依(ry)账号登陆系统,发起一个请假申请, 备注,测试委派, 注意,我同样选择了ry这个账户做审批人

使用若依(ry)账号登陆系统,在待办任务,通过委派操作,将任务先转交给admin

使用管理员(admin)账号登陆系统, 在待办任务菜单中, 会看到一个带有审查操作的记录, 点击它给出意见。

使用若依(ry)账号登陆系统,在待办任务菜单, 将会看到任务重新回到自己清单中, 也看到了admin的意见。

使用若依(ry)账号登陆系统,在待办任务中,执行通过,拒绝等操作, 时间线看到了最终效果。

若依工作流

相关推荐
Marktowin24 分钟前
Mybatis-Plus更新操作时的一个坑
java·后端
赵文宇1 小时前
CNCF Dragonfly 毕业啦!基于P2P的镜像和文件分发系统快速入门,在线体验
后端
程序员爱钓鱼1 小时前
Node.js 编程实战:即时聊天应用 —— WebSocket 实现实时通信
前端·后端·node.js
Libby博仙2 小时前
Spring Boot 条件化注解深度解析
java·spring boot·后端
源代码•宸2 小时前
Golang原理剖析(Map 源码梳理)
经验分享·后端·算法·leetcode·golang·map
小周在成长2 小时前
动态SQL与MyBatis动态SQL最佳实践
后端
瓦尔登湖懒羊羊2 小时前
TCP的自我介绍
后端
小周在成长2 小时前
MyBatis 动态SQL学习
后端
子非鱼9212 小时前
SpringBoot快速上手
java·spring boot·后端
我爱娃哈哈3 小时前
SpringBoot + XXL-JOB + Quartz:任务调度双引擎选型与高可用调度平台搭建
java·spring boot·后端