Enrich Mediator может использоваться для выполнения преобразований в логике интеграции. Он обрабатывает сообщение на основе заданной исходной конфигурации и выполняет указанное действие с сообщением, используя целевую конфигурацию.
синтаксис
<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>
Как показано выше, вы можете увидеть две основные конфигурации
- Источник
- цель
Конфигурация источника
Клонирование: этим вы можете клонировать или использовать в качестве ссылки во время обогащения посредничества. (значение по умолчанию — false)
Тип: деталь, которая используется из исходного сообщения для обогащения измененного сообщения.
Выражение XPath: выражение
Конфигурация цели
Действие: Действие можно применить к исходящим сообщениям, и оно определяется по типу
Заменить — заменяет XML-сообщение на основе указанного целевого типа (действие по умолчанию).
Дочерний элемент — Добавление чили для указанного целевого типа.
Родной брат — Добавление родного брата указанного целевого типа.
например:
<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>
замена XML-части в полезной нагрузке
<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>
Вот пример прокси для Консоли:
Проверьте с SOAP UI
Изменение текста в полезной нагрузке
<enrich> <source type="inline" clone="true">8</source> <target xmlns:tran="http://transport.org" xpath="//tran:getBusNo/tran:rootId/text()"/> </enrich>
Добавление нового свойства для этого тела запроса
<enrich>
<source type="inline" clone="true">
<busName xmlns="">Testing</busName>
</source>
<target type="body" action="child"/>
</enrich>
Добавление тела или любого клиента Xpath в собственность (новое свойство)
<enrich>
<source type="body"/>
<target type="property" property="REQUEST_PAYLOAD"/>
</enrich>
<log>
<property name="Request Payload" expression="get-property('REQUEST_PAYLOAD')"/>
</log>
Вот последний прокси-код здесь
<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>




