jeecgflow请假案例之撤回任务

概念说明

任务撤回是指发起人或办理人在办理任务后,允许他在的下一个用户任务的办理人在办理任务前将任务撤回。如申请人发起流程发现提交材料有误,但此时 流程已经流转到下一个用户任务,这种情况如果通过沟通将浪费很多时间。这时就可以使用任务撤回来操作。

在线体验,立即前往 JeecgFlow

设计流程图

点击节点右侧,选择小扳手,将节点设置为用户任务(userTask)节点,按照下面红色方框设置节点属。

设置申请节点的指定人员,以及申请表单的字段信息(可以根据自己业务进行调整)

设置初审人员信息,以及审批字段信息

设置终审人员信息,以及审批字段信息

XML内容

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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:activiti="http://activiti.org/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
  <bpmn:process id="Process_leave" name="请假案例(修订版)" isExecutable="true">
    <bpmn:startEvent id="StartEvent_1" activiti:initiator="admin">
      <bpmn:outgoing>Flow_1isadqh</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:sequenceFlow id="Flow_1isadqh" sourceRef="StartEvent_1" targetRef="Activity_0oioul4" />
    <bpmn:userTask id="Activity_0oioul4" name="请假申请" activiti:assignee="${general}">
      <bpmn:extensionElements>
        <activiti:formData>
          <activiti:formField id="days" label="天数" type="long" defaultValue="1" />
          <activiti:formField id="resson" label="理由" type="string" defaultValue="a" />
          <activiti:formField id="type" label="类型" type="string" />
        </activiti:formData>
        <activiti:formData>
          <activiti:formField id="textValue" label="文本" type="string" />
          <activiti:formField id="numValue" label="数字" type="long" defaultValue="0" />
        </activiti:formData>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_1isadqh</bpmn:incoming>
      <bpmn:outgoing>Flow_1w29ubj</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:sequenceFlow id="Flow_1w29ubj" sourceRef="Activity_0oioul4" targetRef="Activity_0q76mxf" />
    <bpmn:userTask id="Activity_0q76mxf" name="军师审批" activiti:assignee="${guide}">
      <bpmn:extensionElements>
        <activiti:formData>
          <activiti:formField id="comment" label="文本" type="string" />
        </activiti:formData>
        <activiti:formData>
          <activiti:formField id="comment" label="文本" type="string" />
          <activiti:formField id="imageUrl" label="图片" type="string" />
        </activiti:formData>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_1w29ubj</bpmn:incoming>
      <bpmn:outgoing>Flow_1tyk4tf</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:sequenceFlow id="Flow_1tyk4tf" sourceRef="Activity_0q76mxf" targetRef="Activity_14xwipa" />
    <bpmn:userTask id="Activity_14xwipa" name="主公审批" activiti:assignee="${leader}">
      <bpmn:extensionElements>
        <activiti:formData>
          <activiti:formField id="comment" label="文本" type="string" />
        </activiti:formData>
        <activiti:formData>
          <activiti:formField id="comment" label="文本" type="string" />
          <activiti:formField id="imageUrl" label="图片" type="string" />
        </activiti:formData>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_1tyk4tf</bpmn:incoming>
      <bpmn:outgoing>Flow_0yfazy1</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:endEvent id="Event_0md911b">
      <bpmn:incoming>Flow_0yfazy1</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_0yfazy1" sourceRef="Activity_14xwipa" targetRef="Event_0md911b" />
    <bpmn:textAnnotation id="TextAnnotation_0a3g94e">
      <bpmn:text>诸葛亮账号来审批</bpmn:text>
    </bpmn:textAnnotation>
    <bpmn:association id="Association_0ophocq" sourceRef="Activity_0q76mxf" targetRef="TextAnnotation_0a3g94e" />
    <bpmn:textAnnotation id="TextAnnotation_1uo4krp">
      <bpmn:text>刘备账号来审批</bpmn:text>
    </bpmn:textAnnotation>
    <bpmn:association id="Association_11aixgw" sourceRef="Activity_14xwipa" targetRef="TextAnnotation_1uo4krp" />
  </bpmn:process>
  
</bpmn:definitions>

演示步骤

使用将军的角色登陆JeecgFlow的Activiti演示站,如关羽,张飞

发起流程,填写相应的表单参数

此时流程预览可以看到当前流转到军师审批节点

此时,用户可以进行撤回操作

点击撤回之后,预览流程运行情况如图,表示流程回到了发起节点,用户可以重新提交信息。
该撤回的技术方案,是通过自定义Cmd方式实现

更多精彩,请访问JeecgFlow

相关推荐
橙序员小站21 分钟前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
怒放吧德德26 分钟前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆2 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
开心就好20253 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
悟空码字4 小时前
告别“屎山代码”:AI 代码整洁器让老项目重获新生
后端·aigc·ai编程
小码哥_常4 小时前
大厂不宠@Transactional,背后藏着啥秘密?
后端
奋斗小强4 小时前
内存危机突围战:从原理辨析到线上实战,彻底搞懂 OOM 与内存泄漏
后端
小码哥_常4 小时前
Spring Boot接口防抖秘籍:告别“手抖”,守护数据一致性
后端
心之语歌4 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
None3214 小时前
【NestJs】基于Redlock装饰器分布式锁设计与实现
后端·node.js