Как получить ответ от другого канала в веселье
У нас есть два канала под названием channelA
а также channelB.
В канале А у нас есть два направления
а. Первый пункт назначения вызовет канал B с данными XML в качестве входных данных и получит ответ от канала B в формате XML.
б. получить ответ первого адресата в формате xml и обработать его.
var dest1 = responseMap.get("destination1");
var resMessage = dest1.getMessage();
Я получаю ответ ChannelB как "Message routed successfully".
Как я получу настоящий XML от channelB
вместо "Message routed successfully"
сообщение.
Мы делаем вышеупомянутые шаги, чтобы определить общие каналы так, чтобы мы могли использовать их в различных сценариях в приложении mirth.
Мы используем версию 2.2.1.5861.
3 ответа
Мы делаем что-то очень похожее на то, что вы описали. В нашем случае destination1 является отправителем SOAP (SOAP использует XML для своих конвертов отправки и получения). Вот синтаксис, который мы успешно используем в destination2 JavaScript Writer:
var dest1 = responseMap.get("destination1");
var resMessage = dest1.getStatus().toString();
if (resMessage == "SUCCESS")
{
var stringResponse = dest1.getMessage();
channelMap.put('stringResponse',stringResponse);
var xmlResponse = new XML(stringResponse);
// use e4x notation to parse xmlResponse
}
Если ваш destination1 не является отправителем SOAP, то XML-ответ от channelB может быть упакован каким-то образом, который вам нужно извлечь из "stringResponse". Вы можете увидеть содержимое переменной channelMap "stringResponse" после запуска сообщения через канал. Перейдите на панель инструментов, дважды щелкните канал, найдите сообщение, которое было отправлено, а затем просмотрите вкладку сопоставлений. Как на самом деле выглядит содержимое "stringResponse"? Это просто сообщение успешно отправлено? Или за этим текстом следует XML, который вам нужен?
Создайте ChannelB
having source data type as an XML
, and put source as a channel reader. You have to make a single destination on ChannelA
as a Channel Writer, and put ChannelB
in the details.
This way whatever message you get in the form of an XML in ChannelA
будут направлены в ChannelB
,
Я не могу комментировать предыдущий ответ, но еще один фрагмент информации... убедитесь, что вы используете правильные символы кавычек.
var dest1 = responseMap.get("destination1");
работает, но
var dest1 = responseMap.get('destination1');
не буду