- 简介
- 入门指南
- 使用 BPMN 进行流程建模
- 使用 Case Management 进行流程建模
- 使用 Flow 进行流程建模
- 流程实施
- 流程运营
- 流程监控
- 流程优化
- 参考信息
流中的每个节点错误句柄,用于将节点故障路由到单独的路径,并通过变量公开错误详细信息。
内容概览
流中的错误处理是一种基于节点的机制,可用于控制节点在执行期间发生故障时会发生的情况。默认情况下,发生故障的节点会停止整个流程。您可以通过连接错误句柄来覆盖此设置,将故障路由到单独的路径,您可以在其中检查错误并对其做出响应。
工作方式
每个支持错误处理的节点都有一个错误句柄,这是节点右下角的输出连接器,会在节点失败时激活。并非所有节点都支持错误处理;只有带有supportsErrorHandling标志的字符串才会公开错误句柄。
当连接到错误句柄的节点发生故障时,系统会路由到错误路径,执行该流程,而不会停止流程。错误详细信息将作为变量提供,您可以在下游节点中读取。
当没有连接错误句柄的节点发生故障时,整个流程会立即失败。错误将在执行面板中的“事件”选项卡下显示。
HTTP 请求重试次数
HTTP 请求节点支持可配置重试。配置了重试次数后,节点会在触发错误句柄之前尝试请求指定的次数。如果所有重试都失败且已连接错误句柄,则执行会路由到错误路径。如果未连接错误句柄,则流程将失败。
配置错误句柄
通过将节点的错误句柄连接器(右下角)连接到画布上的另一个节点,即可连接错误句柄。没有错误句柄连接器的节点不支持错误处理,因此任何故障都会停止流程。
错误对象
当已连接错误句柄但节点发生故障时,错误详细信息以$vars.<nodeName>.error形式提供。该对象具有以下字段:
code
识别故障类型的计算机可读错误代码。
消息
有关问题所在的人类可读描述。使用此选项来记录或显示错误信息。
详细信息
故障的详细技术描述,包括堆栈追踪记录或特定于服务的信息(如果有)。
类别
错误类别,对相关错误类型进行分组。
状态
与错误关联的 HTTP 状态代码。针对与 HTTP 相关的故障填充(例如, 404或500 )。
错误对象仅在错误路径上可用。在成功路径上访问$vars.<nodeName>.error将返回“未定义”。
实际示例
此示例使用“HTTP 请求”节点调用外部 API,并在记录失败的错误路径上使用“脚本”节点。
“HTTP 请求”节点将放置在画布上,并配置目标 URL。其错误句柄连接到“脚本”节点。脚本节点按如下方式读取错误对象:
const error = $vars.httpRequest1.error;
return {
failed: true,
reason: error.message,
httpStatus: error.status,
detail: error.detail
};
const error = $vars.httpRequest1.error;
return {
failed: true,
reason: error.message,
httpStatus: error.status,
detail: error.detail
};
当 HTTP 请求成功时,系统将遵循成功路径执行并跳过脚本节点。当请求失败时(在配置的任何重试后),执行会路由到“脚本”节点,该节点会接收完整的错误对象。
模式
这些是处理、记录、重试和升级错误的常见方法。它们全部基于上述每个节点的错误句柄构建:已连接的错误句柄将故障路由到单独的路径,其中的错误对象可在$vars.<node>.error中找到。
记录并继续
此模式适用于非关键操作,即即使一个步骤失败,工作流也应继续运行。节点的错误句柄连接到记录错误的脚本节点,然后重新加入主路径以便继续执行。
// Script node on the error path
console.log('Non-critical step failed:', $vars.step1.error.message);
return null; // downstream nodes handle null gracefully
// Script node on the error path
console.log('Non-critical step failed:', $vars.step1.error.message);
return null; // downstream nodes handle null gracefully
带限制重试次数
此模式适用于可能出现的暂时性故障,例如网络超时、速率限制或服务暂时中断。对于“HTTP 请求”节点,内置重试计数会在触发错误句柄之前重新尝试请求,并且只有最终失败才会路由到错误路径。重试设置仅适用于幂等操作。
警示并终止
此模式适用于需要人工注意的不可恢复错误。在错误路径上,系统会先发送通知(通过 HTTP 请求或集成节点),然后会发送状态为“终止”节点的Failed和描述性消息(例如$vars.step1.error.message ,结束工作流。
回退值
此模式适用于可能失败但具有安全默认值的操作,该默认值允许工作流有意义地继续进行。在错误路径上,脚本节点将预期输出设置为默认值,然后重新加入主路径,就像操作已成功一样。
常见错误
- 以静默方式吞吐错误—即使工作流继续运行,也应始终记录错误路径上的错误。静默故障以后难以诊断。
- 重试非幂等操作—具有副作用的操作(写入数据、发送消息)重试可能会产生重复项。重试设置仅适用于可以多次运行而不会创建重复项的操作。
- 保持错误句柄处于未连接状态— 未连接错误句柄的节点出现错误时,整个流程将失败。发生故障后应继续运行的工作流需要已连接的错误路径。