DataWeave 式の設定

式ビルダー UI または設定 XML からインテグレーションおよび実装の DataWeave 式を設定します。Anypoint Code Builder で式のサンプル出力をプレビューできるように式のデータをモックします。

DataWeave は、メッセージ (ペイロードと属性) や他の Mule イベントデータを処理するコネクタ操作や他のコンポーネントでのデータ変換および式用に MuleSoft が開発したプログラミング言語です。Anypoint Code Builder で実装またはインテグレーションを作成する場合、Mule Runtime Engine のインスタンスで実行される Mule アプリケーションを作成します。

始める前に

DataWeave 言語の基礎を理解します。

DataWeave 式は次を受け入れます。

その他のリソースについては、DataWeave Overviewを参照してください。

式 (fx) 項目を開く

ほとんどのコネクタ操作およびコンポーネントで、DataWeave 式とスクリプトを受け入れる 1 つ以上の項目が提供されます。コンポーネントの設定パネルでは、これらの項目は項目の上の ​fx​ で識別されます。XML では、これらの項目には ​#[]​ マークアップが含まれます。式項目は、DataWeave 関数と Mule イベントデータ (​payload​、​attributes​、​vars​ など) を含め DataWeave 式を受け入れます。

コンポーネントの式項目を開く手順は、次のとおりです。

  1. 実装またはインテグレーションプロジェクトのキャンバスから、式を受け入れるコンポーネントを開きます。

  2. 項目の上にある ​[fx]​ をクリックして、項目を文字列項目から式項目に変更します。次に例を示します。

    Set Variable 内の式 (fx) 項目

    XML では ​fx​ 項目にマークアップ ​#[]​ も表示されるため、式の項であることが示されます。次に例を示します。

    <set-variable variableName="variableName" value="#[]"
                  doc:name="Set variable" doc:id="ndpiap" />
  3. 項目内をクリックすると、コンポーネントの式ビルダーが開きます。次に例を示します。

    Set Variable の式ビルダー

    [Data (データ)]​、​[Functions (関数)]​、​[Preview (プレビュー)]​ タブを使用すると、コンポーネントの式を容易に設定できます。外部ソースのデータで Mule アプリケーションを実行しなくても、式の出力をプレビューできます。

データ構造の確認

ペイロード、属性、Mule 変数を含め Mule イベントのデータ構造を確認するには、​[Data (データ)]​ タブを使用します。サンプルデータが含まれるこのタブは、コンポーネントの ​fx​ 項目の式ビルダーに含まれます。次に例を示します。

[Data (データ)]​ タブ (自動生成データを含む) [Data (データ)]​ タブ (拡張済み)

"式項目の [Data (データ) タブ"]

"式項目の [Data (データ) タブとモック属性"]

自動生成された文字列 (ペイロード例の「dictum」など) はモック値として表示され、​[Preview (プレビュー)] タブ​などにプレビューの出力を生成するために使用されます。例の属性メタデータキーはフローの HTTP Listener 設定から取得されます。

コンポーネント設定パネルの ​[Input/Output (入出力)]​ タブでは、コンポーネントに入力されるときの Mule イベントデータの構造 (​入力​) とコンポーネントから出力される構造 (​出力​) が提供されます。次に例を示します。

"コンポーネントの [Input/Output (入出力) タブ"]

DataWeave 関数のリストの表示およびドキュメントの取得

コンポーネントの ​[Functions (関数)]​ タブ、​fx​ 項目、または XML エディターのオートコンプリートメニューから使用可能な関数のリストを取得する手順は、次のとおりです。

  1. fx​ 式項目を持つコンポーネントを開きます。

    案内については、​式 (fx) 項目を開く​を参照してください。

  2. 使用可能な関数のリストを表示します。

    • 空の ​fx​ 項目からコアモジュールの DataWeave 関数のリストを表示するには、​​の ​fx​ 項目内で Ctrl+Space を押します。次に例を示します。

      Set Variable の式ビルダー
    • String モジュール、Array モジュール、コアモジュールなど、すべての ​DataWeave モジュール​から関数を表示する手順は、次のとおりです。

      1. fx​ 項目をクリックして、式ビルダーを開きます。

      2. 式ビルダーの ​[Functions (関数)]​ タブをクリックします。次に例を示します。

        DataWeave 関数 関数リファレンス

        関数にマウスポインターを置くと、短い説明が表示されます。

        "式項目の [Functions (関数) タブ"]

        [Details (詳細)]​ をクリックすると、完全なドキュメントが表示されます。

        "式項目の [Data (データ) タブ"]

DataWeave 式の出力のプレビュー

キャンバスまたは XML エディターで DataWeave 式の出力をプレビューします。プレビュー機能の動作は、​fx​ (式) 項目のペイロード (​payload​) や Mule 変数 (​vars.somevar​ など) の設定 XML から提供されたサンプルデータに基づきます。

独自のサンプルデータを提供するには、​DataWeave 式のサンプルデータを提供する​を参照してください。

UI での結果のプレビュー

自動生成されたサンプルデータをプレビューするか、独自のサンプルデータをプレビューします。出力は、コンポーネントの式項目の式ビルダーの ​[Preview (プレビュー)]​ タブでプレビューします。

自動生成されたサンプルデータのプレビュー サンプルデータのプレビュー

自動生成されたサンプルデータからの出力結果

"式項目の [Functions (関数) タブ"]

ユーザーが作成したサンプルデータを使用した式からの出力結果

"式項目の [Data (データ) タブ"]

DataWeave セレクターと関数をサンプルデータに適用することができます。想定される構造とデータ型を持つサンプルデータを作成するには、​DataWeave 式のサンプルデータを提供する​を参照してください。

XML エディターからの結果のプレビュー

設定 XML から結果をプレビューするには、DataWeave コード内にカーソルを置いて ​[Show Code Actions (コードアクションを表示)]​ アイコンをクリックし、​[Run Preview (プレビューを実行)]​ をクリックします。

Run Preview (プレビューを実行)

Anypoint Code Builder では、関数の結果を含む新しい ​[Preview Output (出力をプレビュー)]​ タブが開きます。

"[Preview Output (出力をプレビュー)] タブ

DataWeave 式のサンプルデータを提供する

外部ソースから Mule イベントデータを取得するアプリケーションを実行せずに、コンポーネントでローカルに DataWeave 式をテストしてプレビューするには、​fx​ 項目の ​payload​ など、Mule 変数のサンプルデータを追加します。

サンプルデータは次の形式で作成することができます。

  • JSON

  • XML

  • CSV

  • 実際のデータでアプリケーションを実行したときにエラーが発生しないようにするには、式で受け取る実際のデータの基本構造、形式、およびデータ型に一致するサンプルデータを提供します。

  • キャンバスからコンポーネントを再度開くと、サンプルデータは上書きされます。

Mule 変数のサンプルデータを作成する手順は、次のとおりです。

  1. プロジェクトを開きます。

  2. XML エディターで Mule イベント変数 (​payload​ など) にマウスポインターを置きます。次に例を示します。

    設定 XML ファイルのクイック修正
  3. [Quick Fix (クイック修正)]​ をクリックして ​[Quick Fix (クイック修正)]​ メニューを開きます。

  4. [Create sample data for payload (ペイロードのサンプルデータを作成)]​ など、​[Create sample data for ​your-value​ (your-value のサンプルデータを作成)]​ を選択します。次に例を示します。

    設定 XML ファイルから [Quick Fix (クイック修正)] アクションを実行
  5. 開いたメニューで、サンプルデータの形式 (JSON など) を選択します。

    サンプルデータファイル形式のメニュー

    IDE にサンプルデータのタブが開きます。

  6. 選択した形式のコンテンツをサンプルデータファイルに追加します。たとえば、JSON の場合は次のようになります。

    プロジェクトディレクトリのサンプルデータファイル

    ファイル名が ​payload.json​ であることに注意してください。独自のサンプルデータと自動作成されたサンプルデータのファイルはプロジェクトディレクトリ ​src/test/resources​ に保存されます。

    サンプルデータを追加する前に​重要​のメモを参照してください。

    XML エディター内の値にマウスポインターを置くと、サンプルデータの構造、データキー、データ型が表示されます。次に例を示します。

    XML にマウスポインターを置いてサンプルデータを表示
  7. 式ビルダー UI からサンプルデータをプレビューします。

    1. キャンバス UI から、サンプルデータが含まれるコンポーネントをクリックして、その項目の式ビルダーを開きます。

    2. サンプルデータが含まれるコンポーネントの式項目をクリックして、その項目の式ビルダーを開きます。

    3. [Preview (プレビュー)]​ をクリックして、サンプルデータを表示します。次に例を示します。

      式ビルダーでのサンプルデータのプレビュー

      値は変更できます。たとえば、DataWeave セレクターまたは関数を追加します。

      変更したサンプルデータのプレビュー

      この例では ​id​ 値の配列が返されるようになりました。

DataWeave エラーへの対処

DataWeave コードに構文エラーやセマンティックエラーが含まれている場合、Anypoint Code Builder ではエラーが強調表示され、推奨の修正方法が提供されます。次のような問題があります。

DataWeave モジュールで欠落している Import ディレクティブを追加する

多くの DataWeave モジュールでは、式に明示的な ​import​ ディレクティブが必要です。このディレクティブを必要としないモジュールはコアモジュールのみです。

たとえば、この関数が属している String モジュールをインポートしていない場合、関数 ​camelize( "hello world")​ では、​「Unable to resolve the reference of 'camelize' (「camelize」の参照を解決できません)」​というエラーが発生します。

<set-payload value='#[ camelize( "hello world")]' doc:name="Set payload" doc:id="vyvcds" />

式ビルダーではエラーが識別されます。次に例を示します。

「インポートが必要」エラー

この問題を修正するには、クリックして import ディレクティブを自動で追加します。次に例を示します。

「インポートが必要」エラー

この修正の XML は次の例のようになります。

<set-payload value='#[%dw 2.0
import camelize from dw::core::Strings
---
 camelize( "hello world")]' doc:name="Set payload" doc:id="vyvcds" />

未定義関数エラーを修正する

Anypoint Code Builder では未定義の関数が自動的にフラグ付けされます。

たとえば、次のコードでは、DataWeave により ​toUpper​ がエラーとしてフラグ付けされています。

未定義関数エラー

カーソルを関数の上に置くと、DataWeave によりエラーに関する情報が提供されます。

未定義関数エラーに関する情報

この問題を修正する手順は、次のとおりです。

  1. エラーをクリックしてポップアップを表示します。

  2. [Quick Fix (クイック修正)]​、​[Create Function (関数を作成)]​ の順にクリックします。

    Anypoint Code Builder では ​???​ プレースホルダー付きの関数定義が自動的に追加されます。このプレースホルダーにユーザーは関数を定義できます。

    fun toUpper(param0: String) = ???
  3. upper​ 関数を使用して、指定された文字列を大文字で返すように関数を更新します。

    <set-payload value="#[%dw 2.0
    fun toUpper(param0: String) = upper(param0)
    output application/json
    ---
    toUpper('hello')]" doc:name="Set payload" doc:id="xiyfpa" />

DataWeave ライブラリをインポートする

Anypoint Code Builder を使用して、Exchange から Mule アプリケーションに DataWeave ライブラリをインポートします。

DataWeave ライブラリは、DataWeave モジュール、マッピングファイル、およびリソースファイル (JSON、XML、CSV ファイルなど) の再利用可能なパッケージです。

DataWeave ライブラリをインポートする方法は、Exchange から他のアセットをインポートする方法と同じです。

  1. Anypoint Code Builder でインテグレーションプロジェクトを開きます。

  2. コマンドパレットを開きます。

    手順を表示
    • キーボードショートカットを使用する。

      • Mac: Cmd+Shift+p

      • Windows: Ctrl+Shift+p

    • デスクトップ IDE で、​[View (表示)]​ > ​[Command Palette (コマンドパレット)]​ を選択する。

    • クラウド IDE で、​​ (メニュー) アイコンをクリックし、​[View (表示)]​ > ​[Command Palette (コマンドパレット)]​ を選択する。

  3. 「import」​と入力し、次のコマンドを選択します。

    MuleSoft: Import Asset from Exchange
  4. [DataWeave Library (DataWeave ライブラリ)]​ を選択します。

    ライブラリを検索するには、検索語を入力して Enter キーを押します。たとえば、​「DataWeave」​と入力します。

    DataWeave ライブラリの検索
  5. [Assets From Exchange (Exchange のアセット)]​ メニューから DataWeave ライブラリを選択します。

  6. DataWeave ライブラリのバージョンを選択します。

    ステータスバーに進行状況が表示されます。

完了したら、連動関係がプロジェクトに正常に追加されたことを示すメッセージが Anypoint Code Builder に表示されます。