DataWeave リファレンス

DataWeave バージョン 2 関数はモジュールにパッケージ化されています。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの​「DataWeave の演算子」​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。

コア (​dw::Core​) モジュールの関数は、自動的に DataWeave スクリプトにインポートされます。その他のモジュールを使用するには、DataWeave スクリプトの先頭に次のようなインポートディレクティブを追加することによって、使用するモジュールまたは関数をインポートする必要があります。

  • import dw::core::Strings

  • import camelize, capitalize from dw::core::Strings

  • import * from dw::core::Strings

モジュールのインポート方法は、DataWeave スクリプトから関数をコールする方法に影響します。ディレクティブでインポートする関数を具体的にリストしない場合や ​* from​ を使用して関数モジュールのすべての関数をインポートする場合は、スクリプトから関数をコールするときにモジュールを指定する必要があります。たとえば、次のインポートディレクティブでは String モジュールからインポートする関数が指定されていないため、​pluralize​ 関数をコールするときには ​Strings::pluralize("box")​ のようになります。

変換
%dw 2.0
import dw::core::Strings
output application/json
---
{ 'plural': Strings::pluralize("box") }

次の例では、String モジュールからインポートする特定の関数が指定されているため、​pluralize("box")​ のようにメソッドをコールできます。

変換
%dw 2.0
import pluralize from dw::core::Strings
output application/json
---
{ 'plural': pluralize("box") }

次の例では、String モジュールからすべての関数がインポートされるため、​pluralize("box")​ のようにメソッドをコールできます。

変換
%dw 2.0
import * from dw::core::Strings
output application/json
---
{ 'plural': pluralize("box") }

関数シグネチャー

DataWeave リファレンスの各 DataWeave 関数はその関数シグネチャーによって識別されます。関数では、関数名、0 個以上のパラメーター、戻り値のデータ型が指定されます。

2 個のパラメーターの関数シグネチャーの基本構文:

function(parameterType,parameterType): returnType

たとえば、​contains​ 関数のシグネチャー ​contains(String, String): Boolean​ には 2 個のパラメーターがあり、それぞれのパラメーターで String (文字列) 型の値を受け入れます。関数は Boolean (ブール) 値を返します。

関数シグネチャー内のパラメーターは名前付きパラメーターに​順番に​対応し、名前付きパラメーターは各シグネチャーのパラメーターテーブルで記述されます。たとえば、​contains(String, String): Boolean​ では、​text​ が 1 番目のパラメーターで ​toSearch​ が 2 番目のパラメーターであることがパラメーターテーブルで示されています。

多くの DataWeave 関数が、異なるデータ型を処理するためにオーバーロードされます。関数のバリエーションごとに一意の関数シグネチャーがあります。たとえば、​isEmpty​ は、Array (配列)、String (文字列)、Object (オブジェクト)、または Null 型の入力値をサポートするためにオーバーロードされます。

データ型についての詳細は、​「型システム」​を参照してください。

関数シグネチャー内の型パラメーター

関数シグネチャーには型パラメーターを含めることができます。型パラメーターは一部のプログラミング言語の総称に似ています。たとえば、​contains(Array<T>, Any): Boolean​ の ​Array<T>​ は、DataWeave でサポートされる任意の型 (​T​) の要素を配列に含めることができることを示します。対照的に、特定の型の配列では型 (​Array<String>​、​Array<Number>​、または両方の型 ​Array<String|Number>​) を指定します。

関数シグネチャー内の関数型

関数を引数として渡すことができます。関数シグネチャー内のパラメーターが、​parameterName:Type​ 形式の 1 つ以上のパラメーターを取り、戻り値のデータ型 (​→ ReturnType​) を持つ関数型になっている場合があります。たとえば、関数型 ​(item: T, index: Number) → R)​ は ​map​ 関数 (​map(Array<T>, (item: T, index: Number) → R): Array<R>​) のパラメーター型です。この関数型は任意の型 ​T​ の値と Number (数値) 型の値を受け入れ、​R​ 型の値を返すパラメーターとして機能します。