• 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版本进行调整。

  • 相关阅读:
    kvm 创建win11虚拟机
    Complete Binary Tree
    Android简易音乐重构MVVM Java版-使用DiffUtil解决recycleView整体数据刷新性能问题(二十二)
    微信小程序python+nodejs+php+springboot+vue 健身教练私教预约系统
    8.Covector Transformation Rules
    【微搭低代码】美业小程序官方模板练习-绘制原型
    机器翻译和人工翻译的优缺点,该如何利用好机器翻译
    【LeetCode:201. 数字范围按位与 | 位运算】
    SELinux零知识学习十五、SELinux策略语言之客体类别和许可(9)
    数字信号处理——专栏说明篇
  • 原文地址:https://blog.csdn.net/qq_31237581/article/details/140383545