Я развернул прокси-службу в WSO2 ESB для получения набора данных из SOAP WS, и у меня есть OutSequence на основе последовательности, вызывающей шаблон.Переключение OutSequence в службе WSO2 ESB Proxy на основе ответа SOAP
Мне нужно направить различные ответы WS на основе различных запросов, маршрутизирующих их на разные файлы, написанные транспортом vfs.
Реальная последовательность такова:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="seq_prova_con_template">
<call-template target="file">
<with-param name="filename" value="IstatAllDataflow-template.xml"></with-param>
</call-template>
</sequence>
Я думаю о включение случае медиатора, но я хотел бы понять, как «поймать» информацию для выбора правильного случая. В примере:
`<switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http://services.samples/xsd">
<case regex="IBM">
<!-- the property mediator sets a local property on the *current* message -->
<property name="symbol" value="Great stock - IBM"/>
</case>
<case regex="MSFT">
<property name="symbol" value="Are you sure? - MSFT"/>
</case>
<default>
<!-- it is possible to assign the result of an XPath or JSON Path expression as well -->
<property name="symbol"
expression="fn:concat('Normal Stock - ', //m0:getQuote/m0:request/m0:symbol)"
xmlns:m0="http://services.samples/xsd"/>
</default>
`
я спрашиваю себя, как установить источник параметров корпуса выключателя, и я хотел бы знать, если кто-то уже внедрили решение, как это сделано для того, чтобы использовать один прокси-сервис для различения различных ответов от WS. Моя последовательность выглядит следующим образом:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="seq_template_switch">
<switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:m0="http://services.samples" source="??????">
<case regex="QueryStructure">
<call-template target="file">
<with-param name="filename" value="IstatAllDataflow-template.xml"></with-param>
</call-template>
</case>
<case regex="GetCompactData">
<call-template target="file">
<with-param name="filename" value="GetCompactData-template.xml"></with-param>
</call-template>
</case>
</switch>
</sequence>
мне нужно поймать выбор для случая переключения от метода че внутри запроса моего сообщения с запросом, чтобы написать определенный файл, когда я попросить своего рода ответ , и другой файл с другим именем, когда я спрашиваю о другом виде ответа.
[EDIT] Файл журнала имеет следующее:
TID: [0] [ESB] [2015-09-18 10:33:09,125] INFO {org.apache.synapse.mediators.builtin.LogMediator} - To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:7cc540d3-2893-4b0e-8a24-ab4538236d45, Direction: response, Envelope: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><QueryStructureResponse xmlns="http://ec.europa.eu/eurostat/sri/service/2.0"><QueryStructureResult><RegistryInterface xmlns="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message"><Header><ID>IT1001</ID><Test>true</Test><Name xml:lang="en">ISTAT_JD_237</Name><Prepared>2001-03-11T15:30:47+01:00</Prepared><Sender id="ISTAT"><Name xml:lang="en">Italian Statistical Institute</Name><Contact>
Было бы полезно сделать выбор переключатель/случае посредник о теге <QueryStructureResponse>
. Например, вместо этого тега я мог бы иметь <GetCompactData>
. Я хотел бы создать медиатор switch/case, который управляется наличием одного из этих двух тегов. Это было бы хорошим началом для понимания того, как использовать расположение XPath и использовать единую последовательность для дифференциации ответов SOAP в разных файлах с помощью транспорта vfs. Выбор файла для записи будет осуществляться по типу ответа от WS.
Вы хотите вызывать разные последовательности на основе контента в вашем ответе SOAP. пожалуйста, исправьте меня, если мое понимание ошибочно. Укажите ответ SOAP, чтобы ответить на ваш вопрос. –
Я думаю, что это более полезно, основываясь на содержании в моем запросе SOAP: я мог бы поместить эту последовательность в запланированную задачу или использовать запрос с прокси-сервисом, и я хотел бы конвоировать ответ в соответствии с запросом. Я не знаю, что добавить в исходную последовательность коммутатора, если я хочу, чтобы chuose адресата в соответствии с некоторыми ключевыми словами в сообщении запроса. Надеюсь, я был ясен, спасибо вам большое. – FDC
вам нужно использовать Xpath в источнике. –