Автоматизация выгрузки ИЭМК
Материал из ИбисоПедии
Версия от 10:39, 17 мая 2016; 192.168.1.56 (обсуждение) (Новая страница: «* Цель: Автоматическая выгрузка ИЭМК * Периодичность: ежеминутно Необходима etl схема в ба…»)
- Цель: Автоматическая выгрузка ИЭМК
- Периодичность: ежеминутно
Необходима etl схема в базе данных. Для её переноса использовать скрипт IBIS_ADM\AdminDB\helpers\etl.bat. Перед использованием скрипт необходимо скопировать в IBIS_ADM\AdminDB и вызывать оттуда. На базе mis3 необходимо выполнить дамп схемы. Файлы дампа будут находится в %DUMPDIR%.
etl.bat dump
Скопировать файлы дампа на сервер клиента в %DUMPDIT% и восстановить их
etl.bat restore
После этого создать событие со следующим SQL запросом
DO $$
DECLARE
r record;
uid UUID;
res record;
BEGIN
--выбираем самую последнюю запись в очереди и пытаемся ее передать
select * into r from iemk.iemk_upload_queue a where a.naz_id is null order by a.added asc limit 1;
RAISE NOTICE '%', r.id;
IF FOUND
THEN
--пытаемся передать документ
BEGIN
select etl.exch('adddoc',ARRAY[ r.id::text ]) into uid;
RAISE NOTICE '%', uid;
select * into res from etl.se_all a where a.id= uid;
RAISE NOTICE '%', res.res;
-- вставили в лог очереди ответ
INSERT INTO iemk.iemk_upload_events ( upload_id, event_time, respond, code, ambticket_id, hospdoc_id, naz_id, tp )
VALUES ( r.id, now(), res.res, 200, r.ambticket_id, r.hospdoc_id, r.naz_id, 3);
UPDATE iemk.iemk_upload_queue SET added=now() WHERE id=r.id;
--возможно ошибка при передаче, тогда просто проапдейтим время появления в очереди на текущее;
EXCEPTION WHEN OTHERS THEN
UPDATE iemk.iemk_upload_queue SET added=now() WHERE id=r.id;
END;
END IF;
END$$
LANGUAGE 'plpgsql';