2016-07-29 3 views
0

Я новичок в разработке TIBCO BW. Мне нужно ваше мнение экспертов, поскольку я застрял, чтобы создать XML-файл ответа. Вот сценарий.как анализировать входящий XML-файл в HTTP-запросе и генерировать ответ на основе входящих XML-данных в Tibco BW

Я получаю XML-файл в HTTP-запросе и после разбора XML-структуры входящего запроса мне нужно создать ответный документ, который будет действовать как заглушка для входящего запроса.

Сначала я создаю HTTP-приемник, который будет выполнять прием XML-файла в HTTP-запросе. Затем я использовал Parse XML для анализа входящего XML-документа правильно или неправильно. После этого действия я застрял, так как после этого создаю Render XML-активность, но он не извлекает данные даже после того, как я сопоставляю входящий запрос, обработанный активностью Parse XML, во время тестирования я могу видеть, что он получает весь XML в Ввод, но даже после сопоставления вывода с помощью ввода из парсинга, я получаю значения NULL, следовательно, сталкиваются с ошибками.

Пожалуйста, дайте мне знать, где я делаю неправильно, или я должен использовать любой другой метод, чтобы поймать входящие значения, чтобы я мог создать правильный XML-документ ответа, который будет использоваться в качестве ответа.

+0

Не могли бы вы загрузить свой проект BW? Я бы предположил, что существует разница в том, что вы определили как структуру ввода Render XML-активности и вывод активности Parse XML или сопоставление между ними. – Seb

ответ

0

После того как вы получили HTTP-запрос, проанализировали данные HTTP-сообщения с помощью операции «Анализ XML», я настоятельно рекомендую вам использовать «Mapper» для сопоставления вашего ввода (полученного и проанализированного как XML) с выходом XML схемы. Этот результат можно легко вернуть после.

Например,

Мой HTTP клиент посылает мне XML, как этот enter image description here

И я хочу, чтобы вернуть XML, как это с добавлением а и Ь enter image description here

Процесс : Process

И преобразователь

enter image description here

И конец, вы можете отправить ответ XML HTTP, как это:

enter image description here


EDIT (комментарий): Чтобы изменить префикс пространства имен в процессе. Вы должны щелкнуть по процессу (меню левой руки), а внизу, есть кнопка «Registry Namespace» enter image description here , если вы нажмете на нее, вы сможете изменить имя префикса. enter image description here

Но имейте в виду, что подобные манипуляции могут нарушить существующее сопоставление в процессе, потому что все XML базируется в Tibco BW.

+0

Большое вам спасибо @gjeanmart за подробное описание того, как решить проблему, используя HTTP Pallete. поскольку я был в спешке, я передал свой код, чтобы использовать SOAP Pallete, чтобы получить запрос и отправить ответ SoapSendReply. все отлично, за исключением пространства имен, знаете ли вы, как заменить префикс SOAP-ENV на префикс soapenv, а также префикс пространства имен от ns0: имя пользователя к имени пользователя. –

+0

Редактирование пространств имен префикса в процессе. Вы должны щелкнуть по процессу (меню слева), а внизу - кнопка «Реестр имен» , если вы нажмете на нее, вы сможете изменить имя префикса. Но имейте в виду, что подобная манипуляция может сломать существующее отображение в процессе, потому что все это XML, основанный на Tibco BW. [Я отредактировал ответ с более подробной информацией] –

+0

Здравствуйте, @gjeanmart, благодарю вас за ответ. Я теперь застрял в крайнем случае, где контент-тип soapsendreply. здесь я изменил mime contenttype на text/xml, но приложение, которое получает ответ, всегда говорит, что оно получает как text/html, но в soapUI я получаю правильный ответ как text/xml. здесь - снимок того же: - «HTTP/1.1 200 OK [\ r] [\ n]" "Сервер: Apache-Coyote/1.1 [\ r] [\ n]" "Content-Type: multipart/связанный с этим: type = "text/xml"; , но в журналах приложений я нахожу: - –