2015-10-12 2 views
0

У меня есть канал, у которого есть считыватель, настроенный на выполнение запроса SQL каждые 5 секунд и вставка новой строки в другую таблицу.Mirth postprocessor

В таблице, где он будет вставлять данные в:

CREATE TABLE timings(
    id SERIAL NOT NULL, 
    type TEXT NOT NULL, 
    time TIMESTAMP NOT NULL 
); 

запроса в постпроцессор:

INSERT INTO timings (type, time) VALUES (${name}, NOW()); 

${name} исходит из основного запроса SQL.

После выполнения запроса (тот, который будет генерировать сообщение), он выполняет запрос постпроцессора, даже если из запроса ничего не выводится. Есть ли способ запуска сценария постпроцессора только тогда, когда запрос SQL возвращает что-то?

Кроме того, оно использует последнее имя обновления каждые 5 секунд, даже если не было данных. Странно, что он использует последнее имя обновления (${name}) для всех новых INSERT s, в результате чего много и много строк содержат одни и те же данные (за исключением столбца time). Это нормально?

Я использую PostgreSQL в качестве механизма базы данных.

ответ

0

Почтовый процессор выполняется каждый раз при запуске сообщения, высылающего все адресаты. Если вы хотите выполнить свой запрос только в том случае, если цель была успешной, используйте трансформимер ответа. Они расположены в канальных задачах под трансформатором. Там вы можете использовать responseStatus.

if (responseStatus == SENT) { 
// do your stuff 
} 
0

Использование постпроцессора не там, где я бы сделал свою запись в db. Простой пункт назначения будет работать нормально. Затем вы можете поместить фильтр для пустого «имени» в источнике.

Смежные вопросы