异常
异常节点功能,当工作流运行遇到业务异常时,通过本节点终止流程,并向用户或上游系统返回预设的错误信息和异常码,便于定位问题和后续处理。
核心价值与适用场景:
使用异常节点,是为了在遇到不可恢复的错误时,快速失败并明确告知原因,避免产生脏数据。
|
场景分类 |
示例 |
处理建议 |
|---|---|---|
|
前置校验失败 |
参数缺失、权限不足 (403)、签名错误。 |
必须使用异常节点,阻断后续逻辑。 |
|
外部依赖故障 |
插件API超时、数据库连接失败。 |
使用异常节点,并返回系统级错误码。 |
|
业务逻辑拒绝 |
余额不足、库存为 0。 |
可使用结束节点返回友好提示,或使用异常节点返回业务错误码。 |
配置异常节点
异常信息载体:
{
"code": "ERROR_CODE", // 错误标识,供程序判断
"message": "Human readable error", // 错误描述,供展示
"details": { ... } // (可选) 调试信息
}
配置方式:
- 直接输入:适用于一次性的、简单的错误定义。单击右侧的
可以扩展内容输入框。示例如下:
图1 配置异常节点
- 插入消息模板:适用于企业级标准化的错误管理。当错误文案需要变更时(例如修改错别字),只需修改模板,所有引用该模板的节点会自动更新。
- 前提:需在“资源管理”中预先创建好错误消息模板,具体请参见消息模板。
- 操作:单击
图标,选择预设的异常,并单击“确定”。
相关操作
- 单击
图标,可修改判断名称,修改完成后单击名称旁边的
进行保存。 - 单击
图标,可重命名判断节点名称,复制一个判断节点或删除判断节点;也可以将判断节点连接到结束节点。 - 双击名称下面的节点说明,可修改节点的描述信息。
- 单击
图标,可查看文档信息。
示例
以积分兑换场景为例,业务用户尝试兑换一个价值500积分的商品。系统需要检查用户当前积分,如果积分不足,中断流程并返回拒绝信息;如果积分足,则输出“请兑换商品”。
工作流核心节点如表2所示。
|
节点类型 |
说明 |
示例 |
|---|---|---|
|
开始节点 |
使用系统默认配置query参数,表示用户输入的内容。 |
|
|
输入节点 |
此节点需要让用户输入当前的积分。 输入参数:
|
|
|
判断节点 |
此节点用来判断用户输入的积分是否小于500,小于500则执行IF执行,大于等于500则执行ElSE分支。 |
|
|
异常节点 |
当判断用户积分小于500时,此节点抛出异常信息并终止流程。
异常码填写如下:
{
"code": "POINTS_INSUFFICIENT",
"msg":"您的积分不足,无法兑换该商品"
}
|
|
|
消息节点 |
当判断用户积分小于500时,此节点输出:请兑换商品。 指定回复:请兑换商品 |
|
|
结束节点 |
此节点用于结束流程。 |
|
工作流运行的效果如图3所示。
常见问题
- 异常节点和结束节点有什么区别?
- 结束节点:代表流程成功完成。
- 异常节点:代表流程失败。在API调用模式下,通常会触发非200的状态响应或包含错误码的Payload。
- 异常节点后还能连接其他节点吗?
不能。异常节点是终结节点。一旦流程执行到此节点,实例将立即停止,后续任何节点都不会被执行。
- 如何在调试日志中快速定位异常?
建议在JSON中包含Trace ID或节点名称。例如:"source": "check_balance_node"。这样在查看运行日志时,能一眼定位是哪个环节抛出的异常。
- 应该把所有错误都抛给用户吗?
不建议。对于系统级错误(如数据库连接失败),建议向用户返回友好的模糊提示(如“系统繁忙”),而将详细的堆栈信息(Stack Trace)记录在后台日志中,避免暴露系统安全细节。






