Camunda流程引擎笔记(四):Send Task,Receive Task

2023-11-02

流程引擎中 Send TaskService Task拥有相同的行为,都是通过回调Java代码完成相应逻辑。通常 Send TaskReceive Task配合使用。

一、Send Task

绘制一个Send Task流程,配置过程和Service Task一样。

 

二、Receive Task

A Receive Task is a simple task that waits for the arrival of a certain message. When the process execution arrives at a Receive Task, the process state is committed to the persistence storage. This means that the process will stay in this wait state until a specific message is received by the engine, which triggers continuation of the process beyond the Receive Task.

翻译:接收任务是一个简单的任务,它等待特定消息的到来。当流程执行到达接收任务时,流程状态被提交到持久性存储。这意味着流程将保持这种等待状态,直到引擎接收到特定的消息,这将触发Receive任务之外的流程继续。

简单来说就是流程到达Receive Task节点后将持久化这个状态直到接收到一个特定的消息,才会继续往下走。

绘制一个Receive Task流程。

 

三、测试

  • 编写Java回调类并绑定给Send Task

    这里的.createMessageCorrelation("message")中配置了上面流程图中的Message Name填写字符串。

    .processInstanceBusinessKey("messageBusinessKey")中填写了一个特定的业务key,方便找到特定的Receive Task流程。

    public class SendTaskDelegate implements JavaDelegate {
        @Override
        public void execute(DelegateExecution execution) throws Exception {
            execution.getProcessEngineServices()
                    .getRuntimeService()
                    .createMessageCorrelation("message")
                    .processInstanceBusinessKey("messageBusinessKey")
                    .correlate();
        }
    }
  • 启动流程。

    首先启动Send Task流程可以看到以下错误:

     

    很明显,这是提示我们需要首先启动一个Receive Task流程实例以接收Send Task流程实例发送的消息。  

  • 启动Receive Task流程实例。

     

    这里Business Key填写了上面代码中配置的messageBusinessKey

    访问http://localhost:8080/app/cockpit/default/#/dashboard,可以看到有一个活动中的流程:

     

    点击Running Process Instances

     

    这里显示Receive Task流程停止在了receive message节点上。

    接下来启动一个Send Task流程实例:

     

    再次访问http://localhost:8080/app/cockpit/default/#/dashboard,可以看到已经没有执行中的流程了:

     

    说明Receive Task流程已经接受到了Send Task流程发送的message消息,所以流程继续执行直到结束。

注:内容在原文上有些许修改,修改后则不会报原文会报的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Camunda流程引擎笔记(四):Send Task,Receive Task 的相关文章

  • Activiti7工作流+SpringBoot

    文章目录 一 Activiti相关概念 1 Activiti介绍 2 核心类 2 1 ProcessEngine 2 2 服务 Service 类 2 2 1 TaskService 2 2 2 RepositoryService 2 2
  • 笔记-flowable工作流开启节点自动跳过

    flowable工作流开启节点自动跳过 笔记 开始 准备工作 1 flowable支持流程跳转的功能 在流程图绘画的时候可以设置一个表达式让节点自动跳过 2 在流程开启时需要设置参数 笔记 开始 我们在使用工作流时经常会遇到需要自动跳过节点
  • activiti源码解析系列8 - 任务完成命令类

    我们在完成任务的时候都执行了哪些操作呢 主要涉及删除表 默认非级联 ACT RU TASK ACT RU IDENTITYLINK ACT RU VARIABLE 主要看一个CompleteTaskCmd protected Void ex
  • Flowable 之事件和网关

    文章目录 一 网关 1 1 排他网关 1 2 并行网关 1 3 包容网关 1 4 事件网关 二 事件 2 1 定时器事件 2 1 1 定时器启动事件 2 1 2 中间计时器捕获事件 2 1 3 边界计时器事件 2 2 消息事件 2 2 1
  • Camunda流程引擎笔记(四):Send Task,Receive Task

    流程引擎中 Send Task和 Service Task拥有相同的行为 都是通过回调Java代码完成相应逻辑 通常 Send Task和 Receive Task配合使用 一 Send Task 绘制一个Send Task流程 配置过程和
  • 多任务工作流难管理?看dhtmlxGantt如何实现云管理平台高效管理!

    今天我们分享一个关于KeyWorks OS为意大利公共管理机构提供的工作流解决方案 这是将dhtmlxGantt集成到低代码平台的成功案例 关于KeyWorks OS dhtmlxGantt帮助知名低代码管理平台KeyWorks OS完善B
  • Activiti源码分析

    Activiti是业界很流行的java工作流引擎 关于Activiti与JBPM5的关系和如何选择不是本文要讨论的话题 相关内容可以baidu一下 Activiti从架构角度看是比较优秀的 是很面向对象的 是我所阅读过的代码结构很棒的开源软
  • flowable实战(三):关于流程图编辑

    发现很多人讲到flowable 就是大概讲一下整合里面一些名词之类 实操偏少 或者用一个小demo演示一下 就完了 但是一涉及到具体的业务 你会发现涉及到工作流要有多麻烦 考虑很多情况进去会涉及到条件设置 逻辑判断甚至官方提供的那么多方法你
  • Flowable 用户问题

    Flowable用户和系统用户问题 springboot集成flowable modeler 实现免登 权限管理 Flowable引擎使用统一权限管理
  • 关于工作流应用的思考

    我今天在学习的过程中突然思考了一个问题 即工作流在多数企业中用不起来主要有两个原因 1 信息化程度不够 2 工作流不够灵活 下面我以大学业务管理为例 对以上两个原因进行说明 由于各个学院各个单位的系统相互独立 所以学院内部的工作通常由内部系
  • Activiti使用教程

    1 概念 首先需要分清三个概念 流程 流程实例 任务实例 Activiti提供4个bean来操作流程 RepositoryService RuntimeService TaskService HistoryService 2 流程 针对于某
  • 工作流任务调度系统:Apache DolphinScheduler

    官网 GitHub 目录 1 概述 1 1 背景 1 2 特点 2 系统架构 2 1 名词解释 2 2 架构 3 部署 3 1 后端部署 3 1 1 基础软件安装 3 1 2 创建部署用户 3 1 3 下载并解压 3 1 4 针对esche
  • Activiti 学习(二)—— Activiti 流程定义和部署

    概述 在这一节 我们将创建一个 Activit 工作流 并启动这个流程 主要包含以下几个步骤 定义流程 按照 BPMN 的规范 使用流程定义工具 用流程符号把整个流程描述出来 部署流程 把画好的流程定义文件 加载到数据库中 生成表的数据 流
  • 2023最新版本Activiti7系列-身份服务

    身份服务 在流程定义中在任务结点的 assignee 固定设置任务负责人 在流程定义时将参与者固定设置在 bpmn 文件中 如果临时任务负责人变更则需要修改流程定义 系统可扩展性差 针对这种情况可以给任务设置多个候选人或者候选人组 可以从候
  • Activiti / Camunda 用变量改变边界计时器

    我有一个关于 Activiti Camunda 中用户任务的计时器边界事件的特殊问题 启动流程时 我使用流程变量设置计时器持续时间 并使用边界定义中的表达式来解析该变量 边界事件是在用户任务上定义的
  • 【工作流Activiti】了解工作流

    1 什么是工作流 工作流 Workflow 就是通过计算机对业务流程自动化执行管理 它主要解决的是 使在多个参与者之间按照某种预定义的规则自动进行传递文档 信息或任务的过程 从而实现某个预期的业务目标 或者促使此目标的实现 通俗来讲 就是业
  • 【工作流Activiti】Activiti的使用

    1 数据库支持 Activiti 运行必须要有数据库的支持 支持的数据库有 mysql oracle postgres mssql db2 h2 2 Activiti环境 我们直接在当前项目 guigu oa parent做Activiti
  • 如何指定应从 BPMN callActivity 调用哪个启动事件

    From http www omg org spec BPMN 2 0 2 PDF http www omg org spec BPMN 2 0 2 PDF第 238 页 如果该进程用作全局进程 可调用进程 可以从其他进程的调用活动中调用
  • 如何查询流程实例的位置?

    我想获取进程中单个实例的当前位置 除了 id 之外 是否可以获取活动的名称作为返回值 您可以使用以下代码获取流程实例的当前位置 当流程在多个位置等待时 该代码还将为您提供活动的名称 package org camunda bpm impor
  • 从历史任务中获取表单密钥

    我们从任务服务获取表单密钥 就像下面的代码片段一样 for Task task getTaskService createTaskQuery taskCandidateGroupIn candidateGroup initializeFor

随机推荐

  • 面试官都在问

    面试官都在问 Linux命令之gdb 0 简述 GDB GNU symbolic debugger 简单地说就是一个调试工具 它是一个受通用公共许可证即GPL保护的自由软件 一般来说 GDB主要帮助你完成下面四个方面的功能 1 启动你的程序
  • Python数据可视化

    Python数据可视化 Python地理区域发展分布热力图 目录 Python数据可视化 Python地理区域发展分布热力图 基本介绍 环境准备 程序设计 参考资料 基本介绍 Python数据可视化 Python地理区域发展分布热力图 环境
  • qtxml生成与解析

    目录 xml生成 xml解析 xml生成 void Qxml setTml QDomDocument doc xml文档树的创建 xml文档树的指令版本必有的 QDomProcessingInstruction pi doc createP
  • LINUX安装nginx详细步骤,部署web前端项目

    1 安装依赖包 一键安装上面四个依赖 yum y install gcc zlib zlib devel pcre devel openssl openssl devel 2 下载并解压安装包 可以去https nginx org down
  • 华为OD机试真题- 跳房子I-2023年OD统一考试(B卷)

    题目描述 跳房子 也叫跳飞机 是一种世界性的儿童游戏 游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格 跳房子的过程中 可以向前跳 也可以向后跳 假设房子的总格数是count 小红每回合可能连续跳的步数都放在数组steps中 请问
  • java 多线程提高大数据量的读写效率

    对于多线程来说 刚开始是比较蒙的 不了解其中的运行机制 最近项目中需要用多线程解决一个加载缓慢的问题 特此写了一个例子 供大家参考 如有建议 请多指教 哈哈哈 那么 话不多说 先说下需求 此接口供xxx公司调用 实现对数据库的读取和修改 而
  • 官宣了!Apache ECharts 毕业成为 Apache 软件基金会顶级项目!

    2021 年 1 月 26 日 德克萨斯州威明顿市 Apache 软件基金会 ASF 是 350 多个开源项目和计划的全志愿开发者 管理者和孵化者 今天宣布 Apache ECharts 成为顶级项目 TLP Apache ECharts
  • Python爬虫的urlib的学习(学习于b站尚硅谷)

    目录 一 页面结构的介绍 1 学习目标 2 为什么要了解页面 html 3 html中的标签 仅介绍了含表格 无序列表 有序列表 超链接 4 本节的演示 二 Urllib 1 什么是互联网爬虫 2 爬虫核心 3 爬虫的用途 4 爬虫的分类
  • IDEA如何导出导入配置文件

    导出配置 打开工具 找到 file gt export setting 选择路径即可 导出的是setting jar文件 导入配置 file gt import setttings gt 选则jar文件 gt 一路确认 gt 重启
  • 多线程常见面试题

    常见的锁策略 这里讨论的锁策略 不仅仅局限于 Java 乐观锁 vs 悲观锁 锁冲突 两个线程尝试获取一把锁 一个线程能获取成功 另一个线程阻塞等待 乐观锁 预该场景中 不太会出现锁冲突的情况 后续做的工作会更少 悲观锁 预测该场景 非常容
  • 优雅的代码命名规范,代码如诗

    优雅的代码命名规范 管理类命名 传播类命名 回调类命名 监控类命名 内存管理类命名 过滤检测类命名 结构类命名 常见设计模式命名 解析类命名 网络类命名 CRUD命名 其他 END 日常编码中 代码的命名是个大的学问 能快速的看懂开源软件的
  • canvas详解05-变形

    几何变换 canvas现在被大量地运用于游戏等动画领域 最主要的归功于它提供的一系列几何变换方法 使得动画更加地容易 所以其几何变换是非常重要的一节 在本教程前面的部分中 我们已经了解了 Canvas 网格和坐标空间 到目前为止 我们只是根
  • 解决:The Apache Tomcat Native library which allows optimal performance in production environments was

    在启动Tomcat 6 0时发现第一条信息便是 The Apache Tomcat Native library which allows optimal performance in production environments was
  • 用C++编写一个猜数字游戏

    系统随机生成一个1到100之间的数字 玩家进行猜测 如果猜错 提示玩家数字过大或过小 如果猜对恭喜玩家胜利 并且推出游戏 include
  • RocketMQ rocketmq_client.log日志文件配置

    1 默认路径 项目添加RocketMQ以后启动项目时会在user home下创建一个rocketmq client log日志文件 文件全路径是 user home logs rocketmqlogs rocketmq client log
  • 日语动词变形(概念明确篇)

    首先 日语中的动词我们可以这样看 这是几种不同的分法 相互之间没有关联 A 一段动词 五段动词 変动词 変动词 B 自动词 他动词 按照属性来区分 C 意志动词 非意志动词 只包含部分日语动词 在动词变形上 我们只涉及第一种分法 其他两种这
  • UE4 开房 多人在线动作游戏------学习笔记

    先创建好UI界面 这个UI是用来创建房间 查找房间 进入房间和退出的 这个UI是用来显示搜索出来的房间 然后点击进入房间的 用了监听 别人才能搜索到服务器 点击开始搜索 显示搜索图标 开始对查找Listen的关卡 查找成功生成ServerB
  • 本地笔记软件_笔记软件obsidian重大更新

    obsidian是一个笔记软件 之前写了篇obsidian的介绍 https zhuanlan zhihu com p 212204160 zhuanlan zhihu com 这次obsidian发布了0 91版本 真正变得实用了 首先说
  • springmvc

    1 SpringMVC简介 1 1 什么是MVC MVC是一种软件架构的思想 将软件按照模型 视图 控制器来划分 M Model 模型层 指工程中的JavaBean 作用是处理数据 JavaBean分为两类 一类称为实体类Bean 专门存储
  • Camunda流程引擎笔记(四):Send Task,Receive Task

    流程引擎中 Send Task和 Service Task拥有相同的行为 都是通过回调Java代码完成相应逻辑 通常 Send Task和 Receive Task配合使用 一 Send Task 绘制一个Send Task流程 配置过程和