2017-04-07 31 views
0

名前のリストを作成する単純なフローを作成しました。トランスフォーマーはIllegalArgumentExceptionをスローしてフローを中断します。残念ながら、例外がスローされてもfailureExpressionは機能しません。例外とは一致しません。私は流れと変圧器を含んでいます。ここで成功するまで成功しませんでした表現条件が機能しません

は私の設定です:ここでは

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" 
    xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" 
    xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" xmlns:vm="http://www.mulesoft.org/schema/mule/vm" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://www.mulesoft.org/schema/mule/scripting  
     http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd  
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-current.xsd 
     http://www.mulesoft.org/schema/mule/core 
     http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
     http://www.mulesoft.org/schema/mule/vm 
     http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd 
     http://www.mulesoft.org/schema/mule/http  
     http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd"> 

    <spring:beans> 
     <spring:bean name="transf" class="com.until.sucessful.tests.StringAppenderTransformer" /> 
     <spring:bean id="objectStore" class="org.mule.util.store.SimpleMemoryObjectStore" /> 
    </spring:beans> 

    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration" /> 

    <flow name="untilsuccessfultestsFlow"> 
     <http:listener config-ref="HTTP_Listener_Configuration" path="/mytest" doc:name="HTTP" /> 
     <splitter expression="#[xpath3('//Names')]" doc:name="Splitter" /> 
     <until-successful maxRetries="5" millisBetweenRetries="5000" doc:name="Until Successful" objectStore-ref="objectStore" failureExpression="#[exception is java.lang.IllegalArgumentException)]"> 
      <vm:outbound-endpoint path="process-vm" exchange-pattern="request-response" /> 
     </until-successful> 
     <logger level="INFO" message="After the scoped processor :: #[payload]" doc:name="Logger" /> 
    </flow> 

    <flow name="processorFlow"> 
     <vm:inbound-endpoint path="process-vm" exchange-pattern="request-response" /> 
     <logger level="INFO" message="Before component #[payload]" doc:name="Logger" /> 
     <transformer ref="transf" /> 
    </flow> 
</mule> 

は私の変圧器では、マニュアルによると

public class StringAppenderTransformer extends AbstractTransformer { 

    @Override 
    protected Object doTransform(Object src, String enc) throws TransformerException { 
     String payload = (String) src; 
     List<String> results = new ArrayList<>(); 
     System.out.println("Upon entry in transformer payload is :: " + payload); 
     System.out.println("About to return from transformer payload is :: " + payload.split("\\s+")); 
     int i = 1; 
     for (String args : payload.split("\\s+")) { 
      System.out.println("" + i + " " + args); 
      i++; 
      if (args != null && args.trim().equals("")) { 
       results.add(args); 
      } else { 
       throw new IllegalArgumentException("Break the Flow!!!!!!"); 
      } 

     } 

     return results; 
    } 
} 
+0

エラー表現で使用している式を確認できますか?私は表現が間違っていると思う...正しい方法を使用するためにチェックしてください: - http://stackoverflow.com/questions/20505855/until-successful-failure-expression-that-c​​hecks-for-multiple-types-of-例外 –

+0

式は、オブジェクトが特定の型かどうかをチェックする正しい方法です。私は他のフローでも同じ型式を持ち、動作します。たとえばこれは同じテストで、#[payloadはjava.util.Map]で動作します。式を#[exception!= null]に変更すると、それは動作します。 – BreenDeen

答えて

0

です: https://docs.mulesoft.com/mule-user-guide/v/3.5/until-successful-scope

failureExpression

trueと評価されたときに、1つのルートの処理が失敗したと判断する式を、 と指定します。式が でない場合、例外のみが処理の失敗として扱われます。

したがって、この式を削除するか、MELがtrueを返すようにしてください。 #[exception.causeMatches( "java.lang.IllegalArgumentException")]

+0

私は問題を修正しました。私は間違いを犯しました。 #[groovy:exception instanceof java.lang.IllegalArgumentException] – BreenDeen

+0

あなたの提案をありがとうございました!本当に感謝! – BreenDeen

関連する問題