Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこのコンポーネント内に DataWeave スクリプトを記述して、Mule メッセージペイロード、属性、または変数を必要な出力形式とデータ構造に設定または変換します。
DataWeave は、インテグレーションと実装でのすべての式とデータ変換のためのプログラミング言語です。この言語は、独自の関数、ライブラリ、データ型などのカスタマイズを作成するための関数ライブラリとメカニズムを提供します。DataWeave の基本を学習し、DataWeave スクリプトを試すには、 DataWeave のチュートリアルとプレイグラウンドを参照し、DataWeave ドキュメントで DataWeave の関数とその言語に関する案内を確認してください。
このコンポーネントは、次の XML 構造をサポートします。
<ee:transform doc:name="Transform" doc:id="xnpgke" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java (1)
---
//DataWeave script (2)
]]></ee:set-payload>
</ee:message>
</ee:transform>
1 | application/java 形式を設定する DataWeave スクリプトの output ディレクティブ
サポートされるデータ形式を参照してください。 |
2 | DataWeave スクリプトの本文の場所 |
Transform コンポーネント (<ee:transform/>
) 内に DataWeave スクリプトを記述して、Mule イベントの任意の部分のコンテンツを作成または変換します。
<ee:message/>
と <ee:variables/>
は Transform (<ee:transform/>
) の子要素です。
<ee:message/>
は、Mule メッセージのペイロードと属性を作成または変換するための子要素を受け入れます。
要素名 | 要素 XML | 説明 |
---|---|---|
Set Payload (ペイロードを設定) |
|
Mule メッセージペイロードを設定または変換します。 |
Set attribute (属性を設定) |
|
1 つ以上の Mule メッセージ属性を設定または変換します。 |
<ee:variables/>
は、Mule 変数を作成または変換するための子要素を受け入れます。
要素名 | 要素 XML | 説明 |
---|---|---|
Set Variables (変数を設定) |
|
Mule 変数を設定または変換します。 |
次の例は、インライン変換を設定し、DataWeave スクリプトをコールして変換を適用する方法を示しています。
次の例では、インライン DataWeave スクリプトを使用してペイロードを設定します。
<ee:transform
doc:id="747f74"
doc:name="Transform" >
<ee:message>
<ee:set-payload>
<![CDATA[%dw 2.0
output application/xml
---
example: {
message @(id: "DSF-829"): "Hello World!",
date: |2017-03-21|,
items:
{
item1: 728,
item2: "14422"
}
}
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<ee:set-payload/>
内の DataWeave スクリプトは、次の XML 出力をメッセージのペイロードとして返します。
<example>
<message id="DSF-829">Hello World!</message>
<date>2017-03-21</date>
<items>
<item1>728</item1>
<item2>14422</item2>
</items>
</example>
次の例では、DWL ファイル内の外部 DataWeave スクリプトをコールしてペイロードを設定します。
<ee:transform doc:id="747f74d"
doc:name="Transform" doc:mode="immediate">
<ee:message>
<ee:set-payload resource="myscript.dwl" />
</ee:message>
</ee:transform>
DWL ファイルを Mule プロジェクトフォルダーの src/main/resources
ディレクトリに追加します。たとえば、そのフォルダーに myscript.dwl
という名前のファイルを作成し、例: インライン DataWeave 変換に示された DataWeave スクリプトを指定できます。
%dw 2.0
output application/xml
---
example: {
message @(id: "DSF-829"): "Hello World!",
date: |2017-03-21|,
items:
{
item1: 728,
item2: "14422"
}
}
Transform の例を含むフローをトリガーすると、スクリプトは例: インライン DataWeave 変換によって返されるペイロードを返します。
次の例では、ユーザーデータを要求するフローをトリガーし、<ee:transform/>
を設定してユーザーデータペイロードを変換し、HTTP 要求の状況コードを提供する属性を選択し、Mule 変数の値を設定します。この例のロガーは、フローで Mule イベント内の値を追跡するのに役立ちます。
<http:listener-config name="HTTP_Listener_config" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<http:request-config name="HTTP_Request_configuration" doc:name="HTTP Request configuration" >
<http:request-connection port="443" />
</http:request-config>
<flow name="myFlow" >
<http:listener path="/mytrigger" config-ref="HTTP_Listener_config"
doc:name="Listener" doc:id="kiohjs" /> (1)
<http:request method="GET" doc:name="Request"
config-ref="HTTP_Request_configuration"
url="https://jsonplaceholder.typicode.com/users"/> (2)
<set-variable variableName="myVar" value="myVar Value"
doc:name="Set variable" doc:id="tgwhvc" /> (3)
<logger level="INFO" message="#[payload[0]]" doc:name="Logger Payload"
doc:id="9dbeda-430b1f" category="LOGGER-PAYLOAD-1"/> (4)
<logger level="INFO" message="#[attributes]" doc:name="Logger Attributes"
doc:id="9dbeda-430b1g" category="LOGGER-ATTRIBUTES-1"/> (5)
<logger level="INFO" message="#[vars]" doc:name="Logger Variables"
doc:id="9dbeda-430b1h" category="LOGGER-VARIABLES-1"/> (6)
<ee:transform doc:name="Transform" doc:id="qtxpfa" > (7)
<ee:message>
<ee:set-payload>
<![CDATA[%dw 2.0
output application/json
---
payload.id
]]>
</ee:set-payload>
<ee:set-attributes>
<![CDATA[%dw 2.0
output application/json
---
{
'status-code' : attributes.statusCode
}]]>
</ee:set-attributes>
</ee:message>
<ee:variables>
<ee:set-variable variableName="myVar2">
<![CDATA[%dw 2.0
output application/json
---
vars.myVar
]]>
</ee:set-variable>
<ee:set-variable variableName="myVar3">
<![CDATA[%dw 2.0
output application/json
---
{
'myNewVar' : 'myvariable3'
}]]>
</ee:set-variable>
</ee:variables>
</ee:transform>
<logger level="INFO" message="#[payload]" doc:name="Logger Payload 2"
doc:id="9dbeda-430b1c" category="LOGGER-PAYLOAD-2"/> (8)
<logger level="INFO" message="#[attributes]" doc:name="Logger Attributes 2"
doc:id="9dbeda-430b1d" category="LOGGER-ATTRIBUTES-2"/> (9)
<logger level="INFO" message="#[vars.myVar2]" doc:name="Logger Variables 2"
doc:id="9dbeda-430b1e" category="LOGGER-VARIABLES-2"/> (10)
<logger level="INFO" message="#[vars.myVar3.myNewVar]"
doc:name="Logger Variables 3"
doc:id="9dbeda-430b1g" category="LOGGER-VARIABLES-3"/> (11)
</flow>
1 | <http:listener/> は、エンドポイント /mytrigger でローカルホストポート 8081 への要求からフローをトリガーする HTTP Listener 操作を設定します。 |
2 | <http:request/> は、JSON データサンプルの HTTP 要求操作を設定します。 |
3 | <set-variable/> は、Mule 変数 myVar を文字列値「myVar Value」 に設定します。 |
4 | LOGGER-PAYLOAD-1 は、payload[0] の値を出力します。これは、 https://jsonplaceholder.typicode.com/users にあるユーザーオブジェクトの配列の最初のインデックスです。 |
5 | LOGGER-ATTRIBUTES-1 は、状況コード、理由を示す語句、ヘッダーなど、HTTP 要求から返された HTTP メタデータを出力するために、定義済み Mule 変数 attributes に設定されます。
|
6 | LOGGER-VARIABLES-1 は、Mule イベントで Mule 変数を記述するオブジェクトを出力するために、vars に設定されます。
{myVar=TypedValue[value: 'my VarValue', dataType: 'SimpleDataType{type=java.lang.String, mimeType='*/*; charset=UTF-8'}']} |
7 | <ee:transform/> は、Mule イベントのペイロード、属性、および変数データを選択して変換する DataWeave スクリプトを提供します。
|
8 | LOGGER-PAYLOAD-2 は、payload の変換された値を出力します。これはユーザー id 値の配列 ([1,2,3,4,5,6,7,8,9,10] ) になります。 |
9 | LOGGER-ATTRIBUTES-2 は、attributes の変換された値を出力します。これは JSON オブジェクト { "status-code": 200 } になります。 |
10 | LOGGER-VARIABLES-2 は、Mule 変数 vars.myVar2 の値 (文字列「myVar Value」 ) を出力します。 |
11 | LOGGER-VARIABLES-3 は、Mule 変数 vars.myVar3.myNewVar の値 (文字列「myvariable3」 ) を出力します。 |
ログの出力は次のようになります (読みやすいように編集済み)。
INFO 2023-10-24 16:59:43,279 ... [processor: myFlow/processors/2; event: 6699ea20-72c9-11ee-b3b5-147ddaaf4f97] LOGGER-PAYLOAD-1: { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz", "address": { "street": "Kulas Light", "suite": "Apt. 556", "city": "Gwenborough", "zipcode": "92998-3874", "geo": { "lat": "-37.3159", "lng": "81.1496" } }, "phone": "1-770-736-8031 x56442", "website": "hildegard.org", "company": { "name": "Romaguera-Crona", "catchPhrase": "Multi-layered client-server neural-net", "bs": "harness real-time e-markets" } } INFO 2023-10-24 16:59:43,333 ... [processor: myFlow/processors/3; event: 6699ea20-72c9-11ee-b3b5-147ddaaf4f97] LOGGER-ATTRIBUTES-1: org.mule.extension.http.api.HttpResponseAttributes { Status Code=200 Reason Phrase=OK Headers=[ date=Wed, 25 Oct 2023 20:00:48 GMT content-type=application/json; charset=utf-8 transfer-encoding=chunked connection=keep-alive x-powered-by=Express x-ratelimit-limit=1000 x-ratelimit-remaining=999 x-ratelimit-reset=1698156189 vary=Origin, Accept-Encoding access-control-allow-credentials=true cache-control=max-age=43200 pragma=no-cache expires=-1 x-content-type-options=nosniff etag=W/"160d-1eMSsxeJRfnVLRBmYJSbCiJZ1qQ" via=1.1 vegur cf-cache-status=HIT age=21484 report-to={"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=abcdefg1234..."}],"group":"cf-nel","max_age":604800} nel={"success_fraction":0,"report_to":"cf-nel","max_age":604800} server=cloudflare cf-ray=81bd0c408c729685-SJC alt-svc=h3=":443"; ma=86400 ] } INFO 2023-10-24 16:59:43,347 ... [processor: myFlow/processors/4; event: 6699ea20-72c9-11ee-b3b5-147ddaaf4f97] LOGGER-VARIABLES-1: {myVar=TypedValue[value: 'myVar Value', dataType: 'SimpleDataType{type=java.lang.String, mimeType='*/*; charset=UTF-8'}']} INFO 2023-10-24 16:59:43,512 ... [processor: myFlow/processors/6; event: 6699ea20-72c9-11ee-b3b5-147ddaaf4f97] LOGGER-PAYLOAD-2: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] INFO 2023-10-24 16:59:43,519 [processor: myFlow/processors/7; event: 6699ea20-72c9-11ee-b3b5-147ddaaf4f97] LOGGER-ATTRIBUTES-2: { "status-code": 200 } INFO 2023-10-24 16:59:43,528 ... [processor: myFlow/processors/8; event: 6699ea20-72c9-11ee-b3b5-147ddaaf4f97] LOGGER-VARIABLES-2: "myVar Value" INFO 2023-10-24 16:59:43,576 ... [processor: myFlow/processors/9; event: 6699ea20-72c9-11ee-b3b5-147ddaaf4f97] LOGGER-VARIABLES-3: "myvariable3"