Flex Gateway新着情報
Governance新着情報
Monitoring API Manager
DataWeave 2.2 は Mule 4.2 と互換性があり、Mule 4.2 にバンドルされています。 このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポートが終了しました。 このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。 標準サポートが適用されている最新バージョンの Mule 4 にアップグレードすることをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。 |
この DataWeave の例では、filter
関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。
開始する前に、DataWeave バージョン 2 (%dw 2.0
) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave 1.0 (%dw 1.0
) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
デフォルトでは、1.5 MB を超えるファイルはディスクに保存されます。これより小さいファイルはメモリに保存されます。 |
次の DataWeave スクリプトでは、XLSX ファイルを読み取り、そのファイルから絞り込まれたデータを返します。ourBugs.xlsx
という名前のスプレッドシートには、Fred M
という名前の担当者を含め、チームのすべてのメンバーに割り当てられたバグに関するデータが含まれていると仮定します。
%dw 2.0
var myInput = readUrl("classpath://ourBugs.xlsx", "application/xlsx")
output application/json
---
myInput."Data" filter ((entry, index) -> entry."Assignee" == "Fred M")
スクリプトは classpath:ourBugs.xlsx
を readUrl
関数に渡して、Studio プロジェクトディレクトリ (src/main/resources
) からファイルを読み取ります。結果は変数 myInput
に保存されます。
スクリプトは XLSX ファイルから Data
という名前のシートを選択した後、Assignee
列に Fred M
の値が含まれるレコードを除き、すべてのレコードを除外します。結果は JSON オブジェクトの配列で返されます。次に例を示します。
[
{
"Issue Key": "BUG-11708",
"Issue Type": "Bug",
"Summary": "Some Description of the Bug",
"Assignee": "Fred M",
"Reporter": "Natalie C",
"Priority": "To be reviewed",
"Status": "Closed",
"Resolution": "Done",
"Created": "2019-04-29T03:57:00",
"Updated": "2019-05-06T10:40:00",
"Due Date": ""
},
{
"Issue Key": "BUG-4903",
"Issue Type": "Story",
"Summary": "Some Description of the Bug",
"Assignee": "Fred M",
"Reporter": "Fred M",
"Priority": "To be reviewed",
"Status": "In Progress",
"Resolution": "",
"Created": "2019-05-07T11:22:00",
"Updated": "2019-05-08T10:16:00",
"Due Date": ""
},
{
"Issue Key": "BUG-4840",
"Issue Type": "Story",
"Summary": "Some Description of the Bug",
"Assignee": "Fred M",
"Reporter": "Pablo C",
"Priority": "To be reviewed",
"Status": "In Validation",
"Resolution": "",
"Created": "2019-04-30T07:11:00",
"Updated": "2019-05-08T10:16:00",
"Due Date": ""
}
]
次の例は、前の例と同じ DataWeave スクリプトを使用して、filter
式の結果をファイル fredBugs.json
に書き込みます。この例は、Studio の Mule プロジェクトからの設定 XML です。
<file:config name="File_Read_Config" doc:name="File Read Config" />
<file:config name="File_Write_Config" doc:name="File Write Config" />
<flow name="xlsx-lookup" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<fixed-frequency frequency="1" timeUnit="MINUTES"/>
</scheduling-strategy>
</scheduler>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
var myInput = readUrl("classpath://ourBugs.xlsx", "application/xlsx")
output application/json
---
myInput."Data" filter ((entry, index) -> entry."Assignee" == "Fred M")]]></ee:set-payload>
</ee:message>
</ee:transform>
<file:write doc:name="Write JSON"
path="/path/to/fredBugs.json"
config-ref="File_Write_Config">
</flow>
Scheduler (scheduler
) はフローをトリガーし、次のコンポーネント (Transform Message) を実行します。
Transform Message コンポーネント (ee:transform
) は、Assignee
列に Fred M
の値が含まれるすべてのレコードを "Data"
シートから返す DataWeave スクリプトを提供し、バイナリ XLSX 入力を JSON 出力に変換します。
File Connector の Write 操作 (file:write
) は、ee:transform
から JSON ペイロードを受け取り、fredBugs.json
という名前のファイルにペイロードを書き込みます。