Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこの DataWeave の例では、filter 関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。
開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、DataWeave バージョン 1.2 の例を参照してください。
他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
| デフォルトでは、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 という名前のファイルにペイロードを書き込みます。