Flex Gateway新着情報
Governance新着情報
Monitoring API Manager
DataWeave 2.2 は Mule 4.2 と互換性があり、Mule 4.2 にバンドルされています。 このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポートが終了しました。 このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。 標準サポートが適用されている最新バージョンの Mule 4 にアップグレードすることをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。 |
DataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの DataWeave 1.0 ドキュメントセットを参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。
DataWeave では、以下の形式 (または MIME タイプ) が入力および出力としてサポートされます。
MIME タイプ | サポートされる形式 |
---|---|
|
Avro |
|
CSV |
|
DataWeave (weave) (DataWeave 式のテスト用) |
|
フラットファイル、Cobol コピーブック、固定幅 |
|
|
|
JSON |
|
オクテットストリーム (バイナリ) |
|
YAML |
|
|
|
改行区切りの JSON (改行区切りの JSON) |
|
|
|
|
|
|
|
テキスト/プレーン (プレーンテキスト) |
|
テキスト Java プロパティ (プロパティ) |
DataWeave は、入力データ全体をメモリ内でインデックス付きで読み取ることができます。また、データ形式によっては、入力をストリーミングして部分ごとに読み取ることもできます。大きなファイルを読み取る場合、メモリ不足になったり、パフォーマンスが低下したりする可能性があります。ストリーミングはパフォーマンスを向上する可能性がありますが、ファイルへのアクセスに影響します。
インデックス付きおよびメモリ内: このどちらの戦略でもドキュメント全体が解析されるため、データへのランダムアクセスが可能です。これらの戦略では、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>
以下のセクションで、サポートされる各形式で使用可能な形式固有のリーダープロパティとライタープロパティについて説明します。
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 ソースの形式固有のリーダー (新規ファイルリスナーなど)、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>
形式間の変換を実行するのにリーダー設定は使用されません。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。
また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 「リーダーとライターのプロパティの使用」を参照してください。
MIME タイプ: application/avro
Avro はデータシリアル化システムです。
DataWeave スクリプトで output
形式として application/avro
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
String (文字列) |
指定されたデータ構造の null 値をスキップします。 デフォルトでは、スキップしません。 |
|
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
MIME タイプ: application/flatfile
Cobol コピーブックは、Cobol データファイルのレコードと項目のレイアウトを記述するフラットファイルの種別です。
Transform Message コンポーネントは、Cobol コピーブック形式を処理するための設定を提供します。たとえば、Cobol 定義を Transform Message コンポーネントにインポートしてコピーブック変換で使用できます。
DataWeave の Cobol コピーブックは最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいコピーブックファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。 |
コピーブック定義をインポートすると、Transform Message コンポーネントは、schemaPath
プロパティで参照できるフラットファイルスキーマに定義を変換します。
コピーブック定義をインポートする方法
Studio で Transform コンポーネントの入力ペイロードを右クリックし、[Set Metadata (メタデータを設定)] を選択して [Set Metadata Type (メタデータ型を設定)] ダイアログを開きます。
コピーブック定義をインポートする前に、メタデータ型を定義する必要があります。
コピーブックメタデータの名前を入力します (例: copybook
)。
[Type (型)] ドロップダウンメニューから [Copybook (コピーブック)] 型を選択します。
コピーブック定義ファイルをインポートします。
[Select (選択)] をクリックします。
たとえば、次のようなコピーブック定義ファイル (mailing-record.cpy
) があるとします。
01 MAILING-RECORD. 05 COMPANY-NAME PIC X(30). 05 CONTACTS. 10 PRESIDENT. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 VP-MARKETING. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 ALTERNATE-CONTACT. 15 TITLE PIC X(10). 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 05 ADDRESS PIC X(15). 05 CITY PIC X(15). 05 STATE PIC XX. 05 ZIP PIC 9(5).
コピーブック定義は常に 01
エントリから始まる必要があります。コピーブック内の 01
定義ごとに個別のレコードタイプが生成されます (コピーブックを使用できるようにするには 1 つ以上の 01
定義が存在する必要があります。定義がない場合は、任意の名前を使用して、コピーブックの開始位置に定義を追加します)。コピーブックファイルに複数の 01
定義がある場合、変換で使用する定義をドロップダウンリストから選択できます。
COBOL 形式では、各行の列 7 ~ 72 のみを使用するように定義する必要があります。列 1 ~ 5 と列 72 より後のデータは、インポートプロセスで無視されます。列 6 は、行継続マーカーです。
スキーマをインポートすると、Transform コンポーネントは、Muke プロジェクトの src/main/resources/schema
フォルダーに保存しているフラットファイルスキーマにコピーブックファイルを変換します。フラットファイル形式では、上記のコピーブック定義は次のようになります。
form: COPYBOOK id: 'MAILING-RECORD' values: - { name: 'COMPANY-NAME', type: String, length: 30 } - name: 'CONTACTS' values: - name: 'PRESIDENT' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'VP-MARKETING' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'ALTERNATE-CONTACT' values: - { name: 'TITLE', type: String, length: 10 } - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - { name: 'ADDRESS', type: String, length: 15 } - { name: 'CITY', type: String, length: 15 } - { name: 'STATE', type: String, length: 2 } - { name: 'ZIP', type: Integer, length: 5, format: { justify: ZEROES, sign: UNSIGNED } }
コピーブックをインポートしたら、schemaPath
プロパティを使用して output
ディレクティブを介して関連付けられているフラットファイルを参照できます。たとえば、output application/flatfile schemaPath="src/main/resources/schemas/mailing-record.ffd"
です。
すべてのコピーブック機能が DataWeave の Cobol コピーブック形式でサポートされるとは限りません。一般に、この形式では次を含む最も一般的な使用方法と簡単なパターンがサポートされます。
DISPLAY、BINARY (COMP)、COMP-5 および PACKED-DECIMAL (COMP-3) の使用方法。 文字エンコードの制限については、「文字エンコード」を参照してください。
以下のみで構成される数値の PICTURE 句
「9」- 1 つ以上の数字位置
「S」- 1 つの省略可能な符号文字位置 (先頭または末尾)
「V」- 1 つの省略可能な小数点
「P」- 1 つ以上の 10 進数位取り位置
「X」文字位置のみで構成される英数字値の PICTURE 句
PICTURE 句での「9」、「P」、および「X」文字の反復数 (5 桁数値の場合の 9(5)
など)
スキーマの controlVal プロパティが含まれる OCCURS DEPENDING ON。含まれる構造内で制御値がネストされている場合、生成されたスキーマを手動で変更して、「container.value」の値のフルパスを指定する必要があります。
REDEFINES 句 (レコードデータの同じ部分の異なるビューを提供するために使用 - 以下のセクションの詳細を参照)
次の機能はサポートされていません。
英数字で編集された PICTURE 句
挿入、置換、およびゼロサプレスのすべての形式を含む、数値で編集された PICTURE 句
特殊なレベル番号:
レベル 66 - 項目またはグループの代替名
レベル 77 - 独立データ項目
レベル 88 - 条件名 (値の列挙に相当)
グループレベルの SIGN 句 (PICTURE 句を含む基本項目でのみサポートされます)
COMP-1 または COMP-2 の USAGE、およびグループレベルの USAGE 句 (PICTURE 句を含む基本項目でのみサポートされます)
VALUE 句 (リテラルまたは別のデータ項目からデータ項目または条件名の値を定義するために使用)
SYNC 句 (レコード内で値を一致させるために使用)
REDEFINES は、レコードのデータの動的な解析を促進します。REDEFINES を指定してコピーブックをインポートする場合、生成されたスキーマでは、「」 (同じレベルで複数の REDEFINES グルーピングが指定される場合は、「1」、「*2」など) という名前の特殊なグルーピングを使用して、異なるすべての解析を結合します。この特殊なグルーピング名は、他のグルーピング名と同様に DataWeave 式で使用します。
REDEFINES グルーピングを使用すると、通常のコピーブックグルーピングよりもオーバーヘッドが大きくなるため、可能な場合は Studio にインポートする前にコピーブックから REDEFINES を削除することをお勧めします。
BINARY (COMP)、COMP-5、または PACKED-DECIMAL (COMP-3) の使用方法は、256 個の文字コード候補の範囲全体を使用する 1 バイト文字エンコードでのみサポートされます。これらの使用方法では、UTF-8 と他の可変長エンコードはサポートされません (1 バイトではないため)。また、ASCII もサポートされません (範囲全体を使用しないため)。サポートされている文字エンコードには、ISO-8859-1 (完全な 8 ビットへの ASCII の拡張) や他の 8859 バリエーションおよび EBCDIC (IBM037) などがあります。
REDEFINES では、データに 1 バイト/文字の文字エンコードを使用する必要がありますが、BINARY、(COMP)、COMP-5、PACKED-DECIMAL (COMP-3) の使用方法がデータに含まれていない限り、任意の 1 バイト/文字の文字エンコードを使用できます。
コピーブックのインポートに関する最も一般的な問題は、入力行領域の Cobol 標準に従っていないことです。コピーブックのインポート解析では、各行の列 1 ~ 6 のコンテンツが無視され、列 7 に「*」 (アスタリスク) が含まれているすべての行が無視されます。また、各行の列 72 を超える部分はすべて無視されます。 つまり、実際のすべてのデータ定義が入力行の列 8 ~ 72 の間に存在する必要があります。
タブ位置に関する定義された標準はないため、入力内のタブは展開されません。コピーブックの入力列を数える場合、各タブ文字は 1 個のスペース文字として処理されます。
コピーブックを処理するときにインデントは無視され、レベル番号のみが有意として処理されます。これは通常は問題ではありませんが、Cobol コンパイラーで受け入れられないにも関わらずコピーブックのインポートが受け入れられる可能性があります。
コピーブックのインポートの結果として警告とエラーの両方が報告される場合があります。 一般に、警告は、有意であるかどうかに関係なく、機能がサポートまたは認識されないことを伝えます。エラーは、生成されたスキーマ (ある場合) がコピーブックの完全に正確な表現ではないことを意味する問題の通知です。報告されたすべての警告またはエラーを確認し、適切な処理を決定する必要があります。スキーマを生成されたとおりに単に受け入れたり、入力のコピーブックを変更したり、生成されたスキーマを変更したりすることができます。
DataWeave リーダーの application/flatfile
入力を定義する場合、「リーダープロパティ (フラットファイル)」で説明されているプロパティを設定できます。
種別 Binary
または Packed
のスキーマでは、改行を検出できないため、recordParsing
を lenient
に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。このスキーマは特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。
DataWeave スクリプトで output
形式として application/flatfile
を指定する場合、「ライタープロパティ (フラットファイル)」で説明されているプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
output application/flatfile schemaPath="src/main/resources/schemas/QBReqRsp.esl", structureIdent="QBResponse"
MIME タイプ: application/csv
CSV コンテンツは DataWeave 内でオブジェクトのリストとしてモデル化され、各レコードはオブジェクトになり、レコード内の各項目はプロパティになります。次に例を示します。
%dw 2.0
output application/csv
---
[
{
"Name":"Mariano",
"Last Name":"De achaval"
},
{
"Name":"Leandro",
"Last Name":"Shokida"
}
]
Name,Last Name
Mariano,De achaval
Leandro,Shokida
CSV では、項目の分離、引用符の切り替え、または引用符のエスケープを行うインジケーターとして任意の特殊文字を割り当てることができます。入力内に存在する特殊文字を把握して、DataWeave でその特殊文字を正しく解釈できるようにします。
DataWeave リーダーの application/csv
入力を定義する場合、次のプロパティを設定できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
本文が開始される行番号。 |
|
Char (文字) |
|
項目値内の区切り文字または引用符などの無効な文字をエスケープするために使用される文字。 |
|
Boolean (ブール) |
|
空の行を無視します。
有効なオプションは |
|
Boolean (ブール) |
|
出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。有効なオプションは |
|
Number (数値) |
|
ヘッダーが配置されている行番号。 |
|
Char (文字) |
|
引用符で使用する文字。 |
|
Char (文字) |
|
項目間を分離する文字。 |
|
Boolean (ブール) |
|
入力 CSV をストリーミングするために使用します。
有効なオプションは |
header=true
の場合、入力内の項目に任意の場所で名前 (payload.userName
など) を使用してアクセスできます。
header=false
の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (payload[107][2]
など)。
デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、streaming
プロパティを true
に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、CSV ファイルをストリーミングして JSON に変換します。
<flow name="dw-streamingFlow" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<fixed-frequency frequency="1" timeUnit="MINUTES"/>
</scheduling-strategy>
</scheduler>
<file:read
path="${app.home}/input.csv"
config-ref="File_Config"
outputMimeType="application/csv; streaming=true; header=true"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload map ((row) -> {
zipcode: row.zip
})]]></ee:set-payload>
</ee:message>
</ee:transform>
<file:write doc:name="Write"
config-ref="File_Config1"
path="/path/to/output/file/output.json"/>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
この例では、outputMimeType="application/csv; streaming=true"
を設定して、CSV 入力をストリーミングするように HTTP リスナーを設定します。
Studio UI では、リスナーの [MIME Type (MIME タイプ)] を application/csv
に設定し、MIME タイプの [Parameters (パラメーター)] を [Key (キー)] streaming
と [Value (値)] true
に設定できます。
この例では、説明のために header=true
も設定していますが、この設定はデフォルトです。
DataWeave スクリプトは Transform Message コンポーネントで map
関数を使用して、CSV ペイロードの各行を反復処理し、zip
列の各項目の値を選択します。
Write 操作によって、変換の結果が含まれるファイル (output.json
) が返されます。
Logger は、output.json
に表示されるものと同じ出力ペイロードを出力します。
この例は、入力ファイルが Studio プロジェクトディレクトリ src/main/resources
(${app.home}
の場所) に配置されていることを示しています。
CSV 入力の構造は次のようになります。
street,city,zip,state,beds,baths,sale_date
3526 HIGH ST,SACRAMENTO,95838,CA,2,1,Wed May 21 00:00:00 EDT 2018
51 OMAHA CT,SACRAMENTO,95823,CA,3,1,Wed May 21 00:00:00 EDT 2018
2796 BRANCH ST,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018
2805 JANETTE WAY,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018
6001 MCMAHON DR,SACRAMENTO,95824,CA,2,1,,Wed May 21 00:00:00 EDT 2018
5828 PEPPERMILL CT,SACRAMENTO,95841,CA,3,1,Wed May 21 00:00:00 EDT 2018
通常、ストリーミングされるファイルはこれよりもはるかに長くなります。
[
{
"zipcode": "95838"
},
{
"zipcode": "95823"
},
{
"zipcode": "95815"
},
{
"zipcode": "95815"
},
{
"zipcode": "95824"
},
{
"zipcode": "95841"
}
]
DataWeave スクリプトで output
形式として application/csv
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
本文が開始される行番号。 |
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
|
String (文字列) |
なし |
このライターで使用されるエンコード ( |
|
Char (文字) |
|
項目値内の区切り文字または引用符などの無効な文字をエスケープするために使用される文字。 |
|
String (文字列) |
CSV を作成するときに使用する行区切り文字 (「\r\n」など) |
|
|
Boolean (ブール) |
|
出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。有効なオプションは |
|
Number (数値) |
|
ヘッダーが配置されている行番号。 |
|
Boolean (ブール) |
|
空の行を無視します。
有効なオプションは |
|
Char (文字) |
|
引用符で使用する文字。 |
|
Boolean (ブール) |
|
ヘッダー値を引用符で囲むかどうかを示します。
有効なオプションは |
|
Boolean (ブール) |
|
(特殊文字が含まれている場合でも) 各値を引用符で囲む必要があるかどうかを示します。 |
|
String (文字列) |
|
項目間を分離する文字。 |
このすべてのパラメーターは省略可能です。
CSV 出力ディレクティブの例は次のようになります。
output application/csv separator=";", header=false, quoteValues=true
MIME タイプ: application/dw
この形式はデバッグのみを目的としてます。この形式を本番環境で使用すると、パフォーマンスに影響する可能性があります。 |
DataWeave (weave) 形式はすべての変換の正規形式です。 この形式を使用すると、入力データが新しい形式に変換される前に入力データがどのように解釈されるかを容易に理解できます。
この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることのみです。 動作は他の形式よりも大幅に遅くなります。パフォーマンスに影響する可能性があるため、これを本番アプリケーションで使用することはお勧めしません。 |
この例は、XML 入力が DataWeave 形式でどのように表現されるかを示しています。
<employees>
<employee>
<firstname>Mariano</firstname>
<lastname>DeAchaval</lastname>
</employee>
<employee>
<firstname>Leandro</firstname>
<lastname>Shokida</lastname>
</employee>
</employees>
{
employees: {
employee: {
firstname: "Mariano",
lastname: "DeAchaval"
},
employee: {
firstname: "Leandro",
lastname: "Shokida"
}
}
} as Object {encoding: "UTF-8", mimeType: "text/xml"}
DataWeave スクリプトで output
形式として application/dw
を指定する場合、次のプロパティを追加して、パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
|
Boolean (ブール) |
|
ライターでスキーマを無視するかどうかを示します。有効なオプションは |
|
String (文字列) |
インデントとして使用される文字列。 |
|
|
Number (数値) |
|
配列またはオブジェクトで許容される最大要素数。 |
MIME タイプ: application/xlsx
.xlsx
ファイルのみがサポートされます (Excel 2007)。 .xls
ファイルは Mule ではサポートされません。
Excel ワークブックは一連のシートです。DataWeave では、これはオブジェクトにマップされ、各シートがキーになります。Excel シートごとに 1 つのテーブルのみが許可されます。 テーブルは行の配列として表現されます。行はオブジェクトであり、そのキーが列、値がセルのコンテンツになります。
output application/xlsx header=true
---
{
Sheet1: [
{
Id: 123,
Name: George
},
{
Id: 456,
Name: Lucas
}
]
}
他の例については、「Excel (XLSX) ファイルのデータの参照」を参照してください。
DataWeave リーダーの application/xlsx
入力を定義する場合、次のプロパティを設定できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Boolean (ブール) |
|
Excel テーブルにヘッダーを含めるかどうかを示します。有効なオプションは |
|
Boolean (ブール) |
|
空の行を無視するかどうかを示します。有効なオプションは |
|
Boolean (ブール) |
|
Mule 4.2.2 で導入済み: ストリーミングの目的は、大きなファイルを処理することです。ストリーミングを有効にすると、リーダーは一度にすべてのデータを使用可能にするのではなく、各行に順次アクセスして一度に 1 行ずつメモリ内に保存します。ストリーミングでは、ファイルの行にランダムアクセスできません。 |
|
String (文字列) |
なし |
テーブルの最初のセルの位置 ( |
|
Boolean (ブール) |
|
|
ストリーミング例:デフォルトでは、Excel リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体から入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、streaming
プロパティを true
に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、XLSX ファイルをストリーミングして JSON に変換します。
次の例では、Excel ファイルをストリーミングして JSON に変換します。
<http:listener-config
name="HTTP_Listener_config"
doc:name="HTTP Listener config" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="streaming_flow" >
<http:listener
doc:name="Listener"
config-ref="HTTP_Listener_config"
path="/"
outputMimeType="application/xlsx; streaming=true"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload."Sheet Name" map ((row) -> {
foo: row.a,
bar: row.b
})]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
この例の説明:
outputMimeType="application/xlsx; streaming=true"
を設定して、XLSX 入力をストリーミングするように HTTP リスナーを設定します。
Studio UI では、リスナーの [MIME Type (MIME タイプ)] を application/xlsx
に設定し、MIME タイプの [Parameters (パラメーター)] を [Key (キー)] streaming
と [Value (値)] true
に設定できます。
Transform Message コンポーネントの DataWeave スクリプトを使用して、XLSX ペイロード ("Sheet Name"
という名前の XLSX シート) の各行を反復処理し、(row.a
、row.b
を使用して) 行の各セルの値を選択します。a
および b
という名前の列を想定し、それらの列の各行の値を foo
および bar
にそれぞれマップします。
DataWeave スクリプトで output
形式として application/xlsx
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
|
Boolean (ブール) |
|
Excel テーブルにヘッダーを含めるかどうかを示します。有効なオプションは |
|
Boolean (ブール) |
|
空の行を無視するかどうかを示します。有効なオプションは |
|
String (文字列) |
なし |
テーブルの最初のセルの位置 ( |
|
Boolean (ブール) |
|
|
このすべてのパラメーターは省略可能です。Excel の DataWeave 出力ディレクティブは次のようになります。
output application/xlsx header=true
MIME タイプ: application/flatfile
固定幅の種別は技術的にはフラットファイル形式の種別とみなされますが、このオプションを選択すると、Transform コンポーネントでは、この形式のニーズに合わせて適切に調整された設定が提供されます。
DataWeave の固定幅は最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きい固定幅ファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。 |
DataWeave リーダーの application/flatfile
入力を定義する場合、「リーダープロパティ (フラットファイル)」で説明されているプロパティを設定できます。
種別 Binary
または Packed
のスキーマでは、改行を検出できないため、recordParsing
を lenient
に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。このスキーマは特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。
DataWeave スクリプトで output
形式として application/flatfile
を指定する場合、「ライタープロパティ (フラットファイル)」で説明されているプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
すべてのプロパティは省略可能です。
DataWeave 出力ディレクティブは次のようになります。
output application/flatfile schemaPath="src/main/resources/schemas/payment.ffd", encoding="UTF-8"
MIME タイプ: application/flatfile
フラットファイルは、1 つのメッセージ内で複数のタイプの固定幅レコードをサポートします。スキーマ構造を使用すると、異なるレコードタイプを区別する方法と、レコードを論理的にグループ化する方法を定義できます。
DataWeave のフラットファイルは最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいフラットファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。 |
DataWeave リーダーの application/flatfile
入力を定義する場合、次のプロパティを設定できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Boolean (ブール) |
|
必須値がない場合にエラーになります。
有効なオプションは |
|
String (文字列) |
コピーブックスキーマの場合は |
欠落値を表すために使用される文字を入力します。入力データの欠落値を表すために、以下を使用できます。
|
|
String (文字列) |
|
予想される、行/レコード間の分離:
|
|
String (文字列) |
なし |
スキーマ定義。入力の解析で使用するスキーマファイルのローカルディスク内の場所。 |
|
String (文字列) |
なし |
固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を解析する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。 |
|
String (文字列) |
なし |
フラットファイルスキーマのセグメント識別子 (構造定義を解析する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。 |
|
Boolean (ブール) |
|
COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。 有効なオプションは |
|
Boolean (ブール) |
|
COBOL コピーブックのゾーン 10 進数値に署名エンコードの |
種別 Binary
または Packed
のスキーマでは、改行を検出できないため、recordParsing
を lenient
に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。
DataWeave スクリプトで output
形式として application/flatfile
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
|
String (文字列) |
なし |
このライターで使用されるエンコード ( |
|
Boolean (ブール) |
|
必須値がない場合にエラーになります。
有効なオプションは |
|
String (文字列) |
コピーブックスキーマの場合は |
欠落値を表すために使用される文字を入力します。
|
|
String (文字列) |
システムプロパティ |
レコード区切り文字 (改行)。有効なオプション:
Mule バージョン 4.0.4 以前では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます ( |
|
String (文字列) |
なし |
スキーマ定義。使用するスキーマファイルが配置されているパス。 |
|
String (文字列) |
なし |
固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を作成する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。 |
|
String (文字列) |
なし |
フラットファイルスキーマのセグメント識別子 (構造定義を作成する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。 |
|
Boolean (ブール) |
|
末尾の文字を切り捨てることで、項目の長さを超える文字列値を切り取ります。有効なオプションは |
|
Boolean (ブール) |
|
DEPENDING ON COBOL コピーブック値を、使用される長さに切り捨てます。有効なオプションは |
|
Boolean (ブール) |
|
COBOL コピーブックのゾーン 10 進数値に署名エンコードの |
%dw 2.0
output application/flatfile schemaPath="src/main/resources/test-data/QBReqRsp.esl", structureIdent="QBResponse"
---
payload
MIME タイプ: multipart/form-data
DataWeave ではマルチパートサブタイプ (特に form-data
) がサポートされます。この形式では、各パートの形式に関係なく、1 つのペイロード内で複数の異なるデータパートを処理できます。パートの開始と終了を区別するには、境界を使用します。各パートのメタデータはヘッダーを介して追加できます。
3 つのパートで構成される 34b21
境界を含む未加工の multipart/form-data
ペイロードを以下に示します。
text
という名前の text/plain
file1
という名前の application/json
ファイル (a.json
)
file2
という名前の text/html
ファイル (a.html
)
--34b21
Content-Disposition: form-data; name="text"
Content-Type: text/plain
Book
--34b21
Content-Disposition: form-data; name="file1"; filename="a.json"
Content-Type: application/json
{
"title": "Java 8 in Action",
"author": "Mario Fusco",
"year": 2014
}
--34b21
Content-Disposition: form-data; name="file2"; filename="a.html"
Content-Type: text/html
<!DOCTYPE html>
<title>
Available for download!
</title>
--34b21--
DataWeave スクリプト内で、parts
要素を選択し、任意のパートのデータにアクセスし、変換できます。操作は配列に基づくことができます。また、パートを参照するための名前がパートに設定されている場合は、キーに基づくことができます。パートのデータには content
キーワードを介してアクセスでき、ヘッダーには headers
キーワードを介してアクセスできます。
たとえば、次のスクリプトでは、上記のペイロードを考慮して Book:a.json
が生成されます。
%dw 2.0
output text/plain
---
payload.parts.text.content ++ ':' ++ payload.parts[1].headers.'Content-Disposition'.filename
DataWeave がパートのリスト (各パートにヘッダーとコンテンツが含まれる) を含むオブジェクトをビルドするマルチパートコンテンツを生成できます。次の DataWeave スクリプトでは、ペイロード内で HTML データを使用できる場合に、(以前に分析した) 未加工のマルチパートデータを生成します。
%dw 2.0
output multipart/form-data
boundary='34b21'
---
{
parts : {
text : {
headers : {
"Content-Type": "text/plain"
},
content : "Book"
},
file1 : {
headers : {
"Content-Disposition" : {
"name": "file1",
"filename": "a.json"
},
"Content-Type" : "application/json"
},
content : {
title: "Java 8 in Action",
author: "Mario Fusco",
year: 2014
}
},
file2 : {
headers : {
"Content-Disposition" : {
"filename": "a.html"
},
"Content-Type" : payload.^mimeType
},
content : payload
}
}
}
パートの名前が Content-Disposition
ヘッダーに明示的に提供されていない場合は、キーによりパートの名前が決まります。また、DataWeave は、サポートされる形式からのコンテンツを処理できるだけでなく、HTML など、サポートされない形式への参照からコンテンツを処理できます。
DataWeave リーダーの multipart/form-data
入力を定義する場合、次のプロパティを設定できます。
データの分析時にリーダーで使用する境界を設定できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
String (文字列) |
なし |
マルチパートの境界値。パートを区切る文字列。 |
DataWeave の read
関数では、省略可能なパラメーターとしてプロパティを渡すこともできます。プロパティのスコープは、関数をコールする DataWeave スクリプトに制限されます。
DataWeave スクリプトで output
形式として multipart/form-data
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
output multipart/form-data
出力ディレクティブでは、指定された形式でライターがデータを出力するときに使用するプロパティを設定することもできます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
String (文字列) |
なし |
マルチパートの境界値。パートを区切る文字列。 |
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
たとえば、境界が 34b21
の場合、以下を渡すことができます。
output multipart/form-data boundary=34b21
DataWeave の write
関数では、省略可能なパラメーターとしてプロパティを渡すこともできます。プロパティのスコープは、関数をコールする DataWeave スクリプトに制限されます。
通常 (ただし、これに限定されない)、マルチパートは、コンテンツの読み取りと書き込みの両方で、 |
MIME タイプ: application/java
Java オブジェクトと DataWeave 型との間のマッピングを次の表に示します。
Java 型 | DataWeave 型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Date |
|
|
|
|
|
DataWeave スクリプトで output 形式として application/java
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Boolean (ブール) |
False |
オブジェクトで重複キーが検出されると、ライターはその値をそれらのすべての値が含まれる配列に変更します。
有効なオプションは |
|
Boolean (ブール) |
|
キーに属性がある場合、それらを含むキーの子キー - 値ペアとして配置されます。属性キー名の先頭は @ になります。有効なオプションは |
いくつかのカスタム Java 型があります。
class
Enum
class
(Java)Java 開発者は、入力としてどのクラスを作成し、送信する必要があるかについてのヒントとして class
メタデータキーを使用します。これが明示的に定義されていない場合、DataWeave コンテキストから推定を試みるか、これにデフォルト値を割り当てます。
オブジェクトの場合は java.util.HashMap
リストの場合は java.util.ArrayList
%dw 2.0
type user = Object { class: "com.anypoint.df.pojo.User"}
output application/json
---
{
name : "Mariano",
age : 31
} as user
上のコードでは、必須入力の種別を com.anypoint.df.pojo.User
のインスタンスとして定義します。
MIME タイプ: application/json
DataWeave スクリプトで output
形式として application/json
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
|
Boolean (ブール) |
|
オブジェクトで重複キーが検出されると、ライターはその値をそれらのすべての値が含まれる配列に変更します。
有効なオプションは |
|
String (文字列) |
|
出力で使用する文字セット。 |
|
Boolean (ブール) |
|
JSON コードをインデントして読みやすくするか、JSON を 1 行に圧縮するかを示します。
有効なオプションは |
|
String (文字列) |
なし |
指定されたデータ構造の null 値をスキップします。デフォルトでは、スキップしません。有効なオプションは |
output application/json indent=false, skipNullOn="arrays"
DataWeave リーダーの application/json
入力を定義する場合、次のプロパティを設定できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Boolean (ブール) |
|
入力をストリーミングするために使用します。エントリを順次アクセスする場合のみ使用します。有効なオプションは |
ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。
<file:config name="File_Config" doc:name="File Config" />
<flow name="dw-streaming-jsonFlow" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<fixed-frequency frequency="1" timeUnit="MINUTES"/>
</scheduling-strategy>
</scheduler>
<file:read doc:name="Read"
config-ref="File_Config"
path="${app.home}/myjsonarray.json"
outputMimeType="application/json; streaming=true"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload.myJsonExample map ((element) -> {
returnedElement : element.zipcode
})]]></ee:set-payload>
</ee:message>
</ee:transform>
<file:write doc:name="Write"
path="/path/to/output/file/output.json"
config-ref="File_Config1"/>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
このストリーミング例では、outputMimeType="application/json; streaming=true"
を設定して、JSON 入力をストリーミングするように HTTP リスナーを設定します。
Studio UI では、リスナーの [MIME Type (MIME タイプ)] を application/json
に設定し、MIME タイプの [Parameters (パラメーター)] を [Key (キー)] streaming
と [Value (値)] true
に設定できます。
Transform Message コンポーネントの DataWeave スクリプトは、入力ペイロードの配列を反復処理し、その zipcode
値を選択します。
Write 操作によって、変換の結果が含まれるファイル (output.json
) が返されます。
Logger は、output.json
に表示されるものと同じ出力ペイロードを出力します。
JSON 入力ペイロードは次のようになります。
{ "myJsonExample" : [
{
"name" : "Shoki",
"zipcode": "95838"
},
{
"name" : "Leandro",
"zipcode": "95823"
},
{
"name" : "Mariano",
"zipcode": "95815"
},
{
"name" : "Cristian",
"zipcode": "95815"
},
{
"name" : "Kevin",
"zipcode": "95824"
},
{
"name" : "Stanley",
"zipcode": "95841"
}
]
}
[
{
"returnedElement": "95838"
},
{
"returnedElement": "95823"
},
{
"returnedElement": "95815"
},
{
"returnedElement": "95815"
},
{
"returnedElement": "95824"
},
{
"returnedElement": "95841"
}
]
skipNullOn
ライタープロパティを使用して、配列、オブジェクト、またはその両方から null 値を除外できます。
各設定値について説明します。
arrays
JSON 出力の null
値を無視して除外します。たとえば、output application/json skipNullOn="arrays"
のようにします。
objects
null を含むオブジェクトを無視します。出力には、null を含むオブジェクトの代わりに空のオブジェクト ({}
) が含まれます。たとえば、output application/json skipNullOn="objects"
のようにします。
everywhere
skipNullOn
を配列とオブジェクトに適用します。たとえば、output application/json skipNullOn="everywhere"
のようにします。
MIME タイプ: application/x-ndjson
DataWeave スクリプトで output
形式として application/x-ndjson
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Boolean (ブール) |
|
有効なオプションは |
|
String (文字列) |
||
|
Number (数値) |
|
バッファライターのサイズ。 |
|
String (文字列) |
有効なオプションは |
|
|
Boolean (ブール) |
|
|
MIME タイプ: application/octet-stream
DataWeave スクリプトで output
形式として application/octet-stream
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
MIME タイプ: text/plain
DataWeave スクリプトで output
形式として text/plain
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
String (文字列) |
なし |
使用するライターのエンコード。 |
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
MIME タイプ: text/x-java-properties
DataWeave output
ディレクティブで text/x-java-properties
出力を定義する場合、省略可能なプロパティを追加して、パーサーの動作を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
String (文字列) |
なし |
使用するライターのエンコード。 |
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
MIME タイプ: application/xml
XML データ構造は、キーの値として他のオブジェクトが含まれている可能性がある DataWeave オブジェクトにマップされます。反復するキーがサポートされます。
<users>
<company>MuleSoft</company>
<user name="Leandro" lastName="Shokida"/>
<user name="Mariano" lastName="Achaval"/>
</users>
{
users: {
company: "MuleSoft",
user @(name: "Leandro",lastName: "Shokida"): "",
user @(name: "Mariano",lastName: "Achaval"): ""
}
}
DataWeave リーダーの application/xml
入力を定義する場合、次のプロパティを設定できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
エンティティ拡張の最大数。 この制限は、Billion Laughs 攻撃を回避するために設定されます。 |
|
Boolean (ブール) |
|
しきい値に達したときにインデックス付けされた XML リーダーを使用する必要があるかどうか。有効なオプションは |
|
String (文字列) |
|
空または空白のテキストを含むタグを null として読み取るかどうか。有効なオプションは |
|
Boolean (ブール) |
|
外部エンティティを処理する必要があるかどうかを示します。デフォルトでは、これは XXE 攻撃を回避するために無効になっています。
有効なオプションは |
|
|
|
DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。有効なオプションは、 |
DataWeave スクリプトで output
形式として application/xml
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
Number (数値) |
|
バッファライターのサイズ。 |
|
String (文字列) |
なし |
使用するライターのエンコード。 |
|
Boolean (ブール) |
|
|
|
Boolean (ブール) |
|
出力をインデントするかどうかを示します。
有効なオプションは |
|
String (文字列) |
|
どのような場合にライターでインラインの終了タグを使用するか。有効なオプションは |
|
String (文字列) |
なし |
有効なオプションは |
|
Boolean (ブール) |
|
値が null の場合に nil 属性を書き込むかどうか。有効なオプションは |
|
String (文字列) |
なし |
指定されたデータ構造の null 値をスキップします。デフォルトでは、スキップしません。有効なオプションは |
|
Boolean (ブール) |
|
XML ヘッダーの宣言を書き込むかどうかを示します。有効なオプションは |
output application/xml indent=false, skipNullOn="attributes"
inlineCloseOn
パラメーターでは、出力を次のような (デフォルト) 構造にするかどうかを定義します。
<someXml>
<parentElement>
<emptyElement1></emptyElement1>
<emptyElement2></emptyElement2>
<emptyElement3></emptyElement3>
</parentElement>
</someXml>
次のような構造にすることもできます (empty
の値を設定)。
<payload>
<someXml>
<parentElement>
<emptyElement1/>
<emptyElement2/>
<emptyElement3/>
</parentElement>
</someXml>
</payload>
「自己終了 XML タグの出力」の例も参照してください。
「null」値の項目を含むアウトバウンドメッセージを変換で生成するかどうか、またはこのような項目を完全に無視するかどうかを指定できます。
これは、skipNullOn
という名前の出力ディレクティブ内の属性を介して設定でき、3 つの異なる値 (elements
、attributes
、または everywhere
) に設定できます。
各設定値について説明します。
elements
: キーと null 値のペアは無視されます。
attributes
: null 値を含む XML 属性はスキップされます。
everywhere
: このルールが要素と属性の両方に適用されます。
MIME タイプ: application/xml
CData
は、CDATA XML ブロックを識別するために使用する XML のカスタムデータ型です。CDATA 内でコンテンツをラップするか、CDATA ブロック内に入力文字列が到達したかどうかを確認するようにライターに指示することができます。 CData
は型 String
から継承されます。
%dw 2.0
output application/xml
---
{
users:
{
user : "Mariano" as CData,
age : 31 as CData
}
}
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user><![CDATA[Mariano]]></user>
<age><![CDATA[31]]></age>
</users>
MIME タイプ: application/x-www-form-urlencoded
エンコードされた URL 文字列は DataWeave オブジェクトにマップされます。
ドットまたはスターセレクターを使用して、値をキーで読み取ることができます。
DataWeave オブジェクトを指定して、ペイロードを書き込むことができます。
x-www-form-urlencoded
データの例を次に示します。
key=value&key+1=%40here&key=other+value&key+2%25
次の DataWeave スクリプトでは、上のデータが生成されます。
output application/x-www-form-urlencoded
---
{
"key" : "value",
"key 1": "@here",
"key" : "other value",
"key 2%": null
}
上のデータを次の例の DataWeave スクリプトへの入力として読み取って、結果として value@here
を返すことができます。
output text/plain
---
payload.*key[0] ++ payload.'key 1'
エンコードされた URL データのリーダープロパティはありません。
DataWeave スクリプトで output 形式として application/x-www-form-urlencoded
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
String (文字列) |
なし |
使用するライターのエンコード。 |
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
output application/x-www-form-urlencoded
output application/x-www-form-urlencoded encoding="UTF-8", bufferSize="500"
DataWeave の write
関数では、省略可能なパラメーターとしてプロパティを渡すこともできます。プロパティのスコープは、関数をコールする DataWeave スクリプトに制限されます。
MIME タイプ: application/yaml
DataWeave スクリプトで output
形式として application/yaml
を指定する場合、次のプロパティを追加して、DataWeave パーサーによるデータの処理方法を変更できます。
パラメーター | 型 | Default (デフォルト) | 説明 |
---|---|---|---|
|
String (文字列) |
|
使用するライターのエンコード。 |
|
Number (数値) |
|
バッファライターのサイズ。 |
|
Boolean (ブール) |
|
|
|
String (文字列) |
なし |
指定されたデータ構造の null 値をスキップします。デフォルトでは、スキップしません。有効なオプションは |