Сохранение оригинала ответа удаленного сервера

This commit is contained in:
Mikhail Chechnev 2019-01-08 15:22:08 +03:00
parent f4f52c6e89
commit 28e117aac7
11 changed files with 294 additions and 32 deletions

View File

@ -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
});
}
//Если пришел флаг ошибочной аутентификации и он положительный - то это ошибка, дальше ничего не делаем

View File

@ -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
});
}
//Применим ответ "После" - флаг утентификации сервиса

View File

@ -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

View 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;
/

View 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
View 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;
/

View File

@ -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
View 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')
;

View File

@ -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})`
}
},
//Данные сообщения очереди обмена

View File

@ -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)
};

View File

@ -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 }