为什么我无法在子流中捕获错误?

时间:2020-05-29 10:10:45

标签: mule mule-studio mulesoft mule4

在Main api中,我称为子流。我已经在主流和子流中定义了错误处理程序。(我的情况很复杂) 这是我正在尝试的简单流程设计; 从主流中,在异步作用域内,我将其称为子流。 Mainflow本身具有错误处理程序。 在报告子流中,我调用另一个子流,这将引发403错误。 我认为可以在报告子流中处理该问题。所以我用过,错误继续。我在那里使用了日志中介器,以查看它是否被执行。 但事实并非如此。 相反,从主流程中,在主错误处理程序中登录“ 我尚未定义任何全局错误处理程序。 为什么呢?

主流

<flow name="post:\notifications:raml-config">
.................
                <async doc:name="Async">
                    <try doc:name="Try">
                        <flow-ref doc:name="Call-Reporting-subFlow
                            name="reporting-subflow" />
                        <error-handler >
                            <on-error-propagate enableNotifications="true" logException="true" doc:name="On Error Propagate" doc:id="743fc7cb-38d4-4a0c-ab36-9105645ce710" >
                                <logger level="INFO" doc:name="Logger" doc:id="5d18eb33-780e-4353-b65f-b26eec88612a" message="in main errror handler"/>

............
</flow>

子流(报告流)

<sub-flow name-"reporting-subflow">
<try doc:name="Try"  >
            <flow-ref doc:name="getcontracts"  name="get-details-subflow" />
            <error-handler >
                <on-error-continue enableNotifications="true" logException="true" doc:name="On Error Continue" type="HTTP:FORBIDDEN">
                        <logger level="INFO" doc:name="Logger" message="GOT 403 error"/>
                <flow-ref doc:name="gettoken"  name="getToken-subflow" />
</error-handler>
        </try>
</sub-flow>

1 个答案:

答案 0 :(得分:0)

可能是以下原因之一:

  1. 我们不能为子流定义错误处理,我们只能这样做 用于私有流和正常流。
  2. 即使主流程有错误处理程序,内部引用的流程 Async 范围不会由此错误处理程序管理。解决 这:
    • 使异步错误处理程序中引用的流作为a
      私有流并在流级别定义错误处理
    • 或在应用程序级别定义全局错误处理。