Flex Gateway新着情報
Governance新着情報
Monitoring API Managerスキーマ検証用に Mule 3 にバンドルされていた JSON Module が、Mule 4 で新しい JSON Module に置き換わります。
JSON を使用する変換を移行するには、DataWeave を使用することをお勧めします。
Mule 3 の場合、多くのコンポーネントでは、項目にアクセスできるようペイロードは POJO である必要がありました。Mule 4 では、JSON ペイロードで直接 DataWeave をクエリ言語として使用し、ペイロードを中間ステップとして POJO に変換する必要性を完全に回避できます。
json:json-to-object-transformer
に設定されるマッピングルールの場合は、DataWeave でルールを記述できます。
Mule 3 の場合:
例: マッパー設定で使用される Mixin
public abstract class AppleMixin
{
AppleMixin(@JsonProperty("bitten") boolean wasBitten)
{
super();
}
}
例: マッパーを参照するトランスフォーマー
<json:mapper name="myMapper">
<json:mixin mixinClass="org.mule.module.json.transformers.AppleMixin"
targetClass="org.mule.tck.testmodels.fruit.Apple"/>
</json:mapper>
<flow name="flow">
<json:json-to-object-transformer returnClass="org.mule.tck.testmodels.fruit.Apple"
mapper-ref="myMapper"/>
</flow>
Mule 4 の場合:
例: DataWeave をマッパーとして使用
<flow name="flow">
<ee:transform>
<ee:message>
<ee:set-payload>
<![CDATA[%dw 2.0
type apple = Object { class: "org.mule.tck.testmodels.fruit.Apple"}
output application/java
---
{
wasBitten = bitten
} as apple
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
</flow>
Mule 4 ではマッパーや mixin クラスを定義する必要がありません。マッピングルールは DataWeave コードを使用して定義されます。
json:object-to-json-transformer
のマッピングルールも DataWeave を使用して表されます。
Mule 3 の場合:
例: Mixin を使用したトランスフォーマー
<flow name="flow">
<json:object-to-json-transformer returnClass="org.mule.tck.testmodels.fruit.Apple">
<json:serialization-mixin mixinClass="org.mule.module.json.transformers.AppleMixin"
targetClass="org.mule.tck.testmodels.fruit.Apple"/>
</json:object-to-json-transformer>
</flow>
Mule 4 の場合:
例: DataWeave をマッパーとして使用
<flow name="flow">
<ee:transform>
<ee:message>
<ee:set-payload>
<![CDATA[%dw 2.0
output application/json
---
{
bitten = wasBitten
}
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
</flow>
Mule 4 では変換で出力形式を設定できます。この場合は、変換関数が JSON ペイロードを返すように式で出力を application/json
として定義します。
Mule 4 の JSON Module は、XSLT マッピングに基づいて JSON を変換するコンポーネントは提供されていません。この場合には、次のような対処法があります。
XSLT を DataWeave 変換に移行する (推奨)。
XML Module の XSLT サポートを使用して最初にペイロードを XML に変換する。
<flow name="flow">
...
<xml-module:xslt-transform>
<xml-module:content>#[output application/xml --- payload]</xml-module:content>
<xml-module:xslt>
(the XSLT transformation) ...
</xml-module:xslt>
</xml-module:xslt-transform>
...
</flow>