Back to Nocobase

高级配置

docs/docs/cn/workflow/advanced/options.md

2.1.04.5 KB
Original Source

高级配置

超时设置

2.1.0 版本开始,工作流支持配置超时时间,用于限制单次执行从开始处理到结束的最长耗时。超时设置适合用来防止工作流因为长时间运行、等待人工处理或等待外部回调而一直占用执行资源。

在工作流的新建或编辑弹窗中,展开“高级选项”,可以配置“超时设置”:

可配置项如下:

  • 填写 0 表示不限制超时时间(默认值)。
  • 填写大于 0 的值表示启用超时限制。界面支持选择秒、分钟、小时、天作为单位。
  • 超时时间最长可设置为 180 天。

计时规则

超时时间从工作流第一次进入处理器开始计算。工作流被触发后,如果还在队列中等待调度,或以延迟启动的方式暂存,不会消耗超时时间。

进入处理器后,超时时间会持续计算,包括节点实际运行时间,也包括已经进入等待状态的节点,例如人工处理、审批、延时、等待外部回调等。超时时间不会因为工作流暂停等待用户操作而暂停。

超时截止时间会在本次执行开始时确定。修改工作流的超时设置,只会影响之后开始处理的执行,不会重新计算已经开始的执行。

超时后的处理

如果到达超时时间时本次执行还没有结束,系统会终止该执行:

  • 执行历史状态会变为“已终止”,终止原因会显示为“已超时”。
  • 当前正在运行或等待中的节点任务会被标记为“已终止”。
  • 后续节点不会继续执行。
  • 如果该执行下还有正在运行的子流程执行,子流程也会随父执行一同终止。

例如:

  • 在循环节点执行了超长的循环,循环内的处理都比较耗时,导致整个循环节点的执行时间超过了设定的超时时间,那么当前正在执行的循环节点和内部的节点都会被强制终止,后续的节点将不会继续执行。
  • 在人工处理或审批节点等待了很长时间,超过了设定的超时时间,那么当前正在执行的人工处理节点将被强制终止,后续的节点将不会继续执行,相关的任务也将被取消。

:::info{title=提示} 超时设置是整个工作流执行的全局限制,不是某个节点的单独超时。如果只需要限制 HTTP 请求、JavaScript 脚本等单个节点的等待时间,请使用对应节点自己的超时设置。 :::

:::info{title=提示} 如果需要实现业务上的限时处理,例如“工单 10 分钟内无人处理则更新为超时”,通常应使用延时节点配合并行分支来编排后续处理。全局超时会直接终止本次执行,适合用于兜底保护,不适合承载后续业务分支。 :::

执行模式

工作流基于创建时所选择的触发类型,会以“异步”或“同步”的方式执行。异步模式代表在特定事件触发后会进入工作流的队列,被后台调度逐个执行,而同步模式在触发后不会进入调度队列,而是直接开始执行,并且会在执行完后立即反馈。

数据表事件、操作后事件、自定义操作事件、定时任务事件和审批事件将默认以异步的方式执行,操作前事件则默认以同步的方式执行。其中数据表事件和表单事件两种模式都支持,在创建工作流时可以进行选择:

:::info{title=提示} 同步模式的工作流受限于其模式,内部不能使用会产生“等待”状态的节点,例如“人工处理”等。 :::

自动删除历史记录

当工作流的触发较为频繁时,可以通过配置自动删除历史记录来减少干扰,同时也将降低数据库的存储压力。

同样在工作流的新建和编辑弹窗中可以配置对应流程是否自动删除历史记录:

自动删除可以根据执行结果的状态来进行配置,大部分情况下,建议仅勾选“完成”状态,这样可以保留执行失败的记录,以便后续排查问题。

建议在调试工作流时不要开启自动删除历史记录,以便通过历史记录来检查工作流的执行逻辑是否符合预期。

:::info{title=提示} 删除工作流的历史并不会减少工作流已执行过的计数。 :::