更新时间:2026-06-10 GMT+08:00
分享

异常

异常节点功能,当工作流运行遇到业务异常时,通过本节点中断当前分支逻辑并抛出异常信息,最终由结束节点完成流程的终止,便于定位问题和后续处理。

核心价值与适用场景:

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

表1 异常节点使用场景

场景分类

示例

处理建议

前置校验失败

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

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

外部依赖故障

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

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

业务逻辑拒绝

余额不足、库存为 0。

使用异常节点返回业务错误码,配合消息节点提供用户友好的提示信息。

配置异常节点

配置异常节点的详细参数说明如下:

异常节点会中断当前分支逻辑并抛出异常信息,但仍需连接结束节点来完成流程的结束。未连接结束节点将导致流程无法正常终止。

异常信息载体

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

配置方式

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

相关操作

  • 单击节点名称,可修改节点名称。
  • 单击图标,可对节点进行重命名、复制、删除或更换节点;也可以将节点连接到结束节点。
  • 单击图标,可对节点进行测试。
  • 单击名称下面的节点说明,可修改节点的描述信息。
  • 单击图标,可查看文档信息。

示例

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

图2 工作流

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

表2 节点配置说明

节点类型

说明

示例

开始节点

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

输入节点

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

输入参数

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

判断节点

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

异常节点

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

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

消息节点

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

指定回复:请兑换商品

结束节点

此节点用于结束流程。

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

图3 效果示例

常见问题

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

    需要。异常节点会中断当前分支逻辑并抛出异常信息,但仍需连接结束节点来完成流程的结束。未连接结束节点将导致流程无法正常终止。

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

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

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

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

相关文档