Статьи

WSO2 ESB Enrich Mediator Краткое руководство

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>