触发事件
当使用流程引擎时,可以通过触发事件来执行特定的操作。假设我们有一个保险理赔处理的流程,我们可以使用流程引擎的触发事件来在特定的阶段执行操作。比如,当理赔流程启动时,我们可以触发一个事件来通知相关人员开始处理理赔申请。当理赔流程完成时,我们可以触发另一个事件来通知申请人理赔处理已完成。触发事件分为两类,业务触发事件与引擎触发事件。
业务触发事件在应用端触发,分为流程级与活动级,流程级触发时机有保存、终止、回退,活动级触发时机有保存、提交、转交、回退、撤回。
引擎触发事件在流程引擎端触发,一共包含流程级、活动级和工作项级三个层次的触发事件。
# 1 业务触发事件
业务触发事件是在应用端触发调用逻辑,具体分为流程级和活动级。
# 1.1 活动级业务事件
# 1.1.1 触发时机
业务事件触发时机包括保存、提交、转交、回退、撤回。 触发时机对应的按含义如下:
触发时机 | 含义 |
---|---|
保存 | 当前活动保存表单数据即触发 |
提交 | 当前活动点击提交按钮即触发 |
回退 | 当前活动点击回退按钮即触发 |
转交 | 当前活动点击转交按钮即触发 |
撤回 | 当前活动点击撤回按钮即触发 |
# 1.1.2 事件动作
业务事件的事件动作,可以选择开发的逻辑流,在保存、提交、转交、回退、撤回时在应用端触发逻辑流调用。
其中逻辑流必须流程事件类型的服务。创建时已经将逻辑流入参出参定义好了,只需要编写业务逻辑即可。
流程事件逻辑流的入参是固定的,分别为:
formData:表单数据数组
processContext:流程上下文信息
在开发流程事件时可以从这两个参数中获取流程及表单数据的相关信息进行对应业务处理。具体可参考服务开发。
# 1.2 流程级业务事件
业务事件触发时机包括保存、终止、回退。 触发时机对应的按含义如下:
触发时机 | 含义 |
---|---|
保存 | 在整个流程流转过程中保存表单数据即触发 |
终止 | 在整个流程流转过程中点击终止按钮即触发 |
回退 | 在整个流程流转过程中点击回退按钮即触发 |
事件动作与活动级业务触发事件一致。
# 2 引擎触发事件
工作项级触发事件是指在工作项运行时需要流程引擎做某种类型的动作。
活动级触发事件是指在活动实例运行到某个阶段所需要流程引擎做某种类型的动作。
流程级触发事件是指流程实例在运行到某个阶段所需要流程引擎做某种类型的动作。
注:自动活动只能设置活动级触发事件,人工活动可以设置工作项级和流程级触发事件。
以人工活动配置为例,在引擎事件tab页即可设置触发事件。
# 2.1 触发时机
- 活动启动前:表示指定的事件在活动实例启动前触发,此时活动实例处于"待启动"状态,并没有工作项产生;
- 活动启动后:表示指定的事件在活动实例启动后触发;
- 活动完成前:表示指定的事件在活动实例完成前触发;
- 活动完成后:表示指定的事件在活动实例完成后触发;
- 活动恢复后:表示指定的事件在活动实例恢复某个挂起后触发;
- 活动挂起后:表示指定的事件在活动实例被挂起后触发;
- 工作项创建后:表示指定的事件在工作项被创建后触发;
- 工作项领取后:表示指定的事件在工作项被参与者领取后触发;
- 工作项取消领取后:表示指定的事件在工作项被参与者取消领取后触发;
- 工作项完成前:表示指定的事件在工作项完成之前被触发;
- 工作项完成后:表示指定的事件在工作项完成之后被触发;
- 工作项恢复后:表示指定的事件在工作项恢复某个挂起后被触发;
- 工作项挂起后:表示指定的事件在工作项被挂起后触发;
- 工作项超时后:表示指定的事件在工作项超时后触发;
- 工作项提醒后:表示指定的事件在工作项的提醒时间到来后触发。如设定的超时时间为2分钟,提醒时间为1分钟,那么从工作项被创建的那一刻开始计时,1分钟后如果工作项没有完成,所定义的事件就触发。
# 2.2 事件动作
事件动作是指触发事件被触发时,业务流程引擎触发的动作。支持EOS服务、逻辑流和运算逻辑。
# 2.2.1 EOS服务
如果开发的逻辑流与流程引擎不在一个进程,则需要使用EOS服务调用。
具体配置动作、远程URL、参数,如下表所示。
配置项 | 配置说明 |
---|---|
动作 | 选择一个定义好的逻辑流。 |
远程URL | 可以编辑动作的url,用于添加远程请求。 |
参数配置表 | 服务需要的参数,不能修改参数个数以及数据类型,可以通过刷新更新参数列表。 |
注:如果勾选了"回填相关数据"复选框,表示调用服务后的相关参数以及返回值将加入到相关数据中去。
# 2.2.2 逻辑流
如果开发的逻辑流与流程引擎在一个进程,则需要使用逻辑流调用。
具体配置动作、参数,如下表所示。
配置项 | 配置说明 |
---|---|
动作 | 选择一个定义好的逻辑流。 |
参数配置表 | 服务需要的参数,不能修改参数个数以及数据类型,可以通过刷新更新参数列表。 |
# 2.2.3 运算逻辑
如果开发的运算逻辑与流程引擎在一个进程,则需要使用运算逻辑调用。
具体配置动作、参数,如下表所示。
配置项 | 配置说明 |
---|---|
动作 | 选择一个定义好的运算逻辑,基础构件库中所有的构件都是运算构件。 |
参数配置表 | 服务需要的参数,不能修改参数个数以及数据类型,可以通过刷新更新参数列表。 |
# 2.3 调用方式
调用方式分为同步和异步。
- 同步:业务流程引擎等待触发事件调用的操作执行完之后再运行。
- 异步:业务流程引擎无需等待触发事件调用的操作执行完就可以直接运行。
# 2.4 事务策略
业务流程引擎触发事件动作时有两种事务策略,Suspend和Join。
- Suspend:被触发的事件与业务流程引擎是分开的事务。事务由触发事件动作单独控制。
- Join:被触发的事件与业务流程引擎是一个事务,事务由业务流程引擎控制。
# 2.5 异常处理
异常处理分为忽略异常和回滚异常。
- 忽略异常:当事件动作执行过程中产生异常时,业务流程引擎继续执行后面的操作,不把事务回滚,异常在日志中进行记录。
- 回滚异常:当事件动作执行过程中产生异常时,业务流程引擎回滚事务,异常在日志中进行记录。
# 3 回退触发事件
回退是指当该活动被回退的时候会触发的动作,只有当调用BPS构件库中的backActivity方法回退到本活动的时候才触发。在人工活动、自动活动、子流程活动、EOS服务活动、REST服务活动的属性设置中均有"回退"Tab页,它们在意义和设置上基本一致。
回退动作表示的是当该活动被回退的时候所需要做的动作,它可以是一个EOS服务、一个逻辑流,或一个运算逻辑。
回退的操作步骤可参考上面引擎触发事件。