Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerPluck
関数を使用したキー-値ペアの抽出キー-値ペアを操作する DataWeave 関数 (entriesOf、keysOf、valuesOf など) に加えて、pluck を使用することもできます。以下の Mule アプリケーションの例では、DataWeave pluck
関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。その際、変数名をキー、その値を対応する値として使用します。
Mule アプリケーションは次のコンポーネントで構成されます。
フローをトリガーする Scheduler コンポーネント
JSON ペイロードを設定する Set Payload コンポーネント
pluck
関数でキー-値ペアを抽出して配列に配置することで、Set Payload コンポーネントから読み取ったコンテンツを変換する Transform Message コンポーネント
配列を反復処理する For Each スコープコンポーネント
変数名をキー、変数値を値として JSON 配列に設定する Set Variable コンポーネント
反復ごとに変数結果を出力する Logger コンポーネント
アプリケーション XML ファイル (読みやすいように再書式設定):
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<flow name="json-varsFlow" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<fixed-frequency frequency="10000"/>
</scheduling-strategy>
</scheduler>
<set-payload value='{"firstName": "jason", "job": "engineer", "dept":"support"}'
doc:name="Set Payload"
mimeType="application/json" />
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload pluck (value,key) -> {
Test:{
Key: key,
Value: value
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<foreach doc:name="For Each"
collection="#[payload.Test]">
<logger level="INFO" doc:name="Logger" message="#[payload]" />
<set-variable value="#[payload.Value]"
doc:name="Set Variable"
variableName="#[payload.Key]"/>
<logger level="INFO"
doc:name="Logger"
message="#[vars[payload.Key]]"/>
</foreach>
</flow>
</mule>
Transform Message では次の DataWeave スクリプトを設定します。
%dw 2.0
output application/json
---
payload pluck (value,key) -> {
Test: {
Key: key,
Value: value
}
}
Mule アプリケーションが次の JSON ペイロードを使用して実行される場合:
{
"firstName": "jason", "job": "engineer", "dept":"support"
}
DataWeave の変換結果は次のようになります。
[
{
"Test": {
"Key": "firstName",
"Value": "jason"
}
},
{
"Test": {
"Key": "job",
"Value": "engineer"
}
},
{
"Test": {
"Key": "dept",
"Value": "support"
}
}
]
For Each スコープコンポーネントは変換された値を反復処理し、アプリケーションは変数結果の値を (読みやすいように再書式設定して) ログに記録します。
INFO 2022-06-22 10:11:17,864 [[MuleRuntime].uber.02: [jsonsample].json-varsFlow.CPU_INTENSIVE @5c652aa] [processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "firstName", "Value": "jason" } INFO 2022-06-22 10:11:17,870 [[MuleRuntime].uber.02: [jsonsample].json-varsFlow.CPU_INTENSIVE @5c652aa] [processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "jason" INFO 2022-06-22 10:11:17,871 [[MuleRuntime].uber.02: [jsonsample].json-varsFlow.CPU_INTENSIVE @5c652aa] [processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "job", "Value": "engineer" } INFO 2022-06-22 10:11:17,875 [[MuleRuntime].uber.02: [jsonsample].json-varsFlow.CPU_INTENSIVE @5c652aa] [processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "engineer" INFO 2022-06-22 10:11:17,877 [[MuleRuntime].uber.02: [jsonsample].json-varsFlow.CPU_INTENSIVE @5c652aa] [processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "dept", "Value": "support" } INFO 2022-06-22 10:11:17,879 [[MuleRuntime].uber.02: [jsonsample].json-varsFlow.CPU_INTENSIVE @5c652aa] [processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "support"