更新时间:2026-03-18 GMT+08:00
分享

异常

异常节点功能,当工作流运行遇到业务异常时,通过本节点终止流程,并向用户或上游系统返回预设的错误信息和异常码,便于定位问题和后续处理。

核心价值与适用场景:

使用异常节点,是为了在遇不可恢复的错误时,快速失败并明确告知原因,避免产生脏数据。

表1 异常节点使用场景

场景分类

示例

处理建议

前置校验失败

参数缺失、权限不足 (403)、签名错误。

必须使用异常节点,阻断后续逻辑。

外部依赖故障

插件API超时、数据库连接失败。

使用异常节点,并返回系统级错误码。

业务逻辑拒绝

余额不足、库存为 0。

可使用结束节点返回友好提示,或使用异常节点返回业务错误码。

配置异常节点

异常信息载体:

异常节点要求输出内容必须符合JSON格式。这确保了前端或上游系统能够通过程序解析错误原因,而不仅仅是弹出一个文本框。推荐的JSON结构如下:
{ 
  "code": "ERROR_CODE",     // 错误标识,供程序判断 
  "message": "Human readable error", // 错误描述,供展示 
  "details": { ... }        // (可选) 调试信息 
}

配置方式:

  • 直接输入:适用于一次性的、简单的错误定义。单击右侧的可以扩展内容输入框。示例如下:
    图1 配置异常节点
  • 插入消息模板:适用于企业级标准化的错误管理。当错误文案需要变更时(例如修改错别字),只需修改模板,所有引用该模板的节点会自动更新。
    • 前提:需在“资源管理”中预先创建好错误消息模板,具体请参见消息模板
    • 操作:单击图标,选择预设的异常,并单击“确定”。

相关操作

  • 单击图标,可修改判断名称,修改完成后单击名称旁边的进行保存。
  • 单击图标,可重命名判断节点名称,复制一个判断节点或删除判断节点;也可以将判断节点连接到结束节点。
  • 双击名称下面的节点说明,可修改节点的描述信息。
  • 单击图标,可查看文档信息。

示例

以积分兑换场景为例,业务用户尝试兑换一个价值500积分的商品。系统需要检查用户当前积分,如果积分不足,中断流程并返回拒绝信息;如果积分足,则输出“请兑换商品”。

图2 工作流

工作流核心节点如表2所示。

表2 节点配置说明

节点类型

说明

示例

开始节点

使用系统默认配置query参数,表示用户输入的内容。

输入节点

此节点需要让用户输入当前的积分。

输入参数

  • 参数名称:user_points
  • 参数类型:Ingeter
  • 描述:请输入您的积分。

判断节点

此节点用来判断用户输入的积分是否小于500,小于500则执行IF执行,大于等于500则执行ElSE分支。

异常节点

当判断用户积分小于500时,此节点抛出异常信息并终止流程。

异常码填写如下:
{ 
  "code": "POINTS_INSUFFICIENT", 
  "msg":"您的积分不足,无法兑换该商品"
 }

消息节点

当判断用户积分小于500时,此节点输出:请兑换商品。

指定回复:请兑换商品

结束节点

此节点用于结束流程。

工作流运行的效果如图3所示。

图3 效果示例

常见问题

  • 异常节点和结束节点有什么区别?
    • 结束节点:代表流程成功完成。
    • 异常节点:代表流程失败。在API调用模式下,通常会触发非200的状态响应或包含错误码的Payload。
  • 异常节点后还能连接其他节点吗?

    不能。异常节点是终结节点。一旦流程执行到此节点,实例将立即停止,后续任何节点都不会被执行。

  • 如何在调试日志中快速定位异常?

    建议在JSON中包含Trace ID或节点名称。例如:"source": "check_balance_node"。这样在查看运行日志时,能一眼定位是哪个环节抛出的异常。

  • 应该把所有错误都抛给用户吗?

    不建议。对于系统级错误(如数据库连接失败),建议向用户返回友好的模糊提示(如“系统繁忙”),而将详细的堆栈信息(Stack Trace)记录在后台日志中,避免暴露系统安全细节。

相关文档