Сохранение оригинала ответа удаленного сервера
This commit is contained in:
parent
f4f52c6e89
commit
28e117aac7
@ -13,7 +13,7 @@ const express = require("express"); //WEB-сервер Express
|
||||
const bodyParser = require("body-parser"); //Модуль для Express (разбор тела входящего запроса)
|
||||
const { ServerError } = require("./server_errors"); //Типовая ошибка
|
||||
const { makeErrorText, validateObject, buildURL, getAppSrvFunction } = require("./utils"); //Вспомогательные функции
|
||||
const { NINC_EXEC_CNT_YES } = require("../models/prms_db_connector"); //Схемы валидации параметров функций модуля взаимодействия с БД
|
||||
const { NINC_EXEC_CNT_YES, NIS_ORIGINAL_NO } = require("../models/prms_db_connector"); //Схемы валидации параметров функций модуля взаимодействия с БД
|
||||
const objInQueueSchema = require("../models/obj_in_queue"); //Схема валидации сообщений обмена с бработчиком очереди входящих сообщений
|
||||
const objServiceSchema = require("../models/obj_service"); //Схемы валидации сервиса
|
||||
const objServiceFnSchema = require("../models/obj_service_function"); //Схемы валидации функции сервиса
|
||||
@ -160,7 +160,8 @@ class InQueue extends EventEmitter {
|
||||
blResp = resBefore.blResp;
|
||||
q = await this.dbConn.setQueueResp({
|
||||
nQueueId: q.nId,
|
||||
blResp
|
||||
blResp,
|
||||
nIsOriginal: NIS_ORIGINAL_NO
|
||||
});
|
||||
}
|
||||
//Если пришел флаг ошибочной аутентификации и он положительный - то это ошибка, дальше ничего не делаем
|
||||
@ -235,7 +236,8 @@ class InQueue extends EventEmitter {
|
||||
blResp = resAfter.blResp;
|
||||
q = await this.dbConn.setQueueResp({
|
||||
nQueueId: q.nId,
|
||||
blResp
|
||||
blResp,
|
||||
nIsOriginal: NIS_ORIGINAL_NO
|
||||
});
|
||||
}
|
||||
//Если пришел флаг ошибочной аутентификации и он положительный - то это ошибка, дальше ничего не делаем
|
||||
|
@ -26,7 +26,12 @@ const {
|
||||
SERR_DB_SERVER,
|
||||
SERR_UNAUTH
|
||||
} = require("./constants"); //Глобальные константы
|
||||
const { NINC_EXEC_CNT_YES, NINC_EXEC_CNT_NO } = require("../models/prms_db_connector"); //Схемы валидации параметров функций модуля взаимодействия с БД
|
||||
const {
|
||||
NINC_EXEC_CNT_YES,
|
||||
NINC_EXEC_CNT_NO,
|
||||
NIS_ORIGINAL_NO,
|
||||
NIS_ORIGINAL_YES
|
||||
} = require("../models/prms_db_connector"); //Схемы валидации параметров функций модуля взаимодействия с БД
|
||||
|
||||
//--------------------------
|
||||
// Глобальные идентификаторы
|
||||
@ -205,7 +210,8 @@ const appProcess = async prms => {
|
||||
prms.queue.blResp = new Buffer(serverResp);
|
||||
await dbConn.setQueueResp({
|
||||
nQueueId: prms.queue.nId,
|
||||
blResp: prms.queue.blResp
|
||||
blResp: prms.queue.blResp,
|
||||
nIsOriginal: NIS_ORIGINAL_YES
|
||||
});
|
||||
//Выполняем обработчик "После" (если он есть)
|
||||
if (prms.function.sAppSrvAfter) {
|
||||
@ -231,7 +237,8 @@ const appProcess = async prms => {
|
||||
prms.queue.blResp = resAfter.blResp;
|
||||
await dbConn.setQueueResp({
|
||||
nQueueId: prms.queue.nId,
|
||||
blResp: prms.queue.blResp
|
||||
blResp: prms.queue.blResp,
|
||||
nIsOriginal: NIS_ORIGINAL_NO
|
||||
});
|
||||
}
|
||||
//Применим ответ "После" - флаг утентификации сервиса
|
||||
|
@ -120,6 +120,10 @@ create or replace package PKG_EXS as
|
||||
NQUEUE_RESET_DATA_NO constant number(1) := 0; -- Íå ñáðàñûâàòü
|
||||
NQUEUE_RESET_DATA_YES constant number(1) := 1; -- Ñáðàñûâàòü
|
||||
|
||||
/* Êîíñòàíòû - ïðèçíàê îðèãèíàëà äàííûõ */
|
||||
NIS_ORIGINAL_NO constant number(1) := 0; -- Îðèãèíàë
|
||||
NIS_ORIGINAL_YES constant number(1) := 1; -- Íå îðèãèíàë
|
||||
|
||||
/* Êîíñòàíòû - îæèäàåìûé èíòåðôåéñ ïðîöåäóðû îáðàáîòêè ñîîáùåíèÿ î÷åðåäè íà ñòîðîíå ÁÄ */
|
||||
SPRC_RESP_ARGS constant varchar2(80) := 'NIDENT,IN,NUMBER;NEXSQUEUE,IN,NUMBER;'; -- Ñïèñîê ïàðàìåòðîâ ïðîöåäóðû îáðàáîòêè
|
||||
|
||||
@ -478,16 +482,18 @@ create or replace package PKG_EXS as
|
||||
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè */
|
||||
procedure QUEUE_RESP_SET
|
||||
(
|
||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||
BRESP in blob -- Ðåçóëüòàò îáðàáîòêè
|
||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||
NIS_ORIGINAL in number := NIS_ORIGINAL_NO -- Ïðèçíàê ïåðåäà÷è îðèãèíàëüíîãî ðåçóëüòàòà îáðàáîòêè (ñì. êîíñòàíòû NIS_ORIGINAL*, null - íå îðèãèíàë)
|
||||
);
|
||||
|
||||
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè (âîçâðàùàåò èçìåíåííóþ ïîçèöèþ î÷åðåäè) */
|
||||
procedure QUEUE_RESP_SET
|
||||
(
|
||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||
RCQUEUE out sys_refcursor -- Êóðñîð ñ èçìåí¸ííîé ïîçèöèåé î÷åðåäè
|
||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||
NIS_ORIGINAL in number := NIS_ORIGINAL_NO, -- Ïðèçíàê ïåðåäà÷è îðèãèíàëüíîãî ðåçóëüòàòà îáðàáîòêè (ñì. êîíñòàíòû NIS_ORIGINAL*, null - íå îðèãèíàë)
|
||||
RCQUEUE out sys_refcursor -- Êóðñîð ñ èçìåí¸ííîé ïîçèöèåé î÷åðåäè
|
||||
);
|
||||
|
||||
/* Ñ÷èòûâàíèå äàííûõ ñîîáùåíèÿ çàïèñè î÷åðåäè */
|
||||
@ -2115,13 +2121,17 @@ create or replace package body PKG_EXS as
|
||||
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè */
|
||||
procedure QUEUE_RESP_SET
|
||||
(
|
||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||
BRESP in blob -- Ðåçóëüòàò îáðàáîòêè
|
||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||
NIS_ORIGINAL in number := NIS_ORIGINAL_NO -- Ïðèçíàê ïåðåäà÷è îðèãèíàëüíîãî ðåçóëüòàòà îáðàáîòêè (ñì. êîíñòàíòû NIS_ORIGINAL*, null - íå îðèãèíàë)
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Âûñòàâèì ðåçóëüòàò */
|
||||
update EXSQUEUE T set T.RESP = BRESP where T.RN = NEXSQUEUE;
|
||||
update EXSQUEUE T
|
||||
set T.RESP = BRESP,
|
||||
T.RESP_ORIGINAL = DECODE(NVL(NIS_ORIGINAL, NIS_ORIGINAL_NO), NIS_ORIGINAL_NO, T.RESP_ORIGINAL, BRESP)
|
||||
where T.RN = NEXSQUEUE;
|
||||
if (sql%rowcount = 0) then
|
||||
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NEXSQUEUE, SUNIT_TABLE => 'EXSQUEUE');
|
||||
end if;
|
||||
@ -2130,14 +2140,15 @@ create or replace package body PKG_EXS as
|
||||
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè (âîçâðàùàåò èçìåíåííóþ ïîçèöèþ î÷åðåäè) */
|
||||
procedure QUEUE_RESP_SET
|
||||
(
|
||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||
RCQUEUE out sys_refcursor -- Êóðñîð ñ èçìåí¸ííîé ïîçèöèåé î÷åðåäè
|
||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||
NIS_ORIGINAL in number := NIS_ORIGINAL_NO, -- Ïðèçíàê ïåðåäà÷è îðèãèíàëüíîãî ðåçóëüòàòà îáðàáîòêè (ñì. êîíñòàíòû NIS_ORIGINAL*, null - íå îðèãèíàë)
|
||||
RCQUEUE out sys_refcursor -- Êóðñîð ñ èçìåí¸ííîé ïîçèöèåé î÷åðåäè
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Âûñòàâèì ðåçóëüòàò */
|
||||
QUEUE_RESP_SET(NEXSQUEUE => NEXSQUEUE, BRESP => BRESP);
|
||||
QUEUE_RESP_SET(NEXSQUEUE => NEXSQUEUE, BRESP => BRESP, NIS_ORIGINAL => NIS_ORIGINAL);
|
||||
/* Âåðíåì èçìåíåííóþ ïîçèöèþ î÷åðåäè */
|
||||
QUEUE_GET(NFLAG_SMART => 0, NEXSQUEUE => NEXSQUEUE, RCQUEUE => RCQUEUE);
|
||||
end QUEUE_RESP_SET;
|
||||
@ -2401,7 +2412,7 @@ create or replace package body PKG_EXS as
|
||||
/* Çàôèêñèðóåì ðåçóëüòàò îáðàáîòêè (äëÿ âõîäÿùèõ - âñåãäà, äëÿ èñõîäÿùèõ - òîëüêî åñëè íå ïóñòîé) */
|
||||
if ((REXSSERVICE.SRV_TYPE = NSRV_TYPE_RECIVE) or
|
||||
((REXSSERVICE.SRV_TYPE = NSRV_TYPE_SEND) and (BRESP is not null) and (DBMS_LOB.GETLENGTH(BRESP) > 0))) then
|
||||
QUEUE_RESP_SET(NEXSQUEUE => REXSQUEUE.RN, BRESP => BRESP);
|
||||
QUEUE_RESP_SET(NEXSQUEUE => REXSQUEUE.RN, BRESP => BRESP, NIS_ORIGINAL => NIS_ORIGINAL_NO);
|
||||
end if;
|
||||
/* Åñëè ýòî áûëà ôóíêöèÿ íà÷àëà ñåàíñà */
|
||||
if (REXSSERVICEFN.FN_TYPE = NFN_TYPE_LOGIN) then
|
||||
|
70
db/P_EXSQUEUE_BASE_EXPORT.prc
Normal file
70
db/P_EXSQUEUE_BASE_EXPORT.prc
Normal file
@ -0,0 +1,70 @@
|
||||
create or replace procedure P_EXSQUEUE_BASE_EXPORT
|
||||
(
|
||||
NRN in number, -- Ðåãèñòðàöèîííûé íîìåð î÷åðåäè îáìåíà
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
STYPE_FILE in varchar2, -- Ðàñøèðåíèå ôàéëà
|
||||
NMSG in number, -- Ïðèçíàê âûãðóçêè ñîîáùåíèÿ î÷åðåäè îáìåíà (0 - íå âûãðóæàòü, 1 - âûãðóæàòü)
|
||||
NRESP in number, -- Ïðèçíàê âûãðóçêè îòâåòà î÷åðåäè îáìåíà (0 - íå âûãðóæàòü, 1 - âûãðóæàòü)
|
||||
NMSG_ORIGINAL in number, -- Ïðèçíàê âûãðóçêè îðèãèíàëà ñîîáùåíèÿ î÷åðåäè îáìåíà (0 - íå âûãðóæàòü, 1 - âûãðóæàòü)
|
||||
NRESP_ORIGINAL in number -- Ïðèçíàê âûãðóçêè îðèãèíàëà îòâåòà î÷åðåäè îáìåíà (0 - íå âûãðóæàòü, 1 - âûãðóæàòü)
|
||||
)
|
||||
as
|
||||
SFILENAME PKG_STD.TSTRING; -- Íàèìåíîâàíèå ôàéëà
|
||||
DIN_DATE EXSQUEUE.IN_DATE%type; -- Äàòà è âðåìÿ ïîñòàíîâêè â î÷åðåäü
|
||||
SIN_AUTHID EXSQUEUE.IN_AUTHID%type; -- Ïîëüçîâàòåëü, ïîñòàâèâøèé â î÷åðåäü
|
||||
BMSG EXSQUEUE.MSG%type; -- Ñîîáùåíèå î÷åðåäè îáìåíà
|
||||
BRESP EXSQUEUE.RESP%type; -- Îòâåò î÷åðåäè îáìåíà
|
||||
BMSG_ORIGINAL EXSQUEUE.MSG_ORIGINAL%type; -- Îðèãèíàë ñîîáùåíèÿ î÷åðåäè îáìåíà
|
||||
BRESP_ORIGINAL EXSQUEUE.RESP_ORIGINAL%type; -- Îðèãèíàë îòâåòà î÷åðåäè îáìåíà
|
||||
begin
|
||||
/* Ïîèñê íåîáõîäèìûõ çíà÷åíèé î÷åðåäè îáìåíà */
|
||||
begin
|
||||
select IN_DATE,
|
||||
IN_AUTHID,
|
||||
MSG,
|
||||
RESP,
|
||||
MSG_ORIGINAL,
|
||||
RESP_ORIGINAL
|
||||
into DIN_DATE,
|
||||
SIN_AUTHID,
|
||||
BMSG,
|
||||
BRESP,
|
||||
BMSG_ORIGINAL,
|
||||
BRESP_ORIGINAL
|
||||
from EXSQUEUE
|
||||
where RN = NRN;
|
||||
exception
|
||||
when NO_DATA_FOUND then
|
||||
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NRN);
|
||||
end;
|
||||
/* Ôîðìèðîâàíèå íàèìåíîâàíèÿ ôàéëà */
|
||||
SFILENAME := TO_CHAR(NRN) || '_' || TO_CHAR(DIN_DATE, 'dd_mm_yyyy_hh24_mi') || '_' || SIN_AUTHID ||
|
||||
NULLIF('.' || STYPE_FILE, '.');
|
||||
/* Âûãðóçêà ñîîáùåíèÿ */
|
||||
if (NMSG = 1) then
|
||||
/* Äîáàâëåíèå äàííûõ â áóôåð äëÿ âûãðóçêè â ôàéë */
|
||||
P_FILE_BUFFER_INSERT(NIDENT => NIDENT, CFILENAME => 'MESSAGE_' || SFILENAME, CDATA => null, BLOBDATA => BMSG);
|
||||
end if;
|
||||
/* Âûãðóçêà îòâåòà */
|
||||
if (NRESP = 1) then
|
||||
/* Äîáàâëåíèå äàííûõ â áóôåð äëÿ âûãðóçêè â ôàéë */
|
||||
P_FILE_BUFFER_INSERT(NIDENT => NIDENT, CFILENAME => 'RESPOND_' || SFILENAME, CDATA => null, BLOBDATA => BRESP);
|
||||
end if;
|
||||
/* Âûãðóçêà îðèãèíàëà ñîîáùåíèÿ */
|
||||
if (NMSG_ORIGINAL = 1) then
|
||||
/* Äîáàâëåíèå äàííûõ â áóôåð äëÿ âûãðóçêè â ôàéë */
|
||||
P_FILE_BUFFER_INSERT(NIDENT => NIDENT,
|
||||
CFILENAME => 'MESSAGE_ORIGINAL_' || SFILENAME,
|
||||
CDATA => null,
|
||||
BLOBDATA => BMSG_ORIGINAL);
|
||||
end if;
|
||||
/* Âûãðóçêà îðèãèíàëà îòâåòà */
|
||||
if (NRESP_ORIGINAL = 1) then
|
||||
/* Äîáàâëåíèå äàííûõ â áóôåð äëÿ âûãðóçêè â ôàéë */
|
||||
P_FILE_BUFFER_INSERT(NIDENT => NIDENT,
|
||||
CFILENAME => 'RESPOND_ORIGINAL_' || SFILENAME,
|
||||
CDATA => null,
|
||||
BLOBDATA => BRESP_ORIGINAL);
|
||||
end if;
|
||||
end;
|
||||
/
|
62
db/P_EXSQUEUE_BASE_INSERT.prc
Normal file
62
db/P_EXSQUEUE_BASE_INSERT.prc
Normal file
@ -0,0 +1,62 @@
|
||||
create or replace procedure P_EXSQUEUE_BASE_INSERT
|
||||
(
|
||||
DIN_DATE in date, -- Äàòà è âðåìÿ ïîñòàíîâêè â î÷åðåäü
|
||||
SIN_AUTHID in varchar2, -- Ïîëüçîâàòåëü, ïîñòàâèâøèé â î÷åðåäü
|
||||
NEXSSERVICEFN in number, -- Ññûëêà íà çàïèñü òàáëèöû "Ñåðâèñû îáìåíà (ôóíêöèè)"
|
||||
DEXEC_DATE in date, -- Äàòà è âðåìÿ îáðàáîòêè
|
||||
NEXEC_CNT in number, -- Êîëè÷åñòâî ïîïûòîê îáðàáîòêè
|
||||
NEXEC_STATE in number, -- Ñòàòóñ îáðàáîòêè
|
||||
SEXEC_MSG in varchar2, -- Ñîîáùåíèå îáðàáîòêè
|
||||
BMSG in blob, -- Ñîîáùåíèå
|
||||
BRESP in blob, -- Îòâåò
|
||||
NEXSQUEUE in number, -- Ñâÿçàííàÿ ïîçèöèÿ î÷åðåäè
|
||||
NLNK_COMPANY in number, -- Ñâÿçàííàÿ îðãàíèçàöèÿ
|
||||
NLNK_DOCUMENT in number, -- Ñâÿçàííàÿ çàïèñü
|
||||
SLNK_UNITCODE in varchar2, -- Ñâÿçàííûé ðàçäåë
|
||||
SOPTIONS in varchar2, -- Ïàðàìåòðû
|
||||
NRN out number -- Ðåãèñòðàöèîííûé íîìåð
|
||||
)
|
||||
as
|
||||
begin
|
||||
/* Ãåíåðàöèÿ ðåãèñòðàöèîííîãî íîìåðà */
|
||||
NRN := GEN_ID;
|
||||
|
||||
/* Äîáàâëåíèå çàïèñè â òàáëèöó */
|
||||
insert into EXSQUEUE
|
||||
(RN,
|
||||
IN_DATE,
|
||||
IN_AUTHID,
|
||||
EXSSERVICEFN,
|
||||
EXEC_DATE,
|
||||
EXEC_CNT,
|
||||
EXEC_STATE,
|
||||
EXEC_MSG,
|
||||
MSG,
|
||||
RESP,
|
||||
EXSQUEUE,
|
||||
LNK_COMPANY,
|
||||
LNK_DOCUMENT,
|
||||
LNK_UNITCODE,
|
||||
MSG_ORIGINAL,
|
||||
RESP_ORIGINAL,
|
||||
OPTIONS)
|
||||
values
|
||||
(NRN,
|
||||
DIN_DATE,
|
||||
SIN_AUTHID,
|
||||
NEXSSERVICEFN,
|
||||
DEXEC_DATE,
|
||||
NEXEC_CNT,
|
||||
NEXEC_STATE,
|
||||
SEXEC_MSG,
|
||||
BMSG,
|
||||
BRESP,
|
||||
NEXSQUEUE,
|
||||
NLNK_COMPANY,
|
||||
NLNK_DOCUMENT,
|
||||
SLNK_UNITCODE,
|
||||
BMSG,
|
||||
BRESP,
|
||||
SOPTIONS);
|
||||
end;
|
||||
/
|
40
db/P_EXSQUEUE_EXPORT.prc
Normal file
40
db/P_EXSQUEUE_EXPORT.prc
Normal file
@ -0,0 +1,40 @@
|
||||
create or replace procedure P_EXSQUEUE_EXPORT
|
||||
(
|
||||
NRN in number, -- Регистрационный номер очереди обмена
|
||||
NIDENT in number, -- Идентификатор процесса
|
||||
STYPE_FILE in varchar2, -- Расширение файла
|
||||
NMSG in number, -- Признак выгрузки сообщения очереди обмена (0 - не выгружать, 1 - выгружать)
|
||||
NRESP in number, -- Признак выгрузки ответа очереди обмена (0 - не выгружать, 1 - выгружать)
|
||||
NMSG_ORIGINAL in number, -- Признак выгрузки оригинала сообщения очереди обмена (0 - не выгружать, 1 - выгружать)
|
||||
NRESP_ORIGINAL in number -- Признак выгрузки оригинала ответа очереди обмена (0 - не выгружать, 1 - выгружать)
|
||||
)
|
||||
as
|
||||
begin
|
||||
/* Фиксация начала выполнения действия */
|
||||
PKG_ENV.PROLOGUE(NCOMPANY => null,
|
||||
NVERSION => null,
|
||||
NCATALOG => null,
|
||||
SUNIT => 'EXSQueue',
|
||||
SACTION => 'EXSQUEUE_EXPORT',
|
||||
STABLE => 'EXSQUEUE',
|
||||
NDOCUMENT => NRN);
|
||||
|
||||
/* Базовая выгрузка */
|
||||
P_EXSQUEUE_BASE_EXPORT(NRN => NRN,
|
||||
NIDENT => NIDENT,
|
||||
STYPE_FILE => STYPE_FILE,
|
||||
NMSG => NMSG,
|
||||
NRESP => NRESP,
|
||||
NMSG_ORIGINAL => NMSG_ORIGINAL,
|
||||
NRESP_ORIGINAL => NRESP_ORIGINAL);
|
||||
|
||||
/* Фиксация окончания выполнения действия */
|
||||
PKG_ENV.EPILOGUE(NCOMPANY => null,
|
||||
NVERSION => null,
|
||||
NCATALOG => null,
|
||||
SUNIT => 'EXSQueue',
|
||||
SACTION => 'EXSQUEUE_EXPORT',
|
||||
STABLE => 'EXSQUEUE',
|
||||
NDOCUMENT => NRN);
|
||||
end;
|
||||
/
|
@ -123,7 +123,10 @@ create or replace package body UDO_PKG_EXS_TEST as
|
||||
/* Считаем ответ сервера и конвертируем в кодировку БД */
|
||||
CRESP := BLOB2CLOB(LBDATA => REXSQUEUE.RESP, SCHARSET => 'UTF8');
|
||||
/* Кладём конвертированное обратно (просто для удобства мониторинга) */
|
||||
PKG_EXS.QUEUE_RESP_SET(NEXSQUEUE => REXSQUEUE.RN, BRESP => CLOB2BLOB(LCDATA => CRESP), RCQUEUE => RCTMP);
|
||||
PKG_EXS.QUEUE_RESP_SET(NEXSQUEUE => REXSQUEUE.RN,
|
||||
BRESP => CLOB2BLOB(LCDATA => CRESP),
|
||||
NIS_ORIGINAL => PKG_EXS.NIS_ORIGINAL_NO,
|
||||
RCQUEUE => RCTMP);
|
||||
/* Заберем организацию из исходящего сообщения */
|
||||
begin
|
||||
select EXTRACTVALUE(XMLTYPE(CMSG), '/MSG/NCOMPANY') NCOMPANY into NCOMPANY from DUAL;
|
||||
|
47
db/v_exsqueue.sql
Normal file
47
db/v_exsqueue.sql
Normal file
@ -0,0 +1,47 @@
|
||||
create or replace view v_exsqueue
|
||||
(nrn, din_date, sin_authid, nexsservicefn, sexsservicefn_code, dexec_date, nexec_cnt, nexec_state, sexec_msg, bmsg, bresp, nexsqueue, nexsservice, sexsservice_code, nexsservice_srv_type, nexsmsgtype, nretry_schedule, nretry_step, nretry_attempts, sexsmsgtype_code, nlnk_company, slnk_company, nlnk_document, slnk_unitcode, slnk_unitname, bmsg_original, bresp_original, nchild_count, soptions)
|
||||
as
|
||||
select
|
||||
T.RN, -- NRN
|
||||
T.IN_DATE, -- DIN_DATE
|
||||
T.IN_AUTHID, -- SIN_AUTHID
|
||||
T.EXSSERVICEFN, -- NEXSSERVICEFN
|
||||
E.CODE, -- SEXSSERVICEFN_CODE
|
||||
T.EXEC_DATE, -- DEXEC_DATE
|
||||
T.EXEC_CNT, -- NEXEC_CNT
|
||||
T.EXEC_STATE, -- NEXEC_STATE
|
||||
T.EXEC_MSG, -- SEXEC_MSG
|
||||
T.MSG, -- BMSG
|
||||
T.RESP, -- BRESP
|
||||
T.EXSQUEUE, -- NEXSQUEUE
|
||||
E.PRN, -- NEXSSERVICE
|
||||
S.CODE, -- SEXSSERVICE_CODE
|
||||
S.SRV_TYPE, -- NEXSSERVICE_SRV_TYPE
|
||||
E.EXSMSGTYPE, -- NEXSMSGTYPE
|
||||
E.RETRY_SCHEDULE, -- NRETRY_SCHEDULE
|
||||
E.RETRY_STEP, -- NRETRY_STEP
|
||||
E.RETRY_ATTEMPTS, -- NRETRY_ATTEMPTS
|
||||
M.CODE, -- SEXSMSGTYPE_CODE
|
||||
T.LNK_COMPANY, -- NLNK_COMPANY
|
||||
C.NAME, -- SLNK_COMPANY
|
||||
T.LNK_DOCUMENT, -- NLNK_DOCUMENT
|
||||
T.LNK_UNITCODE, -- SLNK_UNITCODE
|
||||
U.UNITNAME, -- SLNK_UNITNAME
|
||||
T.MSG_ORIGINAL, -- BMSG_ORIGINAL
|
||||
T.RESP_ORIGINAL, -- BRESP_ORIGINAL
|
||||
F_EXSQUEUE_GET_CHILD_COUNT(T.RN), -- NCHILD_COUNT
|
||||
T.OPTIONS -- SOPTIONS
|
||||
from
|
||||
EXSQUEUE T,
|
||||
EXSSERVICE S,
|
||||
EXSSERVICEFN E,
|
||||
EXSMSGTYPE M,
|
||||
COMPANIES C,
|
||||
UNITLIST U
|
||||
where T.EXSSERVICEFN = E.RN
|
||||
and E.EXSMSGTYPE = M.RN
|
||||
and E.PRN = S.RN
|
||||
and T.LNK_COMPANY = C.RN (+)
|
||||
and T.LNK_UNITCODE = U.UNITCODE (+)
|
||||
and exists (select null from V_USERPRIV UP where UP.UNITCODE = 'EXSQueue')
|
||||
;
|
@ -32,6 +32,10 @@ const {
|
||||
NINC_EXEC_CNT_NO = 0; //Не инкрементировать
|
||||
NINC_EXEC_CNT_YES = 1; //Инкрементировать
|
||||
|
||||
//Признак оригинала данных
|
||||
NIS_ORIGINAL_NO = 0; //Оригинал
|
||||
NIS_ORIGINAL_YES = 1; //Не оригинал
|
||||
|
||||
//------------
|
||||
// Тело модуля
|
||||
//------------
|
||||
@ -54,6 +58,8 @@ const validateBuffer = val => {
|
||||
//Константы
|
||||
exports.NINC_EXEC_CNT_NO = NINC_EXEC_CNT_NO;
|
||||
exports.NINC_EXEC_CNT_YES = NINC_EXEC_CNT_YES;
|
||||
exports.NIS_ORIGINAL_NO = NIS_ORIGINAL_NO;
|
||||
exports.NIS_ORIGINAL_YES = NIS_ORIGINAL_YES;
|
||||
|
||||
//Схема валидации параметров конструктора
|
||||
exports.DBConnector = new Schema({
|
||||
@ -404,8 +410,8 @@ exports.getQueueMsg = new Schema({
|
||||
type: Number,
|
||||
required: true,
|
||||
message: {
|
||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
||||
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -417,8 +423,8 @@ exports.setQueueMsg = new Schema({
|
||||
type: Number,
|
||||
required: true,
|
||||
message: {
|
||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
||||
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||
}
|
||||
},
|
||||
//Данные сообщения очереди обмена
|
||||
@ -440,8 +446,8 @@ exports.getQueueResp = new Schema({
|
||||
type: Number,
|
||||
required: true,
|
||||
message: {
|
||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
||||
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -453,8 +459,8 @@ exports.setQueueResp = new Schema({
|
||||
type: Number,
|
||||
required: true,
|
||||
message: {
|
||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
||||
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||
}
|
||||
},
|
||||
//Данные ответа сообщения очереди обмена
|
||||
@ -466,8 +472,20 @@ exports.setQueueResp = new Schema({
|
||||
`Данные ответа сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - null или Buffer)`,
|
||||
required: path => `Не указаны данные ответа сообщения очереди обмена (${path})`
|
||||
}
|
||||
},
|
||||
//Признак передачи оригинала ответа
|
||||
nIsOriginal: {
|
||||
type: Number,
|
||||
enum: [NIS_ORIGINAL_NO, NIS_ORIGINAL_YES],
|
||||
required: true,
|
||||
message: {
|
||||
type: path =>
|
||||
`Признак передачи оригинала ответа (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
enum: path => `Значение признака передачи оригинала ответа (${path}) не поддерживается`,
|
||||
required: path => `Не указан признак передачи оригинала ответа (${path})`
|
||||
}
|
||||
}
|
||||
}).validator({ required: val => val === null || val });
|
||||
}).validator({ required: val => val === null || val === 0 || val });
|
||||
|
||||
//Схема валидации параметров функции установки результата обработки позиции очереди
|
||||
exports.setQueueAppSrvResult = new Schema({
|
||||
@ -476,8 +494,8 @@ exports.setQueueAppSrvResult = new Schema({
|
||||
type: Number,
|
||||
required: true,
|
||||
message: {
|
||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
||||
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||
}
|
||||
},
|
||||
//Данные сообщения очереди обмена
|
||||
|
@ -288,6 +288,7 @@ const afterConnect = async prms => {
|
||||
}
|
||||
if (resp.error === null) {
|
||||
return {
|
||||
blResp: new Buffer(resp.token),
|
||||
sCtx: resp.token,
|
||||
dCtxExp: strDDMMYYYYHHMISStoDate(resp.timestamp).addHours(24)
|
||||
};
|
||||
|
@ -341,10 +341,11 @@ const getQueueResp = async prms => {
|
||||
const setQueueResp = async prms => {
|
||||
try {
|
||||
let res = await prms.connection.execute(
|
||||
"BEGIN PKG_EXS.QUEUE_RESP_SET(NEXSQUEUE => :NEXSQUEUE, BRESP => :BRESP, RCQUEUE => :RCQUEUE); END;",
|
||||
"BEGIN PKG_EXS.QUEUE_RESP_SET(NEXSQUEUE => :NEXSQUEUE, BRESP => :BRESP, NIS_ORIGINAL => :NIS_ORIGINAL, RCQUEUE => :RCQUEUE); END;",
|
||||
{
|
||||
NEXSQUEUE: prms.nQueueId,
|
||||
BRESP: prms.blResp,
|
||||
NIS_ORIGINAL: prms.nIsOriginal,
|
||||
RCQUEUE: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||
},
|
||||
{ outFormat: oracledb.OBJECT, autoCommit: true }
|
||||
|
Loading…
x
Reference in New Issue
Block a user