Flowable中间事件-中间信号捕获事件

news2024/9/27 3:12:10

定义

信号中间事件分为 Catching 事件和 Throwing 事件,即信号中间捕获事件(Signal Intermediate
Catch Event)和信号中间抛出事件(Signal Intermediate Throwing Event)。
当流程执行到信号中间捕获事件时就会中断在这里,一直等待被触发,直接到该事件接收到相
应的信号后,流程沿后继路线继续执行。信号事件是全局的,与其他事件(比如错误事件)不同,
信号不会在捕获之后被消费。如果存在多个引用了相同信号的事件被激活,即使它们不在同一个流
程实例中,那么当接收到信号时,这些事件被一并被触发。
当流程执行到达信号抛出事件时,流程引擎会直接抛出信号,其他引用了与其相同的信号捕获
事件会被触发,信号发出后事件结束,流程沿后继路线继续执行。其抛出的信号可以被信号开始事
件(Signal Start Event)、信号中间捕获事件(Signal Intermediate Catch Event)、信号边界事件(Signal
Boundary Interrputing Event)订阅处理。

图形标记

信号中间捕获事件显示为一个普通的中间事件(圆圈套圆圈),内部有一个信号小图标。信号
小图标是白色的(无填充),表示捕获语义,如图所示:
在这里插入图片描述

XML内容

信号中间捕获事件
信号中间事件定义为普通的中间捕获事件。对应类型的子元素是 signalEventDefinition 元素:

  <signal id="theSignal" name="The Signal" />
  <process id="signalIntermediateCatchEventProcess">
      <intermediateCatchEvent id="signal">
        <signalEventDefinition signalRef="theSignal" />
      </intermediateCatchEvent>
  </process>

在以上 xml 代码片段中,加粗的部分分别定义了 signal 和 intermediateCatchEvent,信号 signal
的 id 属性值为 theSignal,信号中间捕获事件 intermediateCatchEvent 中的 signalEventDefinition 子元
素通过设置 signalRef 为 theSignal 引用了该信号。
信号中间捕获事件触发的方式有两种:
1、流程中抛出信号事件(Signal Intermediate Throwing Event)、信号结束事件(Signal End
Event)发出的信号。
2、通过 API 触发,在 Flowable 中通过调用 runtimeService.signalEventReceived 系列方法发出一
个指定的信号,参考信号边界事件中的介绍。

使用示例

下面看一个费用报销的例子,同时利用了信号中间捕获事件和信号中间抛出事件。发起流程提
交报销申请后,后续有三个并行分支,一个分支会进业务主管确认,另外两个分支都分别到达信号
中间捕获事件,这两个事件会一直等待信号,当业务主管确认完成后到达后续的信号中间抛出事件
发出信号,从而触发两个信号中间捕获事件使另两个分支分别推进至部门主管审批节点和财务主管
节点。该流程的流程图如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r7fAdIfR-1690634246529)(…/public/images/intermediate-catch-event/signal-intermediate-catch-event-01.png)]

示例XML内容

<signal id="theSignal" name="信号" flowable:scope="global" />
  <process id="SignalIntermediateCatchingEvent" name="中间信号捕获和抛出事件测试" isExecutable="true">
    <startEvent id="aed01518ca37e4c5b820abada9e7edc17" />
    <userTask id="aded12dde53c444b9b7a8a99d265b7b2d" name="付款申请">
      <extensionElements>
        <flowable:formData />
        <flowable:assigneeType>static</flowable:assigneeType>
      </extensionElements>
    </userTask>
    <sequenceFlow id="a273f2adba0ac45f1acbff9d4d821de61" sourceRef="aed01518ca37e4c5b820abada9e7edc17" targetRef="aded12dde53c444b9b7a8a99d265b7b2d" />
    <sequenceFlow id="Flow_1sfqb6b" sourceRef="aded12dde53c444b9b7a8a99d265b7b2d" targetRef="Gateway_0ef4904" />
    <parallelGateway id="Gateway_0ef4904" />
    <sequenceFlow id="Flow_0ituttz" sourceRef="Gateway_0ef4904" targetRef="Event_0374yen" />
    <intermediateCatchEvent id="Event_0374yen">
      <signalEventDefinition signalRef="theSignal" />
    </intermediateCatchEvent>
    <userTask id="Activity_0hbesbz" name="部门主管审批">
      <extensionElements>
        <flowable:formData />
        <flowable:assigneeType>static</flowable:assigneeType>
      </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_0ypus8y" sourceRef="Event_0374yen" targetRef="Activity_0hbesbz" />
    <sequenceFlow id="Flow_00epdwi" sourceRef="Gateway_0ef4904" targetRef="Event_1mpvo0c" />
    <userTask id="Activity_1mf7r17" name="财务主管审批">
      <extensionElements>
        <flowable:assigneeType>static</flowable:assigneeType>
        <flowable:formData />
      </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_1eni8ec" sourceRef="Event_1mpvo0c" targetRef="Activity_1mf7r17" />
    <sequenceFlow id="Flow_0vg3vj4" sourceRef="Gateway_0ef4904" targetRef="Activity_18sdoo1" />
    <userTask id="Activity_18sdoo1" name="业务主管确认">
      <extensionElements>
        <flowable:formData />
        <flowable:assigneeType>static</flowable:assigneeType>
      </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_0yffw90" sourceRef="Activity_0hbesbz" targetRef="Gateway_1ss0n3z" />
    <parallelGateway id="Gateway_1ss0n3z" />
    <sequenceFlow id="Flow_1jg3xvu" sourceRef="Activity_1mf7r17" targetRef="Gateway_1ss0n3z" />
    <userTask id="Activity_153vvhu" name="财务打款">
      <extensionElements>
        <flowable:assigneeType>static</flowable:assigneeType>
        <flowable:formData />
      </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_15cmtof" sourceRef="Gateway_1ss0n3z" targetRef="Activity_153vvhu" />
    <endEvent id="Event_1a1foyk" />
    <sequenceFlow id="Flow_0aj4r74" sourceRef="Activity_153vvhu" targetRef="Event_1a1foyk" />
    <intermediateCatchEvent id="Event_1mpvo0c">
      <signalEventDefinition signalRef="theSignal" />
    </intermediateCatchEvent>
    <sequenceFlow id="Flow_0un80br" sourceRef="Activity_18sdoo1" targetRef="Event_02cn8n4" />
    <intermediateThrowEvent id="Event_02cn8n4">
      <signalEventDefinition signalRef="theSignal" />
    </intermediateThrowEvent>
    <sequenceFlow id="Flow_0no5qu7" sourceRef="Event_02cn8n4" targetRef="Gateway_1ss0n3z" />
  </process>

界面操作

在这里插入图片描述

视频地址:
FlowableBpmn2.0组件讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/809185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32(MicroPython) 四足机器人(一)

最近决定研究一下四足机器人&#xff0c;但市面上的产品&#xff0c;要么性价比低&#xff0c;要么性能达不到要求。本人就另外买了零件&#xff0c;安装到之前的一个麦克纳姆轮底盘的底板上。&#xff08;轮子作为装饰&#xff0c;使用铜柱固定&#xff09; 舵机使用MG996R&a…

Stability AI推出Stable Diffusion XL 1.0,文本到图像模型

Stability AI宣布推出Stable Diffusion XL 1.0&#xff0c;这是一个文本到图像的模型&#xff0c;该公司将其描述为迄今为止“最先进的”版本。 Stability AI表示&#xff0c;SDXL 1.0能生成更加鲜明准确的色彩&#xff0c;在对比度、光线和阴影方面做了增强&#xff0c;可生成…

在 Amazon EMR 上构建实时数据湖

前言 当公司业务发展遇到瓶颈时&#xff0c;业务分析师以及决策者们总会希望通过交叉分析大量的业务数据和用户行为数据&#xff0c;以解答“为什么利润会下滑&#xff1f;”“为什么库存周转变慢了&#xff1f;”等问题&#xff0c;最终整点“干货”出来从而促进业务发展。 …

一、Postfix[安装与配置、smtp认证、Python发送邮件以及防垃圾邮件方法、使用腾讯云邮件服务]

Debian 11 一、安装 apt install postfix 二、配置 1.dns配置 解释&#xff1a;搭建真实的邮件服务器需要在DNS提供商那里配置下面的dns 配置A记录mail.www.com-1.x.x.x配置MX记录www.com-mail.www.com 解释&#xff1a;按照上面的配置通常邮件格式就是adminwww.com其通过…

2023 年还推荐报计算机专业吗?

计算机科学是一个很好的专业&#xff0c;因为它由各种课程组成&#xff0c;为学生在成熟和新兴专业就业做好准备。以下是一些通常属于计算机科学专业的课程&#xff1a; 基本编程介绍了用于构建和维护数字架构和基础设施的编程语言和标准。 微积分为制定高级计算和设计概念提供…

使用vim-cmd工具给ESXi虚机定期打快照

VMware虚拟化 - 建设篇 第四章 使用vim-cmd工具给ESXi虚机定期打快照 VMware虚拟化 - 建设篇系列文章回顾使用vim-cmd工具给ESXi虚机定期打快照前言前提条件ESXi新增执行快照备份的sh脚本ESXi添加crond任务并使其生效ESXi指定部分虚拟机不执行定期快照(附加)虚拟机自定义属性…

【数据分享】1999—2021年地级市学校数、教师数和学生数(Shp/Excel格式)

在之前的文章中&#xff0c;我们分享过基于2000-2022年《中国城市统计年鉴》整理的1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、地方一般公共预算收支状…

(树) 剑指 Offer 26. 树的子结构 ——【Leetcode每日一题】

❓剑指 Offer 26. 树的子结构 难度&#xff1a;中等 输入两棵二叉树 A 和 B&#xff0c;判断 B 是不是 A 的子结构。(约定空树不是任意一个树的子结构) B 是 A 的子结构&#xff0c; 即 A 中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3/ \4 5/ \1 2给定的树 B&…

【Linux】用户相关内容

如果命令ll 出现以上信息&#xff0c;UID为具体的数字&#xff0c;代表之前UID为502的用户被删除了。 更改目录或文件所属用户和所属组 在Linux中&#xff0c;创建一个文件时&#xff0c;该文件的拥有者都是创建该文件的用户。 更改所属用户 chown 用户名 文件名/目录名 更…

【环境配置】Windows下WSL将ubuntu挪位置-系统盘清理

问题–垃圾太多&#xff0c;系统盘空间占用太大 最近 C 盘空间暴涨&#xff0c;用工具 WinDirStat-强烈推荐的工具 查看发现 WSL 子系统占用了6个多 G 的空间&#xff0c;遂想办法挪个位置&#xff1b; 【关键字】将 Windows 里的子系统挪到非系统盘 D 盘&#xff1b; 解决 打…

认清现实重新理解游戏的本质

认清现实重新理解游戏的本质 OVERVIEW 认清现实重新理解游戏的本质现实两条小路的启发四个动机1.当前的学习任务或工作任务太艰巨2.完美主义3.对未来太过于自信/无知4.大脑小看未来的收益 四个方法1.让未来的收益足够巨大2.让未来的收益感觉就在眼前3.玩游戏有恶劣的结果4.玩游…

转行车载做开发,首先得掌握好Android Framework~

前言 在当今社会&#xff0c;科技的快速发展推动了各行各业的变革。移动设备作为人们生活、工作、学习的重要工具&#xff0c;其市场份额逐年攀升。Android作为全球最受欢迎的移动操作系统之一&#xff0c;为开发者提供了广阔的发展空间。但是现在Android发展比较尴尬&#xf…

【Python基础】- 自定义函数和匿名函数(文末送书3本)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Nginx下载、安装与使用

Nginx下载 简介&#xff1a; Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务&#xff08;邮件服务&#xff09;。 官网下载地址&#xff1a; https://nginx.org/en/download.html 国内镜像地址&#xff1a; https://mirrors.huawe…

认识数组指针

文章目录 数组指针的定义数组指针的应用 数组指针的定义 类比 整形数组——存放整形的数组 指针数组——存放指针的数组 整形指针——存放整形地址的指针 数组指针——存放数组地址的指针 深度理解 在之前我们知道&#xff1a;数组名表示首元素地址&#xff0c;但是有&#xf…

iostat工具使用

文章目录 iostat命令简介iostat命令参数 iostat输出信息CPU利用率输出信息磁盘利用率输出信息更详细的磁盘利用率输出信息 iostat命令使用示例iostat -kdx 1 iostat数据来源相关参考 iostat命令简介 iostat工具可用于CPU使用统计信息和设备的输入输出统计信息。iostat能支持显…

操作系统专栏1-内存管理from 小林coding

操作系统专栏1-内存管理 虚拟地址内存管理方案分段分页页表单级页表多级页表TLB 段页式内存管理Linux内存管理 malloc工作方式操作系统内存回收回收的内存种类 预读失败和缓存污染问题预读机制预读机制失效解决方案缓存污染 内核对虚拟内存的表示内核对内核空间的表示直接映射区…

一个字符驱动示例 -- 微秒级别周期 反转GPIO

仅作为自我记录的一个demo 本次GPIO以微妙级别频率的反转实验有以下几个启示&#xff1a; 一开始在应用层做延时&#xff0c;来实现2微妙周期&#xff0c;占空比50%的GPIO反转&#xff0c;发现波形的频率一直上不去&#xff0c;只能在25hz徘徊&#xff0c;后来索性去掉延时&am…

96. Python基础教程:多个异常的处理方法(2个except语句)

【目录】 文章目录 96. Python基础教程:多个异常的处理方法(2个except语句)1. 2个except语句练习-分苹果2. except (异常类型1,异常类型2) as 别名 【正文】 96. Python基础教程:多个异常的处理方法(2个except语句) 1. 2个except语句练习-分苹果 任务目标写一个模拟幼儿园老师…