Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこの DataWeave の例では、filter
関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。
開始する前に、DataWeave バージョン 2 (%dw 2.0
) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (%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
という名前のファイルにペイロードを書き込みます。