You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataPower并行后端调用的On-Error Action与Error Rule配置问题

并行双后端调用全失败时触发Error Rule的解决办法

核心逻辑

默认流程不会自动因两次并行调用失败触发Error Rule,必须手动标记全局失败状态并主动抛出错误,让Error Rule能捕获到触发条件。

具体操作步骤

  • 标记每个后端的调用状态
    在每个并行调用的results action环节,新增自定义变量记录调用结果,比如backend1_status和backend2_status,成功赋值success,失败赋值fail。确保变量在整个请求流程的作用域内可访问。

  • 在Response XSL中判断全局失败并抛错
    在Response XSL里加入判断逻辑:当backend1_status和backend2_status同时为fail时,使用dp:throw-error函数抛出符合Error Rule匹配条件的错误,示例代码如下:

    <xsl:if test="$backend1_status = 'fail' and $backend2_status = 'fail'">
        <dp:throw-error code="500" message="All backends failed to respond"/>
    </xsl:if>
    
  • 调整On-Error配置
    保留原流程中单个调用失败时的on-error(continue),确保部分成功场景正常流转;无需在Response XSL后设置on-error(abort),因为dp:throw-error会直接中断当前流程并触发Error Rule。

  • 匹配Error Rule的触发条件
    配置你的Error Rule,使其能匹配到刚才抛出的自定义错误(比如匹配错误代码500或特定错误消息),这样就能在双后端全失败时触发对应的错误处理逻辑。

验证要点

测试时模拟两个后端同时返回失败的场景,检查错误是否被正确抛出,且Error Rule是否正常执行对应的处理流程。

内容的提问来源于stack exchange,提问作者Mano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:46:06