mirth connect Database Reader автоматическое сопоставление столбцов

Пожалуйста, подтвердите следующее. Я использую Mirth Connect 3.5.08232. My Source Connector — это средство чтения базы данных.

Скажем, я использую запрос, который возвращает несколько строк и возвращает результат (через JavaScript), как предполагает документация, чтобы Мирт обрабатывал каждую строку как отдельное сообщение. Я также использую пару картографов в качестве исходных преобразователей и сохраняю сопоставленные поля в моей карте канала (которая в конечном итоге содержит только те поля, которые я определяю в преобразователях).

Как мне получить доступ к исходным полям в месте назначения и, в частности, в преобразователе ответов назначения (или в теле назначения, если это средство записи JavaScript)?

единственный способ, который я нашел методом проб и ошибок,

var rawMsg = connectorMessage.getRawData();
var xmlMsg = new XML(rawMsg);
logger.info(xmlMsg.some_field); // ignore the root element of rawMsg

Это правильный способ сделать это? Я думал, что, возможно, поля, которые были хорошо автоматически обнаружены, будут помещены в какую-то карту, например, sourceMap, но, похоже, это не так, верно?

Спасибо


person hello_earth    schedule 10.08.2017    source источник


Ответы (1)


Если вы используете шаги Mapper в вашем преобразователе для извлечения данных и помещения их в карту переменных (например, карту каналов), вы можете использовать любой из следующих методов для извлечения их из последующего контекста JavaScript (включая JavaScript Writer, и ваш ответный преобразователь):

var value = channelMap.get('key');
var value = $c('key');
var value = $('key');

Дополнительные сведения см. в разделе «Карты переменных» Руководства пользователя. Информация.

Итак, резюмируя, предположим, что вы выбираете столбец «mycolumn» с помощью средства чтения базы данных. XML, отправляемый на канал, будет примерно таким:

<result>
    <mycolumn>value</mycolumn>
</result>

Затем вы можете извлечь части этого сообщения в определенные переменные для последующего использования. Преобразователь позволяет легко перетаскивать фрагменты образца входящего сообщения. Этап преобразования Mapper

Наконец, в вашем JavaScript Writer (или в любом последующем фильтре, преобразователе или преобразователе ответов) просто перетащите значение в нужное поле: JavaScript Writer

И соответствующий код JavaScript будет автоматически вставлен: Вставленный код

И последнее замечание: если вы выбираете много переменных и не хотите делать шаги Mapper для каждой из них по отдельности, вы можете использовать шаг JavaScript для итерации по сообщению и извлечения каждого столбца в отдельная переменная карты:

for each (child in msg.children()) {
    channelMap.put(child.localName(), child.toString());
}

Или вы можете просто ссылаться на столбцы непосредственно из JavaScript Writer:

var msg = new XML(connectorMessage.getEncodedData());

var column1 = msg.column1.toString();
var column2 = msg.column2.toString();
...
person Nick Rupley    schedule 10.08.2017
comment
спасибо за ваш ответ - и за ваши многочисленные посты на сайте поддержки веселья. в конкретном случае я скорее хотел бы, чтобы все переменные каким-то образом автоматически отображались - на самом деле это сделано - просто способ их получения - через сериализованное внутреннее представление необработанного входного сообщения. - причина, по которой мне было интересно, заключается в том, что переменных может быть очень много, и было бы очень утомительно добавлять их одну за другой. но в любом случае - если такого способа нет (или, скажем, способа автоматического создания сопоставлений для всех полей ввода), то я с удовольствием отмечу ваш ответ как ответ. - person hello_earth; 10.08.2017
comment
Вам, конечно, не нужно создавать шаги Mapper по отдельности, если у вас их много. Используя шаг JavaScript, вы можете, например, автоматически сопоставить все. Я обновил свой ответ, чтобы отметить это. - person Nick Rupley; 10.08.2017