Dataweave式を動的に実行するDynamic Evaluate

Munitについての使い方を何回かにわたりお伝えしましたが、またMuleコンポーネントの使い方について戻っていきたいと思います。

スポンサーリンク

今回使うコンポーネント

コンポーネントアイコン・領域用途
Dynamic EvaluateファイルからDataweave式を読み込み実行する

基本的な使い方

Dynamic Evaluateの基本的な使い方は以下の通りです。

  1. dwlファイルを作成し、resourcesに配置
  2. FileのReadコンポーネントからdwlファイル読み込み、任意の変数に格納
  3. Dynamic EvaluateコンポーネントでDataweave式を読み込み実行

まず、Dynamic Evaluateを使用するためにdwlファイルを作成します。今回は以下の内容のdwlファイルを作成します。

%dw 2.0
output application/json
---
{
    "国": "日本",
    "言語": "日本語",
    "あいさつ": "こんにちは"
}

作成したdwlファイルをresources直下に配置します。

FileのReadコンポーネントでファイルの読み込みを行います。File Pathには先ほどresources直下に配置したdwlファイルを設定します。ファイルで読み込んだ内容は変数に格納するために、Target Variableに変数を設定します。

Readコンポーネントの次にDynamic Evaluateを配置します。Expressionには先ほどのReadで読み込んだ内容を設定します。

ちなみに、ExpressionはBinary型を設定することになるため、直接Dataweave式を記載するとエラーになってしまいます。FileのReadコンポーネントとセットで使うものと覚えておきましょう。

まずはシンプルな感じでフローを作成してみました。

フローを実行すると、このように記載したDataweave式が実行されていることが分かります。

どういう時に使う?

Dynamic Evaluateコンポーネントで実現できることはDataweave式の切り替えです。Dataweave式には様々なロジックを組み込むことができるため、フローよりも柔軟で小回りの効く実装ができるようになります。

上記のフローを発展させた形として、パラメータで国を指定して、ファイル名が国の名前と一致するファイルを読み込んでDataweave式を実行するという形にすれば、分岐を作らずに動的にdwlファイルを切り替えることができます。

上記の例のように、出力形式を切り替えるときや、バリデーションや変換ルールの異なる使用を切り替えることが可能になるため、フローがよりスッキリする形になるかと思います。

MuleSoft
スポンサーリンク

コメント