Сохранение оригинала ответа удаленного сервера
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 bodyParser = require("body-parser"); //Модуль для Express (разбор тела входящего запроса)
|
||||||
const { ServerError } = require("./server_errors"); //Типовая ошибка
|
const { ServerError } = require("./server_errors"); //Типовая ошибка
|
||||||
const { makeErrorText, validateObject, buildURL, getAppSrvFunction } = require("./utils"); //Вспомогательные функции
|
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 objInQueueSchema = require("../models/obj_in_queue"); //Схема валидации сообщений обмена с бработчиком очереди входящих сообщений
|
||||||
const objServiceSchema = require("../models/obj_service"); //Схемы валидации сервиса
|
const objServiceSchema = require("../models/obj_service"); //Схемы валидации сервиса
|
||||||
const objServiceFnSchema = require("../models/obj_service_function"); //Схемы валидации функции сервиса
|
const objServiceFnSchema = require("../models/obj_service_function"); //Схемы валидации функции сервиса
|
||||||
@ -160,7 +160,8 @@ class InQueue extends EventEmitter {
|
|||||||
blResp = resBefore.blResp;
|
blResp = resBefore.blResp;
|
||||||
q = await this.dbConn.setQueueResp({
|
q = await this.dbConn.setQueueResp({
|
||||||
nQueueId: q.nId,
|
nQueueId: q.nId,
|
||||||
blResp
|
blResp,
|
||||||
|
nIsOriginal: NIS_ORIGINAL_NO
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//Если пришел флаг ошибочной аутентификации и он положительный - то это ошибка, дальше ничего не делаем
|
//Если пришел флаг ошибочной аутентификации и он положительный - то это ошибка, дальше ничего не делаем
|
||||||
@ -235,7 +236,8 @@ class InQueue extends EventEmitter {
|
|||||||
blResp = resAfter.blResp;
|
blResp = resAfter.blResp;
|
||||||
q = await this.dbConn.setQueueResp({
|
q = await this.dbConn.setQueueResp({
|
||||||
nQueueId: q.nId,
|
nQueueId: q.nId,
|
||||||
blResp
|
blResp,
|
||||||
|
nIsOriginal: NIS_ORIGINAL_NO
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//Если пришел флаг ошибочной аутентификации и он положительный - то это ошибка, дальше ничего не делаем
|
//Если пришел флаг ошибочной аутентификации и он положительный - то это ошибка, дальше ничего не делаем
|
||||||
|
@ -26,7 +26,12 @@ const {
|
|||||||
SERR_DB_SERVER,
|
SERR_DB_SERVER,
|
||||||
SERR_UNAUTH
|
SERR_UNAUTH
|
||||||
} = require("./constants"); //Глобальные константы
|
} = 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);
|
prms.queue.blResp = new Buffer(serverResp);
|
||||||
await dbConn.setQueueResp({
|
await dbConn.setQueueResp({
|
||||||
nQueueId: prms.queue.nId,
|
nQueueId: prms.queue.nId,
|
||||||
blResp: prms.queue.blResp
|
blResp: prms.queue.blResp,
|
||||||
|
nIsOriginal: NIS_ORIGINAL_YES
|
||||||
});
|
});
|
||||||
//Выполняем обработчик "После" (если он есть)
|
//Выполняем обработчик "После" (если он есть)
|
||||||
if (prms.function.sAppSrvAfter) {
|
if (prms.function.sAppSrvAfter) {
|
||||||
@ -231,7 +237,8 @@ const appProcess = async prms => {
|
|||||||
prms.queue.blResp = resAfter.blResp;
|
prms.queue.blResp = resAfter.blResp;
|
||||||
await dbConn.setQueueResp({
|
await dbConn.setQueueResp({
|
||||||
nQueueId: prms.queue.nId,
|
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_NO constant number(1) := 0; -- Íå ñáðàñûâàòü
|
||||||
NQUEUE_RESET_DATA_YES constant number(1) := 1; -- Ñáðàñûâàòü
|
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;'; -- Ñïèñîê ïàðàìåòðîâ ïðîöåäóðû îáðàáîòêè
|
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
|
procedure QUEUE_RESP_SET
|
||||||
(
|
(
|
||||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||||
BRESP in blob -- Ðåçóëüòàò îáðàáîòêè
|
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||||
|
NIS_ORIGINAL in number := NIS_ORIGINAL_NO -- Ïðèçíàê ïåðåäà÷è îðèãèíàëüíîãî ðåçóëüòàòà îáðàáîòêè (ñì. êîíñòàíòû NIS_ORIGINAL*, null - íå îðèãèíàë)
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè (âîçâðàùàåò èçìåíåííóþ ïîçèöèþ î÷åðåäè) */
|
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè (âîçâðàùàåò èçìåíåííóþ ïîçèöèþ î÷åðåäè) */
|
||||||
procedure QUEUE_RESP_SET
|
procedure QUEUE_RESP_SET
|
||||||
(
|
(
|
||||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||||
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||||
RCQUEUE out sys_refcursor -- Êóðñîð ñ èçìåí¸ííîé ïîçèöèåé î÷åðåäè
|
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
|
procedure QUEUE_RESP_SET
|
||||||
(
|
(
|
||||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||||
BRESP in blob -- Ðåçóëüòàò îáðàáîòêè
|
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||||
|
NIS_ORIGINAL in number := NIS_ORIGINAL_NO -- Ïðèçíàê ïåðåäà÷è îðèãèíàëüíîãî ðåçóëüòàòà îáðàáîòêè (ñì. êîíñòàíòû NIS_ORIGINAL*, null - íå îðèãèíàë)
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
begin
|
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
|
if (sql%rowcount = 0) then
|
||||||
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NEXSQUEUE, SUNIT_TABLE => 'EXSQUEUE');
|
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NEXSQUEUE, SUNIT_TABLE => 'EXSQUEUE');
|
||||||
end if;
|
end if;
|
||||||
@ -2130,14 +2140,15 @@ create or replace package body PKG_EXS as
|
|||||||
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè (âîçâðàùàåò èçìåíåííóþ ïîçèöèþ î÷åðåäè) */
|
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè (âîçâðàùàåò èçìåíåííóþ ïîçèöèþ î÷åðåäè) */
|
||||||
procedure QUEUE_RESP_SET
|
procedure QUEUE_RESP_SET
|
||||||
(
|
(
|
||||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||||
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
BRESP in blob, -- Ðåçóëüòàò îáðàáîòêè
|
||||||
RCQUEUE out sys_refcursor -- Êóðñîð ñ èçìåí¸ííîé ïîçèöèåé î÷åðåäè
|
NIS_ORIGINAL in number := NIS_ORIGINAL_NO, -- Ïðèçíàê ïåðåäà÷è îðèãèíàëüíîãî ðåçóëüòàòà îáðàáîòêè (ñì. êîíñòàíòû NIS_ORIGINAL*, null - íå îðèãèíàë)
|
||||||
|
RCQUEUE out sys_refcursor -- Êóðñîð ñ èçìåí¸ííîé ïîçèöèåé î÷åðåäè
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
begin
|
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);
|
QUEUE_GET(NFLAG_SMART => 0, NEXSQUEUE => NEXSQUEUE, RCQUEUE => RCQUEUE);
|
||||||
end QUEUE_RESP_SET;
|
end QUEUE_RESP_SET;
|
||||||
@ -2401,7 +2412,7 @@ create or replace package body PKG_EXS as
|
|||||||
/* Çàôèêñèðóåì ðåçóëüòàò îáðàáîòêè (äëÿ âõîäÿùèõ - âñåãäà, äëÿ èñõîäÿùèõ - òîëüêî åñëè íå ïóñòîé) */
|
/* Çàôèêñèðóåì ðåçóëüòàò îáðàáîòêè (äëÿ âõîäÿùèõ - âñåãäà, äëÿ èñõîäÿùèõ - òîëüêî åñëè íå ïóñòîé) */
|
||||||
if ((REXSSERVICE.SRV_TYPE = NSRV_TYPE_RECIVE) or
|
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
|
((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;
|
end if;
|
||||||
/* Åñëè ýòî áûëà ôóíêöèÿ íà÷àëà ñåàíñà */
|
/* Åñëè ýòî áûëà ôóíêöèÿ íà÷àëà ñåàíñà */
|
||||||
if (REXSSERVICEFN.FN_TYPE = NFN_TYPE_LOGIN) then
|
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');
|
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
|
begin
|
||||||
select EXTRACTVALUE(XMLTYPE(CMSG), '/MSG/NCOMPANY') NCOMPANY into NCOMPANY from DUAL;
|
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_NO = 0; //Не инкрементировать
|
||||||
NINC_EXEC_CNT_YES = 1; //Инкрементировать
|
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_NO = NINC_EXEC_CNT_NO;
|
||||||
exports.NINC_EXEC_CNT_YES = NINC_EXEC_CNT_YES;
|
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({
|
exports.DBConnector = new Schema({
|
||||||
@ -404,8 +410,8 @@ exports.getQueueMsg = new Schema({
|
|||||||
type: Number,
|
type: Number,
|
||||||
required: true,
|
required: true,
|
||||||
message: {
|
message: {
|
||||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -417,8 +423,8 @@ exports.setQueueMsg = new Schema({
|
|||||||
type: Number,
|
type: Number,
|
||||||
required: true,
|
required: true,
|
||||||
message: {
|
message: {
|
||||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//Данные сообщения очереди обмена
|
//Данные сообщения очереди обмена
|
||||||
@ -440,8 +446,8 @@ exports.getQueueResp = new Schema({
|
|||||||
type: Number,
|
type: Number,
|
||||||
required: true,
|
required: true,
|
||||||
message: {
|
message: {
|
||||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -453,8 +459,8 @@ exports.setQueueResp = new Schema({
|
|||||||
type: Number,
|
type: Number,
|
||||||
required: true,
|
required: true,
|
||||||
message: {
|
message: {
|
||||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//Данные ответа сообщения очереди обмена
|
//Данные ответа сообщения очереди обмена
|
||||||
@ -466,8 +472,20 @@ exports.setQueueResp = new Schema({
|
|||||||
`Данные ответа сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - null или Buffer)`,
|
`Данные ответа сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - null или Buffer)`,
|
||||||
required: path => `Не указаны данные ответа сообщения очереди обмена (${path})`
|
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({
|
exports.setQueueAppSrvResult = new Schema({
|
||||||
@ -476,8 +494,8 @@ exports.setQueueAppSrvResult = new Schema({
|
|||||||
type: Number,
|
type: Number,
|
||||||
required: true,
|
required: true,
|
||||||
message: {
|
message: {
|
||||||
type: path => `Идентификатор позиции очереди ((${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
type: path => `Идентификатор позиции очереди (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||||
required: path => `Не указан идентификатор позиции очереди ((${path})`
|
required: path => `Не указан идентификатор позиции очереди (${path})`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//Данные сообщения очереди обмена
|
//Данные сообщения очереди обмена
|
||||||
|
@ -288,6 +288,7 @@ const afterConnect = async prms => {
|
|||||||
}
|
}
|
||||||
if (resp.error === null) {
|
if (resp.error === null) {
|
||||||
return {
|
return {
|
||||||
|
blResp: new Buffer(resp.token),
|
||||||
sCtx: resp.token,
|
sCtx: resp.token,
|
||||||
dCtxExp: strDDMMYYYYHHMISStoDate(resp.timestamp).addHours(24)
|
dCtxExp: strDDMMYYYYHHMISStoDate(resp.timestamp).addHours(24)
|
||||||
};
|
};
|
||||||
|
@ -341,10 +341,11 @@ const getQueueResp = async prms => {
|
|||||||
const setQueueResp = async prms => {
|
const setQueueResp = async prms => {
|
||||||
try {
|
try {
|
||||||
let res = await prms.connection.execute(
|
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,
|
NEXSQUEUE: prms.nQueueId,
|
||||||
BRESP: prms.blResp,
|
BRESP: prms.blResp,
|
||||||
|
NIS_ORIGINAL: prms.nIsOriginal,
|
||||||
RCQUEUE: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
RCQUEUE: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||||
},
|
},
|
||||||
{ outFormat: oracledb.OBJECT, autoCommit: true }
|
{ outFormat: oracledb.OBJECT, autoCommit: true }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user