Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerDataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、DataWeave バージョン 1.2 のドキュメントを参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
DataWeave では、次の形式が入力および出力としてサポートされています。
| MIME タイプ | ID | サポートされる形式 | 
|---|---|---|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
DataWeave 式をテストするための DataWeave 形式 (dw)  | 
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
|
  | 
  | 
DataWeave は、メモリに読み込むか、ローカルストレージでインデックス付けすることで入力データ全体を読み取ることができます。データ形式によっては、入力をストリーミングし、データを分割して順次読み取ることもできます。インデックス付き読み取り戦略では、大きなファイルを処理するときのメモリ不足の問題を回避するメカニズムを実装します。ストリーミング戦略ではパフォーマンスを改善できますが、読み取られてメモリに保存されているファイルの部分にしかアクセスできないため、ファイルアクセスは順次アクセスに限られます (ランダムアクセスは許可されません)。
| 読み取り戦略 | 説明 | サポートされる形式 | 
|---|---|---|
メモリ内  | 
この戦略ではドキュメント全体を解析してメモリに読み込み、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。  | 
この戦略ではサポートされるすべての形式を読み取ることができます。  | 
インデックス付き  | 
この戦略ではドキュメント全体を解析し、ディスクスペースを使用して大きなファイルのメモリ不足の問題を回避して、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。 サイズが 1.5 MB を超える  詳細は、「DataWeave のインデックス付きリーダー」を参照してください。  | 
  | 
ストリーミング  | 
この戦略では、入力ドキュメントを小さな項目に分割し、データに順次アクセスして、現在の項目をメモリ内に保存します。DataWeave セレクターは、読み取られているファイルの部分にのみアクセスできます。 詳細は、「DataWeave のストリーミング」を参照してください。  | 
  | 
場合によって、形式固有のプロパティを使用して、形式の各側面を変更または指定することが必要になることがあります。たとえば、separator (または区切り文字) など、CSV ファイルで使用する、CSV の入力および出力プロパティを指定できます。
Cobol コピーブックでは、schemaPath プロパティを使用して、スキーマファイルへのパスを指定する必要があります。
Mule アプリケーション内の特定のコンポーネントの MIME タイプ (outputMimeType) 属性にリーダープロパティを追加できます。Listeners および Read 操作ではこの設定が受け入れられます。たとえば、この新規ファイルリスナーの例では、CSV 入力ファイルの , 区切り文字を識別します。
<file:listener doc:name="On New File" config-ref="File_Config" outputMimeType='application/csv; separator=","'>
  <scheduling-strategy >
    <fixed-frequency frequency="45" timeUnit="SECONDS"/>
  </scheduling-strategy>
  <file:matcher filenamePattern="comma_separated.csv" />
</file:listener>
上記の outputMimeType 設定は、ライターではなく CSV リーダーが comma_separated.csv 入力ファイルの形式と区切り文字を解釈するのに役立ちます。
出力形式を指定するには、File Write 操作で使用する CSV または JSON ライターなど、ライターの MIME タイプと任意のライタープロパティを提供できます。たとえば、CSV 出力のペイロードで、入力で使用する他の区切り文字ではなくパイプ (|) 区切り文字を記述しなければならない場合があります。これを行うには、プロパティとその値を DataWeave 式の output ディレクティブに追加します。たとえば、次の Write 操作ではパイプを separator として指定しています。
<file:write doc:name="Write" config-ref="File_Config" path="my_transform">
  <file:content ><![CDATA[#[output application/csv separator="|" --- payload]]]></file:content>
</file:write>
次の例は、output ディレクティブで 2 つのライタープロパティを指定する DataWeave スクリプトを示しています。1 つは CSV 項目の区切り文字用で、もう 1 つはヘッダーがないことを示します。
%dw 2.0
output application/csv separator=";", header=false
---
payload
ライタープロパティは形式によって異なります。次の例では、JSON ライタープロパティ skipNullOn を使用します。
%dw 2.0
output application/json skipNullOn="everywhere"
---
payload
次の例では、DataWeave スクリプトが非表示の ASCII 文字を CSV 出力の区切り文字として使用しています。区切り文字のプロパティ値は \u001E です。\u はエスケープシーケンス表現で、001E はレコード区切り文字 (RS) である ASCII 文字の 16 進表現です。
%dw 2.0
output application/csv separator = "\u001E"
---
[
	{
		"Name" : "Tom",
		"UID" : 2569,
		"ShipOrderID" : "ui-288188"
	},
	{
		"Name" : "Alan",
		"UID" : 7756,
		"ShipOrderID" : "xj-232142"
	},
	{
		"Name" : "Dan",
		"UID" : 7821,
		"ShipOrderID" : "uk-259459"
	}
]
この CSV の例では次の出力が生成されます。
NameUIDShipOrderID
Tom2569ui-288188
Alan7756xj-232142
Dan7821uk-259459
read または readUrl メソッドを使用するスクリプトでは、readerProperties パラメーターを介してリーダープロパティを指定することもできます。「read」の例を参照してください。ただし、CSV リーダーの例に示されるように、リーダープロパティは HTTP リスナーなどのメッセージソースでより一般的に使用されます。
Mule 変数を設定プロパティの値として使用することもできます。他の完全な例は、「リーダーとライターの設定プロパティの設定」を参照してください。
Mule アプリケーションを流れる入力および出力データで MIME タイプを指定できます。
DataWeave 変換の場合、出力データで MIME タイプを指定できます。
たとえば、Transform Message コンポーネントまたは Write 操作内の式の output ヘッダーディレクティブを output application/json または output application/csv に設定できます。
この例では、File Write 操作を使用して MIME タイプを設定し、形式固有のライター (CSV ライター) がペイロードを CSV 形式で出力するようにします。
<file:write doc:name="Write" config-ref="File_Config" path="my_transform">
  <file:content ><![CDATA[#[output application/csv --- payload]]]></file:content>
</file:write>
Mule 4.3.0 以降、MIME タイプの代わりに形式 ID のみを使用して output ディレクティブを設定できます。たとえば、Transform Message コンポーネントまたは Write 操作内の式の output ヘッダーディレクティブを output json または output csv に設定できます。また、形式 ID を使用して、出力ヘッダーで出力データの形式と MIME タイプを区別したり、カスタム MIME タイプを使用したりできます。
たとえば、DataWeave ディレクティブ output application/problem+json with json を使用して、JSON データを書き込むことはできますが、MIME タイプを application/problem+json にカスタマイズすることはできません。
スクリプトの MIME タイプ出力をカスタマイズする例については、「スクリプトの MIME タイプ出力の変更」を参照してください。
with キーワードは、出力 MIME タイプをスクリプトの出力の DataWeave ライターから分離します。たとえば、binary ライターを使用する場合、「output application/csv with binary」を指定して、application/csv MIME タイプを出力します。この設定は、動的ライタープロパティの使用 および 「DataWeave 関数でのリーダーとライターのプロパティの使用」で示されている事例で必要です。また、ユースケース output application/my-custom-type with json indent=false などで、ライタープロパティを追加することもできます。
入力データの場合、Mule ソースの形式固有のリーダー (新規ファイルリスナーなど)、Mule 操作 (Read、HTTP Request 操作など)、および DataWeave 式では、Mule イベントの入力ペイロード、属性、および変数に関連付けられるメタデータから MIME タイプが推定されます。MIME タイプをメタデータから推定できない場合 (およびそのメタデータが静的でない場合)、Mule ソースおよび操作では、リーダーの MIME タイプを指定することができます。たとえば、新規ファイルリスナーの MIME タイプを CSV ファイルの入力用の outputMimeType='application/csv' に設定できます。この設定では、ファイル形式に関する情報が CSV リーダーに提供されます。
<file:listener doc:name="On New File"
  config-ref="File_Config"
  outputMimeType='application/csv'>
</file:listener>
形式間の変換を実行するのにリーダー設定は使用されません。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。
また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 「リーダーとライターのプロパティの使用」を参照してください。