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

相关推荐
考虑考虑10 小时前
docker compose V2版本新属性
运维·后端·自动化运维
GreenTea12 小时前
7000 万 QPS、500 PB:OpenAI 如何用一个 Python 存储平台撑住 10 亿用户
后端·架构
Flynt12 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet12 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
GreenTea13 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
Bs_MoneyMagnet15 小时前
基于springboot+vue的心理咨询预约与随访平台的设计与实现 源码+文档
vue.js·spring boot·后端·spring·毕业设计·旅游·计算机毕业设计
IT_陈寒16 小时前
Vue的响应式更新把我坑惨了,原来问题出在这
前端·人工智能·后端
陌シ未央ゞ17 小时前
基于BM25算法和RRF实现的混合索引(java版)
人工智能·spring boot·后端·算法
第五页的你17 小时前
SpringBoot基础设施配置(Redis序列化,JJWT新版)
后端
吃饱了得干活17 小时前
RabbitMQ 原理解析(下):存储、集群与可靠投递
后端·rabbitmq