Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerDataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの 『DataWeave バージョン 1 ドキュメントセット』を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。
DataWeave では、次の形式が入力および出力としてサポートされています。
MIME タイプ | ID | サポートされる形式 |
---|---|---|
|
|
|
|
|
|
|
|
DataWeave 式をテストするための 『DataWeave 形式 (dw)』 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DataWeave は、入力データ全体をメモリ内でインデックス付きで読み取ることができます。また、データ形式によっては、入力をストリーミングして部分ごとに読み取ることもできます。大きなファイルを読み取る場合、メモリ不足になったり、パフォーマンスが低下したりする可能性があります。ストリーミングはパフォーマンスを向上する可能性がありますが、ファイルへのアクセスに影響します。
インデックス付きおよびメモリ内:
このどちらの戦略でもドキュメント全体が解析されるため、データへのランダムアクセスが可能です。これらの戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。
インデックス付き:
ディスク上でインデックスを使用します。
DataWeave では、インデックス付きモードで次の形式のみを読み取ることができます。
CSV、JSON、XML (Mule 4.3.0 以降)
DataWeave では、インデックス付きモードで Excel (XLSX) 入力を読み込むことはできません。
メモリ内:
メモリ内でドキュメント全体を解析します。
DataWeave では、メモリ内モードを使用して、サポートされるすべての形式を読み取ることができます。
ストリーミング:
ファイルへの順次アクセスが可能です。この戦略では、入力ドキュメントを小さな項目に分割し、そのデータに順次アクセスして、現在の項目をメモリ内に保存します。DataWeave セレクターは、読み取られているファイルの部分にアクセスできます。
DataWeave では、次の形式でのみストリーミングがサポートされます。
CSV、JSON、Excel (XLSX、Mule 4.2.2 以降)、XML (Mule 4.3.0)
詳細は、「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>
xml
上記の 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>
xml
次の例は、output
ディレクティブで 2 つのライタープロパティを指定する DataWeave スクリプトを示しています。1 つは CSV 項目の区切り文字用で、もう 1 つはヘッダーがないことを示します。
%dw 2.0
output application/csv separator=";", header=false
---
payload
json
ライタープロパティは形式によって異なります。次の例では、JSON ライタープロパティ skipNullOn
を使用します。
%dw 2.0
output application/json skipNullOn="everywhere"
---
payload
json
次の例では、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"
}
]
DataWeave
この CSV の例では次の出力が生成されます。
NameUIDShipOrderID Tom2569ui-288188 Alan7756xj-232142 Dan7821uk-259459
csv
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>
xml
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 ライターから分離します。たとえば、'output applicatio:page-aliases を指定できます。
入力データの場合、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>
xml
形式間の変換を実行するのにリーダー設定は使用されません。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。
また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 「リーダーとライターのプロパティの使用」を参照してください。