Flowable ReceiveTask使用场景分析

目录
  • 1. 使用场景
  • 2. 实践
    • 2.1 绘制流程图
    • 2.2 部署
    • 2.3 分析

1. 使用场景

在之前的案例中,松哥和大家举例最多的 Task 主要是 UserTask 和 ServiceTask,ReceiveTask 虽然也和大家提过但是没有仔细讲过,今天我们就来捋一捋 ReceiveTask 在 Flowable 中到底怎么玩。

接受任务(Receive Task),接触过 Flowable 的小伙伴应该是见过或者听说过,它的图标如下图:

ReceiveTask 可以算是 Flowable 中最简单的一种任务,当该任务到达的时候,它不做任何逻辑,而是被动地等待用户 Trigger。

ReceiveTask 往往适用于一些不明确的阻塞,例如:一个复杂的计算需要等待很多条件,这些条件是需要人为来判断是否可以执行,而不是直接执行,这个时候,工作人员如果判断可以继续了,那么就 Trigger 一下使流程继续向下执行。

基于以上介绍,ReceiveTask 还有一个中文名字叫做等待任务,也就是说,流程走到 ReceiveTask 这个节点的时候,就卡住了,需要用户手动点一下,流程才会继续向下走。

2. 实践

2.1 绘制流程图

我们绘制一个简单的流程图来看下 ReceiveTask 到底是啥样子,流程图如下:

ReceiveTask 图标上有一个信封。

小伙伴们绘制的时候,首先选择用户任务:

然后点击设置按钮,将用户任务切换为 ReceiveTask 即可:

绘制完成后,我们下载这个流程图对应的 XML 文件。

来看看,带 ReceiveTask 的流程图是下面这样的:

<process id="receiveTask_demo" name="接收任务测试流程" isExecutable="true">
  <documentation>接收任务测试流程</documentation>
  <startEvent id="startEvent" flowable:formFieldValidation="true"></startEvent>
  <sequenceFlow id="sid-9E7B327E-EFC8-4D29-8C6F-157D5E1B7A4E" sourceRef="startEvent" targetRef="todaySales"></sequenceFlow>
  <receiveTask id="todaySales" name="统计今日销售额"></receiveTask>
  <receiveTask id="sendMsg" name="发送今日销售业绩给老板"></receiveTask>
  <endEvent id="endEvent"></endEvent>
  <sequenceFlow id="s2" sourceRef="todaySales" targetRef="sendMsg"></sequenceFlow>
  <sequenceFlow id="s3" sourceRef="sendMsg" targetRef="endEvent"></sequenceFlow>
</process>

2.2 部署

这个松哥在之前的文章中已经反复介绍过多次了,这里就不再赘述了,大家参考我们之前的文章部署并启动上面这个流程。

2.3 分析

当流程启动之后,按照我们前面文章的分析,我们先去数据库中 ACT_RU_TASK 表进行查看,发现该表空空如也。也就是 ReceiveTask 并不会被记录在 ACT_RU_TASK 表中,他们只是单纯的被记录在 ACT_RU_EXECUTION 表中,因为在该表中,我们可以查看 ReceiveTask 的记录。

对于 ReceiveTask 的触发方式也很简单,如下:

@Test
void test10() {
    List<Execution> list = runtimeService.createExecutionQuery().activityId("todaySales").list();
    for (Execution execution : list) {
        runtimeService.trigger(execution.getId());
    }
}

由于 ReceiveTask 的触发需要传入的参数是执行实例 ID 而不是流程实例 ID,所以我们要查询出来当前待触发的执行实例 ID。具体的查询方式就是根据 ReceiveTask 的节点名称去查询。

查询到执行实例 ID 之后,调用 trigger 方法完成触发,使得流程继续向下走。

好啦,现在流程进入到发送今日销售业绩给老板这个环节了,老办法继续查询并执行:

@Test
void test10() {
    List<Execution> list = runtimeService.createExecutionQuery().activityId("sendMsg").list();
    for (Execution execution : list) {
        runtimeService.trigger(execution.getId());
    }
}

这个执行完层后,这个流程就结束了。现在我们去查看 ACT_RU_ACTINST 表已经空了,查看 ACT_RU_EXECUTION 表也空了。

以上就是Flowable ReceiveTask使用场景分析的详细内容,更多关于Flowable ReceiveTask使用场景的资料请关注我们其它相关文章!

(0)

相关推荐

  • Springboot+Flowable 快速实现工作流的开发流程

    目录 总览 一.flowable-ui部署运行 二.绘制流程图 三.后台项目搭建 四.数据库 五.流程引擎API与服务 五.参考资料 总览 使用flowable自带的flowable-ui制作流程图使用springboot开发流程 使用的接口完成流程的业务功能 一.flowable-ui部署运行 flowable-6.6.0 运行 官方demo 参考文档: https://flowable.com/open-source/docs/bpmn/ch14-Applications/ 1.从官网下载f

  • 绘制flowable 流程图的Vue 库使用详解

    目录 引言 workflow-bpmn-modeler 注册 bpmnModeler 组件 muheflow-bpmn-modeler 引言 之前松哥发了一篇文章和小伙伴们介绍了前端的 bpmn.js 这个库,利用这个库我们可以自己将绘制流程图的功能嵌入到我们的项目中. 然而,这个库默认是给 Camunda 设计的,所以画出来的流程图导出来的 XML 文件无法直接使用,必须要做一些深度定制,才能将 XML 文件转为 Flowable 流程引擎可用的 XML 文件.这个深度定制太太太麻烦了. 所以

  • flowable表梳理步骤详解

    flowable表梳理,具体内容如下所示: 1. 表梳理 (参考Flowable用户手册) 1)通用数据表(2个) act_ge_bytearray:二进制数据表,如流程定义.流程模板.流程图的字节流文件: act_ge_property:属性数据表(不常用): 2)历史表(8个,HistoryService接口操作的表) act_hi_actinst:历史节点表,存放流程实例运转的各个节点信息(包含开始.结束等非任务节点): act_hi_attachment:历史附件表,存放历史节点上传的附

  • springboot整合flowable框架入门步骤

    最近工作中有用到工作流的开发,引入了flowable工作流框架,在此记录一下springboot整合flowable工作流框架的过程,以便后续再次使用到时可以做一些参考使用,如果项目中有涉及到流程审批的话,可以使用该框架帮我们实现流程图示化展示的功能,为了快速了解flowable工作流框架的一个使用过程,我们直接步入主题,springboot整合flowable工作流框架的步骤如下: 1.首先创建一个springboot工程,然后引入flowable pom依赖,代码如下: <dependenc

  • SpringBoot+Vue+Flowable模拟实现请假审批流程

    目录 1. 效果展示 2. 工程创建 3. 流程图分析 4. 请假申请 4.1 服务端接口 4.2 前端页面 5. 任务展示 6. 请假审批 7. 结果查询 小伙伴们知道松哥最近在录 TienChin 项目视频,这个项目会用到工作流,为了帮助小伙伴们更好的理解这个项目,松哥最近会出几篇文章和大伙聊一聊工作流 flowable 的使用,算是给 TienChin 项目的第一个铺垫,当然,在 TienChin 项目的系列视频中,我也会和大家详细聊一聊 flowable 流程引擎的使用. 今天我就先写一

  • Flowable ReceiveTask使用场景分析

    目录 1. 使用场景 2. 实践 2.1 绘制流程图 2.2 部署 2.3 分析 1. 使用场景 在之前的案例中,松哥和大家举例最多的 Task 主要是 UserTask 和 ServiceTask,ReceiveTask 虽然也和大家提过但是没有仔细讲过,今天我们就来捋一捋 ReceiveTask 在 Flowable 中到底怎么玩. 接受任务(Receive Task),接触过 Flowable 的小伙伴应该是见过或者听说过,它的图标如下图: ReceiveTask 可以算是 Flowabl

  • 关于SQL数据库 msdb.dbo.sp_send_dbmail 函数发送邮件的场景分析

    在推行系统中,时不时会有用户提出希望系统能自动推送邮件,由于手头的工具和能力有限,不少需求都借助于sql server的邮件触发来实现. 步骤: 1.配置邮箱.步骤略,网上有不少帖子说明,手工直接在管理-数据库邮件配置即可.配置完成后可以右键测试邮箱是否正常工作. 2.制作发送邮件脚本 3.sql server 代理定义周期计划 邮件脚本编写: 场景一:业务部门希望可以每周提供一次样品库存,即将sql查询的结果以附件的方式发给指定的人员. EXEC msdb.dbo.sp_send_dbmail

  • Python 私有属性和私有方法应用场景分析

    类的私有属性和方法 Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的public,private 关键字来区分私有公有. Python默认的成员函数和成员变量都是公开的,类的私有属性指只有在类的内部使用的属性或方法,表现形式为以"__" 属性名或方法名以双下划线开头. class Test(object): __count = 0 # 私有属性 __count def get_count(self): return se

  • Webstorm解除版本控制的场景分析

    一.适用场景 有时我们想要复制一份远端check下来的代码在本地进行自由改动,但是如果还在svn或者git的版本控制下就会出现很多不必要的麻烦. 比如很多文件会是红色,新建文件的时候会很慢就像这样 二.解除方式 如果我们仅仅想简单的解除版本控制,推荐如下方式: 找到你项目所在文件夹,里面有个.idea文件夹 打开文件夹,有一个vcs.xml,这就是webstorm配置版本控制工具的配置文件 对其进行编辑 将 <mapping directory="$PROJECT_DIR$" v

  • vue router返回到指定的路由的场景分析

    项目场景: 项目场景:示例:A(商品详情)--B(商品购买页面)-C(支付成功页面)--D(订单页面) 问题描述: 提示:这里描述项目中遇到的问题: 如果我们不做控制的话,安卓按照浏览器返回机制,依次从D-C-B-A这样子,这样子会有一定的bug,测试那边也是说不过去啊,原本想利用beforeRouteLeave这个来操作进行更改跳转,发现还是有点问题最后还是用beforeRouteEnter来操作了,先放上两个的区别吧: 这里先介绍一下导航守卫 > beforeRouteEnter 离开路由之

  • Git提交代码错了吃后悔药的几种常用办法(场景分析)

    1. 前言 写代码都会犯错误,不小心提交了一个错误我该怎么办?提交的描述信息我该怎么办?如果你也遇到这个问题,那么今天胖哥分享的这篇文章将非常适合你. 2. Commit 错了怎么办 放心都是有后悔药吃的,我们来看看. 场景一 假如你git commit了一堆代码,但是你发现本次Commit的描述信息有点随意,你可以这样: git commit --amend -m"新的提交消息" 场景二 你本来打算Commit五个文件,但是由于疏忽你Commit了四个.当然你可以再Commit一次来

  • 基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析

    之前有分享一个vue2.x移动端弹框组件,今天给大家带来的是Vue3实现自定义弹框组件. V3Popup 基于vue3.x实现的移动端弹出框组件,集合msg.alert.dialog.modal.actionSheet.toast等多种效果.支持20+种自定义参数配置,旨在通过极简的布局.精简的调用方式解决多样化的弹框场景. v3popup 在开发之初参考借鉴了Vant3.ElementPlus等组件化思想.并且功能效果和之前vue2.0保持一致. ◆ 快速引入 在main.js中全局引入v3p

  • JDK1.8中的ConcurrentHashMap使用及场景分析

    ConcurrentHashMap 的初步使用及场景: ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,所以ConcurrentHashMap 在并发编程的场景中使用的频率比较高,那么我们就从ConcurrentHashMap 的使用上以及源码层面来分析 ConcurrentHashMap 到底是如何实现安全性的 api 使用: ConcurrentHashMap 是 Map 的派生类,所以 api 基本和 Hashmap 是类似,主要就是

  • springAop实现权限管理数据校验操作日志的场景分析

    前言 作为一个写java的使用最多的轻量级框架莫过于spring,不管是老项目用到的springmvc,还是现在流行的springboot,都离不开spring的一些操作,我在面试的时候问的最多的spring的问题就是我们在平常的项目中使用spring最多的有哪几个点 在我看来无非就两个 spring的bean管理,说的高大上一点就是spring的ioc,di spring的AOP spring是一个很强大的轻量级框架,功能远不止这两点,但是我们用的最多的就是这两点. spring bean 管

  • golang 中的 nil的场景分析

    源码中的 nil 是这样定义的 // nil is a predeclared identifier representing the zero value for a // pointer, channel, func, interface, map, or slice type. var nil Type // Type must be a pointer, channel, func, interface, map, or slice type 所以 nil 可以理解为这些类型的零值,声明

随机推荐