検索条件の移行

Mule 4 では ​filters​ は使用されなくなりました。Mule 3 で提供された検索条件の機能は、​Validation Module​ を使用して実行できます。

検索条件の適用

Mule 3 では、メッセージが絞り込まれたら、その時点で通知せずにフローが終了しました。

Validation Module では条件が一致しないとフローが失敗し、移行されたフローに ​VALIDATION​ エラーを処理させます。

応答を送信するための取得元があるフローが ​VALIDATION​ エラーを処理する必要があり、これを行うには、検証エラーのエラーハンドラーで変数を設定します。次に例を示します。

Mule 4 の例
<flow name="flow">
    ...
    <validation:is-true expression="#[...]"/>
    ...
    <error-handler>
        <on-error-propagate type="MULE:VALIDATION">
            <set-variable variableName="filtered" value="true"/>
        </on-error-propagate>
    </error-handler>
</flow>

次に、取得元のエラー応答ビルダーで set variable を照会し、クライアントに適切な応答を送信できます。たとえば、​http:listener​ の取得元は次のようになります。

Mule 4 の例
<flow name="flow">
    <http:listener config-ref="listenerConfig">
        <http:error-response statusCode="#[if (vars.filtered) 400 else 500]"
                             reasonPhrase="#[if (vars.filtered) 'Bad Request' else 'Internal Server Error']">
            <http:body>#[error.description]</http:body>
        </http:error-response>
    </http:listener>
    ...

    <validation:is-true expression="#[...]"/>
    <error-handler>
        <on-error-propagate type="MULE:VALIDATION">
            <set-variable variableName="filtered" value="true"/>
        </on-error-propagate>
    </error-handler>
</flow>

このケースでは、イベントが絞り込まれる場合は 400 (Bad Request) コードが返されます。

カスタム検索条件または複雑な検索条件の移行

ほとんどの場合、式言語を使用するためにカスタムまたは複雑なネストされた検索条件を移行できます。同じ検索条件を数か所で使用する必要がある場合は、DataWeave スクリプトを外部ファイルに保存することができます。

DataWeave がサポートしない方法でデータを絞り込む場合、Java Module か Scripting Module を使用し、カスタムコードで絞り込みを実行します。