WSO2 ESB Enrich Mediator Fast Tutorial
Join the DZone community and get the full member experience.
Join For FreeEnrich Mediator can be used to perform transformations with in integration logic. It process a message based on a given source configuration and perform the specified action on the message by using the target configuration.
syntax
<enrich> <source \[clone=true\|false\] \[type=custom\|envelope\|body\|property\|inline\] xpath="" property="" /> <target \[action=replace\|child\|sibiling\] \[type=custom\|envelope\|body\|property\|inline\] xpath="" property="" /> </enrich>
As above you can see there is main two configuration
- Source
- Target
Source Configuration
Clone : By this you can clone or used as a reference during enrich mediation. (default value is false)
Type : Part that use from the original message to enrich the modified message
XPath Expression : Expression
Target Configuration
Action : Action can be applied to outgoing messages and it is define by type
Replace - replaces the XML message based on the target type specified (default action)
Child - Adding chile for the specified target type.
Sibling - Adding as a sibling of the specified target type.
eg:
<enrich xmlns="[a href="http://ws.apache.org/ns/synapse%22"]http://ws.apache.org/ns/synapse"> <source clone="false" type="envelope" xpath="" property="" /> <target action="replace" type="body" xpath="" property="" /> </enrich>
replacing xml part in payload
<proxy xmlns="http://ws.apache.org/ns/synapse" name="testingProxy4" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence> <log level="full"/> <enrich> <source type="inline"> <tran:rootId xmlns:tran="http://transport.org">5</tran:rootId> </source> <target xmlns:tran="http://transport.org" xpath="//tran:getBusNo/tran:rootId"/> </enrich> <log level="full"/> <send> <endpoint key="conf:/getBus"/> </send> </inSequence> <outSequence> <send/> </outSequence> </target> <publishWSDL uri="http://localhost:9763/services/BusServices?wsdl"/> <description></description> </proxy>
Here is sample proxy for Console:
Check with SOAP UI
Changing text in payload
<enrich> <source type="inline" clone="true">8</source> <target xmlns:tran="http://transport.org" xpath="//tran:getBusNo/tran:rootId/text()"/> </enrich>

Adding new Property for that request body
<enrich> <source type="inline" clone="true"> <busName xmlns="">Testing</busName> </source> <target type="body" action="child"/> </enrich>
Adding body or any customer Xpath in to property (new Property)
<enrich> <source type="body"/> <target type="property" property="REQUEST_PAYLOAD"/> </enrich> <log> <property name="Request Payload" expression="get-property('REQUEST_PAYLOAD')"/> </log>
Here is the last Proxy code in here
<proxy xmlns="http://ws.apache.org/ns/synapse" name="testingProxy4" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence> <log level="full"/> <enrich> <source type="inline" clone="true"> <busName xmlns="">Testing</busName> </source> <target type="body" action="child"/> </enrich> <enrich> <source type="body" clone="true"/> <target type="property" property="REQUEST_PAYLOAD"/> </enrich> <log> <property name="Request Payload" expression="get-property('REQUEST_PAYLOAD')"/> </log> <log level="full"/> <send> <endpoint key="conf:/getBus"/> </send> </inSequence> <outSequence> <send/> </outSequence> </target> <publishWSDL uri="http://localhost:9763/services/BusServices?wsdl"/> <description></description> </proxy>
Published at DZone with permission of Madhuka Udantha, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Trending
-
The SPACE Framework for Developer Productivity
-
Implementing a Serverless DevOps Pipeline With AWS Lambda and CodePipeline
-
Mastering Time Series Analysis: Techniques, Models, and Strategies
-
Auditing Tools for Kubernetes
Comments