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事件会被触发,以记录流程实例的结束。

  1. 流程、案例和阶段管理相关事件

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事件。

  1. 其他事件

CHANGE_TENANT_ID (注意这里可能存在一个小错误,通常事件名称可能不包括中文,这里假设是TENANT_ID_CHANGED或类似的名称): 这个事件与流程实例、任务或其他实体的租户ID变更相关。在支持多租户的环境中,租户ID用于区分不同租户的数据。

示例: 在一个多租户环境中,管理员可能需要将某个流程实例的租户ID从一个租户更改为另一个租户。这种变更会触发TENANT_ID_CHANGED(假设的正确名称)事件,以记录租户ID的变更。

CUSTOM: 这是一个通用的事件类型,用于记录自定义事件。Flowable允许用户定义自己的事件类型,并在流程执行过程中触发这些事件。

示例: 假设您有一个特殊的业务需求,需要在流程执行到某个特定点时记录一些额外的信息。您可以在BPMN模型中定义一个服务任务,并在该服务任务中触发一个自定义事件(如MY_CUSTOM_EVENT),然后在Flowable的事件监听器中捕获并处理这个事件。

请注意,由于Flowable的版本和配置可能会影响事件的具体实现和触发条件,因此上述解释和示例可能需要根据您使用的Flowable版本进行调整。

相关推荐
聂 可 以几秒前
在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)
java·spring boot·redis
长安初雪10 分钟前
Java客户端SpringDataRedis(RedisTemplate使用)
java·redis
aloha_78935 分钟前
B站宋红康JAVA基础视频教程(chapter14数据结构与集合源码)
java·数据结构·spring boot·算法·spring cloud·mybatis
尘浮生44 分钟前
Java项目实战II基于Java+Spring Boot+MySQL的洗衣店订单管理系统(开发文档+源码+数据库)
java·开发语言·数据库·spring boot·mysql·maven·intellij-idea
猿饵块1 小时前
cmake--get_filename_component
java·前端·c++
编程小白煎堆1 小时前
C语言:枚举类型
java·开发语言
王哈哈嘻嘻噜噜1 小时前
c语言中“函数指针”
java·c语言·数据结构
qq_339191141 小时前
spring boot admin集成,springboot2.x集成监控
java·前端·spring boot
苹果酱05672 小时前
通过springcloud gateway优雅的进行springcloud oauth2认证和权限控制
java·开发语言·spring boot·后端·中间件
Sunny_yiyi2 小时前
Gateway--服务网关
java·开发语言·gateway