2016-05-31 1 views
0

muleのcatch-exception-strategyからどのように例外を元に戻すことができますか。Muleはcatchexceptionから例外を再開します

以下のフローで試してみましたが、 "flowdemo"エラー処理の例外後、mdemoflowのエラー処理には行きません。 flow-refの後にあるロガーを実行します。フロー(未サブフロー)であると(だから、デモの流れ自体によって処理されている)は、独自のキャッチ例外Stratergyを持って

<mule ....> 
    <sub-flow name="exceFlow"> 
     <logger level="ERROR" doc:name="Logger"/> 
     <expression-component doc:name="Expression"><![CDATA[throw new java.lang.IllegalArgumentException('bad arg');]]></expression-component> 
     <validation:is-true expression="false" doc:name="Validation"/> 
     <scripting:component doc:name="Script"> 
      <scripting:script engine="Groovy"><![CDATA[throw new java.lang.IllegalArgumentException('bad arg')]]></scripting:script> 
     </scripting:component> 
     <logger level="INFO" doc:name="Logger"/> 
    </sub-flow> 
    <flow name="flowdemo" processingStrategy="synchronous"> 
     <expression-component doc:name="Expression"><![CDATA[flowVars.dummy = flowVars.fake.test]]></expression-component> 
     <catch-exception-strategy doc:name="Catch Exception Strategy" > 
      <flow-ref name="exceFlow" doc:name="Flow Reference"/> 
     </catch-exception-strategy> 
    </flow> 
    <flow name="mdemoFlow" processingStrategy="synchronous"> 
     <poll doc:name="Poll"> 
      <fixed-frequency-scheduler frequency="3" timeUnit="MINUTES"/> 
      <logger level="INFO" doc:name="Logger"/> 
     </poll> 
     <flow-ref name="flowdemo" doc:name="flowdemo"/> 
     <logger level="INFO" doc:name="Logger"/> 
     <catch-exception-strategy doc:name="Catch Exception Strategy"> 
      <logger message="test logging in error" level="ERROR" doc:name="Logger"/> 
      <logger level="INFO" doc:name="Logger"/> 
     </catch-exception-strategy> 
    </flow> 
</mule> 

答えて

0

flowdemo。メインフロー(mdemoFlow)からスレッドが開始され、flowRef経由で他のフローを呼び出しています。したがって、mainFlowに戻って、(フロー処理戦略に関係なく)スレッドを完了します。メインフロー自体ですべての例外を処理したい場合。以下のconfig(flowflowをサブフローにする)を使用してください。デフォルトでは、関連するサブフローで発生する例外はすべてメインフローに戻り、同じフローを処理します。

<sub-flow name="flowdemo" > 
    <expression-component doc:name="Expression"><![CDATA[flowVars.dummy = flowVars.fake.test]]></expression-component> 
</sub-flow> 
<flow name="mdemoFlow" processingStrategy="synchronous"> 
    <poll doc:name="Poll"> 
     <fixed-frequency-scheduler frequency="3" timeUnit="MINUTES"/> 
     <logger level="INFO" doc:name="Logger"/> 
    </poll> 
    <flow-ref name="flowdemo" doc:name="flowdemo"/> 
    <logger level="INFO" doc:name="Logger" message="***final logger***"/> 
    <catch-exception-strategy doc:name="Catch Exception Strategy"> 
     <logger message="test logging in error" level="ERROR" doc:name="Logger"/> 
     <logger level="INFO" doc:name="Logger"/> 
     <flow-ref name="exceFlow" doc:name="Flow Reference"/> 
    </catch-exception-strategy> 
</flow> 
<sub-flow name="exceFlow"> 
    <logger level="ERROR" doc:name="Logger"/> 
    <logger level="INFO" doc:name="Logger"/> 
</sub-flow> 

例外的な戦略をグローバルにする。グローバル例外戦略を使用して、参照経由で同じ例外を呼び出すことができます。Exception strategy。詳細はリンクを参照してくださいhttps://docs.mulesoft.com/mule-user-guide/v/3.7/reference-exception-strategy

関連する問題