Flowable(一个开源的工作流和业务流程管理引擎)中与事件相关的一些核心概念

Flowable(一个开源的工作流和业务流程管理引擎)中与事件相关的一些核心概念
Flowable(一个开源的工作流和业务流程管理引擎)中与事件相关的一些核心概念,包括它们的作用和触发场景。以下是对这些内容的简要说明:

流程执行事件:
流程开始和结束事件:
这些事件标记了流程实例的开始和结束,如PROCESS_STARTED和PROCESS_COMPLETED。
活动实例事件:
记录了流程中各个活动(如用户任务、服务任务等)的创建和结束,如HISTORIC_ACTIVITY_INSTANCE_CREATED和HISTORIC_ACTIVITY_INSTANCE_ENDED。
历史和审计事件:
历史流程实例和活动实例事件:
这些事件用于记录流程执行的历史信息,以便后续审计或分析,如HISTORIC_PROCESS_INSTANCE_CREATED和HISTORIC_PROCESS_INSTANCE_ENDED。
错误和异常处理事件:
错误和终止事件:
这些事件标记了流程中错误或异常的发生,以及由于这些错误导致的流程终止,如PROCESS_COMPLETED_WITH_ERROR_END_EVENT。
流程、案例和阶段管理:
案例和阶段事件:
在支持案例和阶段管理的Flowable环境中,这些事件用于标记案例和阶段的开始和结束,如CASE_STARTED、CASE_ENDED、STAGE_STARTED和STAGE_ENDED。
租户ID变更事件:
租户ID变更:
在多租户环境中,这个事件用于记录流程实例、任务或其他实体的租户ID的变更。
自定义事件:
自定义事件:
Flowable允许用户定义自己的事件类型,并在流程执行过程中触发这些事件,以满足特定的业务需求。
这些事件是Flowable引擎中流程管理和监控的重要组成部分,它们提供了流程执行过程中的实时和历史信息,有助于流程设计者、管理者和审计人员了解流程的运行状态和性能。同时,通过监听和处理这些事件,开发者可以实现复杂的业务流程逻辑和自动化任务。

一、实体相关事件
ENTITY_CREATED:
当一个新的实体(如流程定义、任务、变量等)被创建时触发。
示例: 用户上传了一个新的BPMN文件,Flowable解析该文件并创建了一个流程定义,此时会触发ENTITY_CREATED事件。

ENTITY_INITIALIZED:
实体被初始化但尚未完全创建时触发(这个事件在某些上下文中可能不常见,具体取决于Flowable的版本和配置)。
示例: 在一些高级场景中,实体可能需要经过多个初始化步骤后才能被视为完全创建。每个初始化步骤完成时,可能会触发ENTITY_INITIALIZED事件(但请注意,这个示例可能因Flowable的具体实现而异)。

ENTITY_UPDATED:
当实体(如流程定义、任务、变量等)的属性被更新时触发。
示例: 用户修改了任务的截止日期,此时会触发ENTITY_UPDATED事件。

ENTITY_DELETED:

当实体(如流程定义、任务、变量等)被删除时触发。
示例: 用户删除了一个流程实例,此时会触发ENTITY_DELETED事件。
ENTITY_SUSPENDED, ENTITY_ACTIVATED: 这些事件与实体的挂起和激活状态相关。
示例: 管理员将某个流程定义挂起,此时会触发ENTITY_SUSPENDED事件。之后,如果该流程定义被重新激活,则会触发ENTITY_ACTIVATED事件。

二、定时器和作业相关事件
TIMER_SCHEDULED, TIMER_FIRED:
与定时器的调度和触发相关。
示例: 流程中定义了一个定时器,该定时器在特定时间被调度(TIMER_SCHEDULED),并在达到预定时间时触发(TIMER_FIRED),从而执行某个操作。

JOB_CANCELED,
JOB_EXECUTION_SUCCESS,
JOB_EXECUTION_FAILURE,
JOB_RETRIES_DECREMENTED,
JOB_REJECTED,
JOB_RESCHEDULED,
JOB_MOVED_TO_DEADLETTER:
这些事件与作业的执行状态和结果相关。

示例: 一个作业因为某些原因被取消(JOB_CANCELED),执行成功(JOB_EXECUTION_SUCCESS),执行失败并尝试重试(JOB_RETRIES_DECREMENTED),被拒绝执行(JOB_REJECTED),被重新调度(JOB_RESCHEDULED),或因为多次失败而被移动到死信队列(JOB_MOVED_TO_DEADLETTER)。

三、活动和任务相关事件

ACTIVITY_STARTED,
ACTIVITY_COMPLETED,
ACTIVITY_CANCELLED:
与流程活动中的活动开始、完成和取消相关。
示例: 流程中的用户任务被分配给某个用户,任务开始(ACTIVITY_STARTED),用户完成任务后(ACTIVITY_COMPLETED),或任务被取消(ACTIVITY_CANCELLED)。

MULTI_INSTANCE_ACTIVITY_STARTED, MULTI_INSTANCE_ACTIVITY_COMPLETED, MULTI_INSTANCE_ACTIVITY_COMPLETED_WITH_CONDITION, MULTI_INSTANCE_ACTIVITY_CANCELLED:

与多实例活动的开始、完成、条件完成和取消相关。
示例: 流程中包含一个并行多实例用户任务,所有实例开始执行(MULTI_INSTANCE_ACTIVITY_STARTED),部分或全部实例完成(MULTI_INSTANCE_ACTIVITY_COMPLETED),或基于特定条件完成(MULTI_INSTANCE_ACTIVITY_COMPLETED_WITH_CONDITION),或整个多实例活动被取消(MULTI_INSTANCE_ACTIVITY_CANCELLED)。

ACTIVITY_SIGNAL_WAITING,
ACTIVITY_SIGNALED,
ACTIVITY_COMPENSATE,
ACTIVITY_CONDITIONAL_WAITING, ACTIVITY_CONDITIONAL_RECEIVED,
ACTIVITY_ESCALATION_WAITING,
ACTIVITY_ESCALATION_RECEIVED,
ACTIVITY_MESSAGE_WAITING,
ACTIVITY_MESSAGE_RECEIVED,
ACTIVITY_MESSAGE_CANCELLED,
ACTIVITY_ERROR_RECEIVED:
这些事件与活动的不同等待和接收状态相关,如信号、补偿、条件、升级、消息和错误。
示例: 一个服务任务正在等待外部信号(ACTIVITY_SIGNAL_WAITING),接收到信号后继续执行(ACTIVITY_SIGNALED)。

四、历史和案例管理相关事件

HISTORIC_ACTIVITY_INSTANCE_CREATED, HISTORIC_ACTIVITY_INSTANCE_ENDED: 当流程执行中的活动实例被创建和结束时,会分别触发这两个事件。这些事件用于记录流程执行的历史信息,以便后续审计或分析。
示例: 在一个流程执行过程中,用户任务被分配给某个用户,此时会触发HISTORIC_ACTIVITY_INSTANCE_CREATED事件记录用户任务的创建。当该任务被用户完成时,会触发HISTORIC_ACTIVITY_INSTANCE_ENDED事件记录用户任务的结束。
HISTORIC_PROCESS_INSTANCE_CREATED, HISTORIC_PROCESS_INSTANCE_ENDED: 这两个事件分别记录流程实例的创建和结束。它们对于跟踪流程的生命周期至关重要。
示例: 当用户启动一个新的流程实例时,HISTORIC_PROCESS_INSTANCE_CREATED事件会被触发,以记录流程实例的创建。当流程实例成功完成、由于错误而终止或以其他方式结束时,HISTORIC_PROCESS_INSTANCE_ENDED事件会被触发,以记录流程实例的结束。
5. 流程、案例和阶段管理相关事件
PROCESS_CREATED, PROCESS_STARTED, PROCESS_COMPLETED, PROCESS_COMPLETED_WITH_TERMINATE_END_EVENT, PROCESS_COMPLETED_WITH_ERROR_END_EVENT, PROCESS_COMPLETED_WITH_ESCALATION_END_EVENT, PROCESS_CANCELLED: 这些事件与流程实例的生命周期管理相关,包括创建、启动、完成(不同方式)和取消。
示例: 用户通过Flowable的REST API或用户界面启动一个新的流程实例,此时会触发PROCESS_STARTED事件。如果流程实例正常完成,会触发PROCESS_COMPLETED事件。如果流程因为达到终止结束事件而结束,会触发PROCESS_COMPLETED_WITH_TERMINATE_END_EVENT事件。如果流程因为遇到错误结束事件而结束,会触发PROCESS_COMPLETED_WITH_ERROR_END_EVENT事件。如果流程因为升级结束事件而需要特殊处理,会触发PROCESS_COMPLETED_WITH_ESCALATION_END_EVENT事件。如果流程被取消,会触发PROCESS_CANCELLED事件。
CASE_STARTED, CASE_ENDED: 这两个事件与案例(Case)的启动和结束相关,案例管理是BPMN 2.0规范的一部分,但并非所有BPMN引擎都支持案例管理。
示例: 在支持案例管理的Flowable环境中,当用户启动一个新的案例时,会触发CASE_STARTED事件。当案例中的所有活动都已完成且案例被关闭时,会触发CASE_ENDED事件。
STAGE_STARTED, STAGE_ENDED: 这些事件与流程中的阶段(Stage)的开始和结束相关。阶段可以视为流程中的一组活动或子流程。
示例: 在一个复杂的流程中,可能包含多个阶段。当流程执行到达某个阶段时,会触发STAGE_STARTED事件。当该阶段内的所有活动都已完成且阶段结束时,会触发STAGE_ENDED事件。
6. 其他事件
CHANGE_TENANT_ID (注意这里可能存在一个小错误,通常事件名称可能不包括中文,这里假设是TENANT_ID_CHANGED或类似的名称): 这个事件与流程实例、任务或其他实体的租户ID变更相关。在支持多租户的环境中,租户ID用于区分不同租户的数据。
示例: 在一个多租户环境中,管理员可能需要将某个流程实例的租户ID从一个租户更改为另一个租户。这种变更会触发TENANT_ID_CHANGED(假设的正确名称)事件,以记录租户ID的变更。
CUSTOM: 这是一个通用的事件类型,用于记录自定义事件。Flowable允许用户定义自己的事件类型,并在流程执行过程中触发这些事件。
示例: 假设您有一个特殊的业务需求,需要在流程执行到某个特定点时记录一些额外的信息。您可以在BPMN模型中定义一个服务任务,并在该服务任务中触发一个自定义事件(如MY_CUSTOM_EVENT),然后在Flowable的事件监听器中捕获并处理这个事件。
请注意,由于Flowable的版本和配置可能会影响事件的具体实现和触发条件,因此上述解释和示例可能需要根据您使用的Flowable版本进行调整。

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

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

相关文章

换手机了怎么恢复微信聊天记录?教你3招实用技巧

随着科技的飞速发展,手机更新换代的速度也越来越快。当我们换上一部新手机时,最头疼的问题之一往往是如何将旧手机中的重要数据,尤其是微信聊天记录,迁移到新手机上。微信聊天记录不仅记录了我们的日常沟通,还承载了许…

踩坑日记 | 记一次流程图问题排查

踩坑日记:记一次流程图问题排查 标签: activiti | 流程 引言 今天排查了一个流程图问题,耗时2个小时终于解决,记录下来 现象 流程审批驳回报错:Unknown property used in expression: ${xxxx} 使用的是 activiti …

SQL注入:基于错误

SQL注入:基于错误 攻击者通过在SQL中插入错误的语法,触发数据库错误,从错误消息中获取有关数据库结构和数据的信息。 1、先决条件 没有进行统一的异常处理,接口访问报错直接响应给客户端 采用jdbcTemplate 操作数据库 PostMa…

[C/C++入门][循环]12、等差数列和等差数列末项计算

等差数列是什么? 想象一下,你获得了一个神奇的糖果盒,他有一个神奇的功能,每次你打开盒子时,里面都会多出同样数量的糖。你只要给里面放上1颗糖,然后想着可以多几颗,比如我希望打开的时候多两颗…

【C++练级之路】【Lv.26】类型转换

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 一、C风格类型转换1.1 隐式类型转换1.2 显式类型转换 二、C风格类型转换2.1 static_cast2.2 dynamic_cast2.3…

Python面试题:如何在 Python 中处理大数据集?

在 Python 中处理大数据集可能面临许多挑战,包括内存限制、计算性能和数据处理效率等。以下是一些处理大数据集的常见方法和技术: 1. 使用高效的数据处理库 1.1 Pandas Pandas 是一个强大的数据分析库,可以处理中等大小的数据集&#xff0…

配置Redis时yml的格式导致报错

报错如下 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:98) at org.springframework.test.context.su…

Unity 优化合集

1️⃣ 贴图优化 1. Read/Write Enable 这个属性勾选后允许你在运行时读取和写入纹理数据,这对于需要实时生成内容或者需要动态修改纹理的场合非常有用但在大部分情况下这是不必要的。如果打开这个属性,会使运行时贴图大小翻倍,内存中会额外…

gptpdf:使用大模型(如 GPT-4o)将 PDF 解析为 markdown。

今天给大家分享一个开源的项目, 使用视觉大语言模型(如 GPT-4o)将 PDF 解析为 markdown。 方法非常简单(只有293行代码),但几乎可以完美地解析排版、数学公式、表格、图片、图表等。 使用 GeneralAgent lib 与 OpenAI API 交互。…

香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力

香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力 一、香橙派AIpro开箱使用体验 1.1香橙派AIpro开箱 拿到板子后第一件事情就是开箱: 开箱后可以看见一个橘子的标识,也就是香橙派了,并且还有四个大字:为AI…

RABBITMQ的本地测试证书生成脚本

由于小程序要求必须访问wss的接口,因此需要将测试环境也切换到https,看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子,把要求输入几个来回,得到这样一个脚本: generate_cer…

双向带头循环链表

一、概念 何为双向:此链表每一个节点的指针域由两部分组成,一个指针指向下一个节点,另一个指针指向上一个节点,并且两头的节点也是如此,头节点的下一个节点是尾节点,尾节点的上一个节点是头节点&#xff1b…

R语言实战——栅格聚合方法(超方便)

今天给大家分享一个栅格聚合方法,使用R语言实现! 1 为什么要做栅格聚合 栅格数据是我们地理学使用最广泛的数据类型之一。所谓栅格聚合其实就是根据栅格数据进行一系列运算得到一个我们想要的数据。 我个人认为,应用最广泛的,可…

notepad++中文出现异体汉字,怎么改正

notepad显示异体字,如何恢复? 比如 “门” 和 “直接” 的"直"字,显示成了 方法 修改字体, 菜单栏选择 Settings(设置),Style Configurator…(语言格式设置…)&#xf…

SSM城镇居民社区再生资源回收系统-计算机毕业设计源码04175

摘 要 本论文介绍了一个基于SSM(Spring Spring MVC MyBatis)技术的城镇居民社区再生资源回收系统的设计与实现。随着社会对环境保护意识的不断提高,再生资源回收成为了一种重要的环保行动。然而,传统的再生资源回收方式存在着信…

[数仓]十二、离线数仓(Atlas元数据管理)

第1章 Atlas入门 1.1 Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 Atlas的具体功能如下: 元数据分类 支持对元数据进行分类管理,例…

springboot3——项目部署

springboot的项目开发完了,怎么样把他放到服务器上或者生产环境上让他运行起来跑起来。就要牵扯到项目部署,打包的方式了。 springboot支持jar和war: 打jar包:默认方式,项目开发完打个jar包,通过命令把jar包起起来就…

刚刚,Claude国内可直连!

刚刚,Claude国内可直连! 大家好!我是科技博主Maynor。今天我们要分享一个激动人心的消息:知名AI助手Claude现在可以在国内直接访问了! 这对于科技爱好者、学生、研究人员和各行各业的专业人士来说都是一个重大利好。…

大模型时代的小红书+马蜂窝:华人团队开发 的AI旅行app

简介 一周前,由红杉投资的硅谷初创公司UTA AI推出了其核心产品Wanderboat AI,这是一个基于GPT-4技术的智能旅行规划工具。 该平台允许用户通过对话交互来明确旅行的偏好和需求,并提供包括目的地、活动和实用建议在内的定制化旅行建议。 Wa…

算法题-字符串

1.C字符串 c提供了一下两种类型的字符串表示形式: c风格字符串c引入的string类类型 1.1C风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的…