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>