flowable流程引擎中流程执行过程主要的事件解释说明

FlowableEngineEventType 是 Flowable 流程引擎中定义的一组枚举值,用于标识在流程执行过程中发生的各种事件。这些事件对于高级开发流程工程师来说非常重要,因为它们允许开发者监听并响应流程执行的不同阶段和状态变化。下面是一些常见的 FlowableEngineEventType 事件及其含义的解释:

  1. ACTIVITY_COMPLETED
    含义:此事件表示流程中的一个活动(Activity)已经成功执行完毕。在BPMN中,活动可以是用户任务(需要人工参与的任务)、服务任务(执行某种服务操作的任务,如调用外部API)、脚本任务(执行脚本代码的任务)等。当这些活动按照流程定义的要求执行完毕后,会触发ACTIVITY_COMPLETED事件。

应用:可以用于监控流程的执行进度,或者在活动完成后执行特定的后续操作,如更新数据库记录、发送通知等。

  1. ACTIVITY_CANCELLED
    含义:此事件表示流程中的一个活动被取消了。活动的取消可以由多种原因引起,如流程实例的取消、边界事件的触发、或是流程逻辑中的特定条件。当活动被取消时,会触发ACTIVITY_CANCELLED事件。

应用:可以用于清理资源、撤销已执行的操作,或执行一些取消后的补偿逻辑。

  1. ENTITY_CREATED、ENTITY_UPDATED、ENTITY_DELETED
    含义:这组事件分别表示流程引擎中的实体(如流程定义、流程实例、任务、变量等)被创建、更新或删除。实体是Flowable流程引擎中的基本单位,它们代表了流程执行过程中的各种对象。

应用:这些事件对于监控流程引擎的状态变化、实现审计日志、或进行性能优化等场景非常有用。

  1. JOB_EXECUTION_SUCCESS、JOB_EXECUTION_FAILURE
    含义:这些事件与作业(Job)的执行结果相关。在Flowable中,作业用于异步执行某些耗时的操作,如发送邮件、调用外部服务等。当作业成功执行或执行失败时,会分别触发JOB_EXECUTION_SUCCESS和JOB_EXECUTION_FAILURE事件。

应用:可以用于跟踪作业的执行状态,处理作业执行后的结果,或在作业失败时执行重试逻辑。

  1. TASK_ASSIGNED、TASK_COMPLETED、TASK_CREATED、TASK_DELETED
    含义:这组事件与任务(Task)的生命周期相关。任务代表了流程执行过程中需要完成的工作项。当任务被分配给某个用户、创建、完成或删除时,会分别触发这些事件。

应用:这些事件对于任务管理、工作流监控、以及任务完成后的自动化处理非常重要。

  1. PROCESS_STARTED、PROCESS_COMPLETED、PROCESS_CANCELLED
    含义:这组事件与流程实例(Process Instance)的生命周期相关。流程实例是流程定义的一次执行实例。当流程实例开始执行、成功完成或被取消时,会分别触发这些事件。

应用:这些事件对于监控整个流程的执行情况、处理流程完成后的结果、或在流程被取消时执行清理操作非常有用。

  1. VARIABLE_CREATED、VARIABLE_UPDATED、VARIABLE_DELETED
    含义:这组事件与流程变量(Variable)的创建、更新和删除相关。流程变量是流程执行过程中用于存储和传递数据的容器。当流程变量被创建、更新或删除时,会分别触发这些事件。

应用:这些事件对于监控流程数据的变化、实现数据驱动的流程逻辑、或进行数据审计等场景非常有用。

  1. SEQUENCE_FLOW_TAKEN
    含义:此事件表示流程执行已经沿着某个顺序流(Sequence Flow)前进。顺序流是BPMN图中连接各个活动的箭头,它定义了活动之间的执行顺序。当流程执行从一个活动跳转到另一个活动时,会触发SEQUENCE_FLOW_TAKEN事件。

应用:这个事件对于深入理解流程的执行路径、实现基于路径的决策逻辑等场景非常有帮助。

  1. TIMER_FIRED
    含义:此事件表示一个定时器(Timer)已经触发。在BPMN中,可以使用定时器来在指定时间后启动或取消某个活动或流程实例。当定时器的条件满足并触发时,会触发TIMER_FIRED事件。

应用:这个事件对于实现基于时间的流程逻辑、调度任务、或执行定时清理操作等场景非常重要。

  1. ACTIVITY_COMPLETED 示例
    假设你有一个请假流程,其中包含“提交请假申请”和“经理审批”两个用户任务活动。当员工完成“提交请假申请”任务后,会触发ACTIVITY_COMPLETED事件。

BPMN 图示:

用户任务:提交请假申请 -> 序列流 -> 用户任务:经理审批
事件触发:

当员工在系统中提交请假申请并点击“完成”按钮时,ACTIVITY_COMPLETED事件被触发,表示“提交请假申请”活动已完成。
2. ACTIVITY_CANCELLED 示例
考虑上面的请假流程,如果经理在审批前,员工决定撤销请假申请,流程可能会触发一个取消操作,导致“经理审批”任务被取消。

BPMN 图示(简化):

用户任务:提交请假申请 -> 边界取消事件(连接到开始事件或特定取消逻辑)
事件触发:

当员工在系统中找到请假申请并点击“撤销”按钮时,如果流程设计允许,可能会触发一个取消操作,导致“经理审批”任务(如果尚未开始)被取消,此时ACTIVITY_CANCELLED事件可能会被触发(尽管直接取消任务可能不直接触发此事件,但可以通过监听流程实例的取消来间接判断)。
3. JOB_EXECUTION_SUCCESS 示例
在请假流程中,假设有一个服务任务用于在请假申请被批准后自动发送邮件通知员工。这个服务任务可能会异步执行,并作为作业(Job)提交给Flowable的作业管理器。

BPMN 图示:

用户任务:经理审批 -> 服务任务:发送邮件通知
事件触发:

当“发送邮件通知”服务任务作为作业成功执行后,JOB_EXECUTION_SUCCESS事件被触发,表示邮件已成功发送。
4. TASK_CREATED 示例
在流程开始时,通常会创建第一个任务。

BPMN 图示:

开始事件 -> 用户任务:提交请假申请
事件触发:

当流程实例启动时,第一个任务“提交请假申请”被创建,此时TASK_CREATED事件被触发。
5. PROCESS_COMPLETED 示例
当请假流程中的所有活动都成功执行完毕,并且没有待处理的任务或等待的边界事件时,流程实例完成。

BPMN 图示(整个流程):

开始事件 -> 用户任务:提交请假申请 -> 用户任务:经理审批 -> 结束事件
事件触发:

当经理完成审批任务,并且没有其他待处理的活动时,流程实例结束,PROCESS_COMPLETED事件被触发。
注意
对于ACTIVITY_CANCELLED事件,在Flowable中直接取消一个活动可能不直接触发此事件,但你可以通过监听流程实例的取消事件或任务删除事件来间接判断。
示例中的BPMN图示是简化的,实际流程可能包含更多的活动和网关。
Flowable的事件监听机制允许你注册监听器来响应这些事件,并执行自定义逻辑。

注意
关于MULTI_INSTANCE_ACTIVITY_COMPLETED事件,实际上在Flowable的标准FlowableEngineEventType枚举中可能并不直接存在这样的命名。但是,你可以通过监听特定活动的ACTIVITY_COMPLETED事件,并结合流程定义中的多实例逻辑(如并行网关下的多实例服务任务或用户任务),来判断是否是多实例
对于高级开发流程工程师来说,理解和利用这些事件可以让他们构建出更加灵活和强大的流程监控、错误处理和自动化解决方案。通过注册监听器来监听这些事件,开发者可以在流程执行的不同阶段插入自定义逻辑,从而满足复杂的业务需求。

在Flowable流程引擎中,FlowableEngineEventType.MULTI_INSTANCE_ACTIVITY_COMPLETED_WITH_CONDITION 是一个特定的事件类型,它代表了多实例活动在满足特定条件时完成的场景。然而,需要注意的是,根据我目前掌握的信息和Flowable的官方文档,FlowableEngineEventType 枚举中可能并不直接包含名为 MULTI_INSTANCE_ACTIVITY_COMPLETED_WITH_CONDITION 的常量。这可能是因为Flowable的事件类型命名和版本更新导致的变化,或者是因为这个特定的事件类型是通过其他方式(如自定义事件或监听器逻辑)来实现的。

不过,基于Flowable的一般设计模式和参考文章中的信息,我们可以对这个问题进行如下分析和回答:

  1. 事件类型解释
    多实例活动(Multi-Instance Activity):在BPMN(Business Process Model and Notation)中,多实例活动允许一个活动在流程中重复执行多次。这些实例可以并行或顺序执行,具体取决于流程定义。
    完成条件(Completion Condition):多实例活动的完成条件定义了何时所有实例都被视为已完成。这可以是基于实例数量的条件(如所有实例都成功完成),也可以是更复杂的条件(如特定数量的实例成功完成)。
    事件类型:在Flowable中,当多实例活动根据定义的完成条件完成时,引擎会触发一个事件来通知监听器或执行后续逻辑。然而,这个事件的确切名称可能因Flowable的版本和配置而异。
  2. 可能的实现方式
    标准事件类型:虽然FlowableEngineEventType可能不直接包含MULTI_INSTANCE_ACTIVITY_COMPLETED_WITH_CONDITION,但它可能包含其他与多实例活动完成相关的事件类型,如MULTI_INSTANCE_ACTIVITY_COMPLETED。开发者可以通过监听这些事件,并结合流程定义中的完成条件逻辑,来实现类似MULTI_INSTANCE_ACTIVITY_COMPLETED_WITH_CONDITION的功能。
    自定义事件:在某些情况下,开发者可能需要通过自定义事件和监听器来实现更复杂的逻辑。这涉及到在Flowable中注册自定义事件类型,并在流程执行过程中触发这些事件。
  3. 事件处理
    事件监听器:在Flowable中,开发者可以通过实现事件监听器接口来监听流程执行过程中的事件。这些监听器可以响应特定的事件类型,并执行自定义的逻辑。
    事件对象:当事件被触发时,Flowable会创建一个事件对象,并将其传递给监听器。这个事件对象包含了事件的详细信息,如事件类型、发生时间、相关流程实例/活动实例的ID等。对于多实例活动完成事件,事件对象还可能包含与多实例相关的特定信息,如已完成的实例数、当前活动的实例数等。
  4. 结论
    由于FlowableEngineEventType.MULTI_INSTANCE_ACTIVITY_COMPLETED_WITH_CONDITION的确切存在性可能因Flowable的版本和配置而异,因此建议直接查阅Flowable 6.8.0(或您正在使用的版本)的官方文档或源代码以获取最准确的信息。如果文档中未提及此事件类型,您可能需要考虑使用其他相关事件类型或自定义事件来实现您的需求。

此外,请注意,随着Flowable的更新和迭代,其事件类型和API可能会发生变化。因此,建议定期查看官方文档以获取最新信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值