功能介绍
对于复杂的「业务流 + 审批流」的场景,常常需要监听审批任务的变更,进行对应的业务逻辑处理,如审批任务生成后,将数据同步至第三方系统,在第三方系统中给对应的审批人发送消息等。
对于上述场景,可配置「规则事件」,实现在人工任务操作变更后,执行子流程,同时在子流程中配置对应的数据同步逻辑。
则在流程运行时,当有人工任务生成、或审批人进行了对应的审批操作时,均会触发子流程的执行,执行对应的逻辑。
配置步骤
进入流程编辑页,点击「设置」,全局设置中进入「审批规则事件」,按需点击新建事件:
250px|700px|reset

250px|700px|reset

执行动作:调用子流程
选择子流程后,根据子流程的入参要求,完成入参配置
- 变量选择面板中,最后一个分组「系统变量」中,支持选到事件输出的数据,可直接配置成为子流程的入参传递给子流程。
- 事件输出数据的数据格式,可点击展开「事件输出的数据格式」进行查看
250px|700px|reset

250px|700px|reset

配置完成后,点击确定,事件配置完成。流程配置完成并启用后,在流程运行时,当流程进行了相关变更后,将触发子流程的执行。
开发者可通过流程执行历史查看子流程的执行情况:
250px|700px|reset

执行动作:调用函数
- 选择/新建一个函数
- 设置同步 or 异步执行
- 根据已选函数的入参定义,设置传入函数的值
- 可以查看事件输出的数据结构
- 实际发起一个审批实例
- 撤回流程
- 触发撤回流程后的事件
- 执行事件触发的函数
250px|700px|reset

事件说明
(一)审批拒绝后事件
功能说明:当流程审批人“拒绝”审批任务时,即触发执行「审批拒绝后事件」;若同时配置事件及「自定义拒绝流程」节点,则均会执行
配置步骤:
- 添加「审批后拒绝」的事件
- 入口1:流程-设置-规则事件-审批拒绝后
- 入口2:审批节点的「自定义拒绝流程」的引导按钮
- 配置事件发生后的执行动作:子流程或调用函数
以调用子流程为例,选择需要调用的子流程:
250px|700px|reset

设置给子流程传入的具体入参值,完成事件配置:
- 选择子流程后,会自动将子流程的所需要的入参定义渲染到「传入流程的数据」中
- 可以通过指定/引用/公式的方式给子流程的入参进行赋值,也支持引用到事件发送时输出的字段值
注意:当同时开启了「自定义拒绝流程」和「拒绝后事件」时,二者均会在运行时执行
事件输出的数据说明
字段名称 | 类型 | 说明 |
event_id | 文本 | 事件 ID,事件的 key |
instance_id | 浮点数 | 流程执行 ID |
operator_id | 浮点数 | 操作人这一用户记录的 record ID |
task_id | 浮点数 | 事件发生时,所处的任务 ID |
time | 浮点数 | 事件发生时间,毫秒时间戳 |
reason | 文本 | 拒绝原因 |
activity_label | 文本 | 事件发生时,所处的节点的名称 |
zh_cn_text | 文本 | 文本 |
en_us_text | 文本 | 文本 |
extra | 文本 | - |
(二)审批撤销后事件
流程发起人发起流程后,在「我的任务 >> 我发起的」审批任务流中,可以撤销审批流,重新修改申请内容的诉求。
流程配置:
- 在流程编辑页面,点击「设置 >> 人工任务」:选中「允许发起人撤销」
- 可对撤销后事件进行配置,配置步骤请参考
- 允许撤销的申请:
- 尚未被处理的申请
- 所有进行中的申请
运行演示
- 发起人发起流程
- 在「我发起的」流程中撤销对应的流程
- 填写撤销理由
- 原进行中的审批流程状态更改为「已撤销」
- 飞书 bot 也会同步消息通知
250px|700px|reset

事件输出的数据说明
字段名称 | 类型 | 说明 |
event_id | 文本 | 事件 ID,事件的 key |
instance_id | 浮点数 | 流程执行 ID |
operator_id | 浮点数 | 操作人这一用户记录的 record ID |
time | 浮点数 | 事件发生时间,毫秒时间戳 |
reason | 文本 | 撤销原因 |
extra | 文本 | - |
(三)人工任务操作变更后事件
- 流程中存在人工任务变更后均执行,包括人工任务生成、同意/完成、拒绝、加签、转交、撤销等,均执行
事件输出的数据说明
说明:
- 对于新任务生成 new_task
- 对于转交、加签操作,将触发两次事件
- 举例:用户 A 加签了用户 B,
- 用户 A 操作加签完成后,触发一次,type = add_approver,operator_id = 用户 A 的记录 ID
- 加签完成,给用户 B 生成审批任务时,触发一次,type = new task,operator_id = 用户 B 的记录 ID
(四)「退回」至发起人/任一前序审批节点
支持两类退回规则:
- 退回至「仅发起人 」
- 退回至「任一前序审批节点」 :审批人在审批流可操作从当前任务退回至指定的前序人工任务,并重新执行后续全部流程节点。若流程中涉及「数据回滚」,可通过配置「退回后事件」自定义退回后的执行逻辑。
事件输出的数据说明
字段名称 | 类型 | 说明 |
event_id | 文本 | 事件的唯一标识 |
Instance_id | 浮点数 | 触发了本次事件的流程执行 ID |
type | 文本 | new_task:新任务生成 |
time | 浮点数 | 事件发生事件,毫秒级时间戳 |
current_task_id | 浮点数 | 操作「退回」的任务 ,即当前任务任务 ID |
operator_id | 浮点数 | 操作人用户记录的 record ID |
reson | 文本 | 退回原因 |