Flex Gateway新着情報
Governance新着情報
Monitoring API Managerメッセージコンテンツを評価する一連の DataWeave 式に従ってフローで動的にメッセージをルーティングします。
各式は、異なるルーティングオプションに関連付けられます。これにより、大部分のプログラミング言語の if
/then
/else
コードブロックのような条件付き処理がフローに追加されます。
Choice ルーターが実行するルートは 1 つのみです。つまり、最初に true
と評価された式がルートの実行をトリガーし、他のルートはチェックされません。どの式も true
でない場合は、デフォルトルートが実行されます。
Choice ルーターを設定するには、1 つ以上の評価する条件と、いずれかの条件が true
と評価された場合に実行されるメッセージプロセッサーを指定します。さらに、定義された条件がいずれも true
でない場合に実行されるデフォルトルートを設定します。
このコンポーネントは、次の XML 構造をサポートします。
<choice doc:name="Choice" doc:id="qwolaa" tracking:enable-default-events="true" >
<when expression=${expressionToEvaluate}> (1)
<!-- Message processors --> (2)
</when>
<otherwise>
<!-- Message processors --> (3)
</otherwise>
</choice>
1 | expression 属性には、評価する条件が含まれています。 |
2 | expression が true と評価された場合に実行される任意の数のメッセージプロセッサーを追加します。 |
3 | 条件がいずれも true と評価されなかった場合に実行される任意の数のメッセージプロセッサーを追加します。 |
Choice (<choice/>
) 属性は UI および XML で設定できます。
属性名 | 属性 XML | 説明 |
---|---|---|
Choice (選択肢) (デフォルト) |
|
キャンバスに表示されるコンポーネントの編集可能な名前。 |
なし |
|
コンポーネントの自動生成された識別子。 |
Choice (<choice/>
) には次の子要素があります。
子要素 | 説明 |
---|---|
|
Mule イベントを処理する埋め込みコンポーネントを実行する前に照合する条件を指定するための子要素。1 つ以上の |
|
|
子要素 <when/>
には次の属性があります。
属性名 | 属性 XML | 説明 |
---|---|---|
Expression (式) |
|
入力を評価するために使用する DataWeave 式。式が |
デフォルトでは、Choice ルーターは設定された DataWeave 式が true
に評価されると実行される 1 つのルートオプションと、既存ルートのどの式も true
に評価されなかったときに実行されるデフォルトルートを持ちます。複数の条件を評価して、成立した条件に応じて異なる操作を実行する必要がある場合は、ルートを追加してください。
新しいルートを追加する手順は、次のとおりです。
<choice/>
要素内に <when/>
要素を追加します。
expression
属性を設定して、このルートを実行する条件を定義します。
次の例では、language
クエリパラメーターを受け取る HTTP リスナーと、このパラメーターを評価して値に応じて対応するルートを実行する Choice ルーターを設定します。
<mule 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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="content-based-routingFlow" >
<http:listener config-ref="HTTP_Listener_config" path="/" doc:name="Listener" />
<set-variable variableName="language" value="#[attributes.queryParams.language]" doc:name="Set Variable" />
<!-- START OF CHOICE BLOCK-->
<choice doc:name="Choice" >
<when expression="#[vars.language == 'Spanish']" >
<set-payload value="Hola!" doc:name="Reply in Spanish" />
</when>
<when expression="#[vars.language == 'French']" >
<set-payload value="Bonjour!" doc:name="Reply in French" />
</when>
<otherwise>
<flow-ref name="reply-in-default-languageSub_Flow" doc:name="reply-in-default-languageSub_Flow" />
</otherwise>
</choice>
<!-- END OF CHOICE BLOCK-->
<logger level="INFO" doc:name="Log the reply" message='#["The reply $(payload) means hello in $(vars.language)" ]'/>
</flow>
<sub-flow name="reply-in-default-languageSub_Flow" >
<logger level="INFO" doc:name="Logger" message="No language specified. Using English as a default. "/>
<set-variable variableName="language" value="English" doc:name="Set Language to English" />
<set-payload value="Hello!" doc:name="Reply in English" />
</sub-flow>
</mule>