Функция получения сведений о просроченных сообщениях очереди обмена
This commit is contained in:
parent
3bcfb6d39c
commit
7b44cfbe2b
@ -368,6 +368,43 @@ class DBConnector extends EventEmitter {
|
|||||||
throw new ServerError(SERR_DB_EXECUTE, "Нет подключения к БД");
|
throw new ServerError(SERR_DB_EXECUTE, "Нет подключения к БД");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Получить информацию о просроченных сообщениях обмена сервиса
|
||||||
|
async getServiceExpiredQueueInfo(prms) {
|
||||||
|
//Работаем только при наличии подключения
|
||||||
|
if (this.bConnected) {
|
||||||
|
//Проверяем структуру переданного объекта с параметрами получения информации о просроченных сообщения обмена
|
||||||
|
let sCheckResult = validateObject(
|
||||||
|
prms,
|
||||||
|
prmsDBConnectorSchema.getServiceExpiredQueueInfo,
|
||||||
|
"Параметры функции получения информации о просроченных сообщениях обмена сервиса"
|
||||||
|
);
|
||||||
|
//Если структура объекта в норме
|
||||||
|
if (!sCheckResult) {
|
||||||
|
try {
|
||||||
|
//Подготовим параметры для передачи в БД
|
||||||
|
let getServiceExpiredQueueInfoData = _.cloneDeep(prms);
|
||||||
|
getServiceExpiredQueueInfoData.connection = this.connection;
|
||||||
|
//И выполним получение информации о просроченных сообщениях
|
||||||
|
let res = await this.connector.getServiceExpiredQueueInfo(getServiceExpiredQueueInfoData);
|
||||||
|
//Валидируем полученный ответ
|
||||||
|
sCheckResult = validateObject(
|
||||||
|
res,
|
||||||
|
objServiceSchema.ServiceExpiredQueueInfo,
|
||||||
|
"Сведения о просроченных сообщениях обмена сервиса"
|
||||||
|
);
|
||||||
|
if (sCheckResult) throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
|
||||||
|
//Успешно - отдаём полученные сведения о просроченных сообщениях
|
||||||
|
return res;
|
||||||
|
} catch (e) {
|
||||||
|
throw new ServerError(SERR_DB_EXECUTE, e.message);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new ServerError(SERR_DB_EXECUTE, "Нет подключения к БД");
|
||||||
|
}
|
||||||
|
}
|
||||||
//Запись в журнал работы
|
//Запись в журнал работы
|
||||||
async putLog(prms) {
|
async putLog(prms) {
|
||||||
//Работаем только при наличии подключения
|
//Работаем только при наличии подключения
|
||||||
|
@ -293,10 +293,10 @@ create or replace package PKG_EXS as
|
|||||||
);
|
);
|
||||||
|
|
||||||
/* Получение информации о просроченных сообщениях очереди для сервиса */
|
/* Получение информации о просроченных сообщениях очереди для сервиса */
|
||||||
procedure SERVICE_QUEUE_EXPIRED_GET
|
procedure SERVICE_QUEUE_EXPIRED_INFO_GET
|
||||||
(
|
(
|
||||||
NEXSSERVICE in number, -- Ðåã. íîìåð çàïèñè ñåðâèñà
|
NEXSSERVICE in number, -- Ðåã. íîìåð çàïèñè ñåðâèñà
|
||||||
RCSERVICE_QUEUE_EXPIRED out sys_refcursor -- Êóðñîð ñî ñâåäåíèÿìè î ïðîñðî÷åííûõ ñîîáùåíèÿõ ñåðâèñà
|
RCSERVICE_QUEUE_EXPIRED_INFO out sys_refcursor -- Êóðñîð ñî ñâåäåíèÿìè î ïðîñðî÷åííûõ ñîîáùåíèÿõ ñåðâèñà
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Получение контекста сервиса */
|
/* Получение контекста сервиса */
|
||||||
@ -1244,11 +1244,11 @@ create or replace package body PKG_EXS as
|
|||||||
RNLIST_BASE_CLEAR(NIDENT => NIDENT);
|
RNLIST_BASE_CLEAR(NIDENT => NIDENT);
|
||||||
end SERVICE_GET;
|
end SERVICE_GET;
|
||||||
|
|
||||||
/* Ïîëó÷åíèå èíôîðìàöèè î ïðîñðî÷åííûõ ñîîáùåíèÿõ î÷åðåäè äëÿ ñåðâèñà */
|
/* Ïîëó÷åíèå èíôîðìàöèè î ïðîñðî÷åííûõ ñîîáùåíèÿõ î÷åðåäè äëÿ ñåðâèñà */
|
||||||
procedure SERVICE_QUEUE_EXPIRED_GET
|
procedure SERVICE_QUEUE_EXPIRED_INFO_GET
|
||||||
(
|
(
|
||||||
NEXSSERVICE in number, -- Ðåã. íîìåð çàïèñè ñåðâèñà
|
NEXSSERVICE in number, -- Ðåã. íîìåð çàïèñè ñåðâèñà
|
||||||
RCSERVICE_QUEUE_EXPIRED out sys_refcursor -- Êóðñîð ñî ñâåäåíèÿìè î ïðîñðî÷åííûõ ñîîáùåíèÿõ ñåðâèñà
|
RCSERVICE_QUEUE_EXPIRED_INFO out sys_refcursor -- Êóðñîð ñî ñâåäåíèÿìè î ïðîñðî÷åííûõ ñîîáùåíèÿõ ñåðâèñà
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
/* Локальные константы */
|
/* Локальные константы */
|
||||||
@ -1298,11 +1298,12 @@ create or replace package body PKG_EXS as
|
|||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
/* Возвращаем ответ в виде курсора */
|
/* Возвращаем ответ в виде курсора */
|
||||||
open RCSERVICE_QUEUE_EXPIRED for
|
open RCSERVICE_QUEUE_EXPIRED_INFO for
|
||||||
select NCNT "nCnt",
|
select REXSSERVICE.RN "nId",
|
||||||
|
NCNT "nCnt",
|
||||||
DECODE(NCNT, 0, null, SPREF || SINFO_LIST) "sInfoList"
|
DECODE(NCNT, 0, null, SPREF || SINFO_LIST) "sInfoList"
|
||||||
from DUAL;
|
from DUAL;
|
||||||
end SERVICE_QUEUE_EXPIRED_GET;
|
end SERVICE_QUEUE_EXPIRED_INFO_GET;
|
||||||
|
|
||||||
/* Получение контекста сервиса */
|
/* Получение контекста сервиса */
|
||||||
procedure SERVICE_CTX_GET
|
procedure SERVICE_CTX_GET
|
||||||
|
@ -115,6 +115,17 @@ exports.dbConnectorModule = new Schema({
|
|||||||
"Не реализована функция постановки в очередь задания на аутентификацию сервиса (putServiceAuthInQueue)"
|
"Не реализована функция постановки в очередь задания на аутентификацию сервиса (putServiceAuthInQueue)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
//Получение информации о просроченных сообщениях обмена сервиса
|
||||||
|
getServiceExpiredQueueInfo: {
|
||||||
|
use: { validateAsyncFunctionType },
|
||||||
|
required: true,
|
||||||
|
message: {
|
||||||
|
validateAsyncFunctionType:
|
||||||
|
"Функция получения информации о просроченных сообщениях обмена сервиса (getServiceExpiredQueueInfo) имеет неверный формат (ожидалось - AsyncFunction)",
|
||||||
|
required:
|
||||||
|
"Не реализована функция получения информации о просроченных сообщениях обмена сервиса (getServiceExpiredQueueInfo)"
|
||||||
|
}
|
||||||
|
},
|
||||||
//Протоколирование работы сервиса
|
//Протоколирование работы сервиса
|
||||||
log: {
|
log: {
|
||||||
use: { validateAsyncFunctionType },
|
use: { validateAsyncFunctionType },
|
||||||
|
@ -256,3 +256,35 @@ exports.ServiceCtx = new Schema({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Схема валидации сведений о просроченных сообщениях обмена сервиса
|
||||||
|
exports.ServiceExpiredQueueInfo = new Schema({
|
||||||
|
//Идентификатор сервиса
|
||||||
|
nId: {
|
||||||
|
type: Number,
|
||||||
|
required: true,
|
||||||
|
message: {
|
||||||
|
type: "Идентификатор сервиса (nId) имеет некорректный тип данных (ожидалось - Number)",
|
||||||
|
required: "Не указан идентификатор сервиса (nId)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Количество просроченных сообщений обмена
|
||||||
|
nCnt: {
|
||||||
|
type: Number,
|
||||||
|
required: true,
|
||||||
|
message: {
|
||||||
|
type: "Количество просроченных сообщений обмена (nCnt) имеет некорректный тип данных (ожидалось - Number)",
|
||||||
|
required: "Не указано количество просроченных сообщений обмена (nCnt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Информация о просроченных сообщениях обмена
|
||||||
|
sInfoList: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
message: {
|
||||||
|
type:
|
||||||
|
"Информация о просроченных сообщениях обмена (sInfoList) имеет некорректный тип данных (ожидалось - String)",
|
||||||
|
required: "Не указана информация о просроченных сообщениях обмена (sInfoList)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).validator({ required: val => val === null || val === 0 || val });
|
||||||
|
@ -163,6 +163,19 @@ exports.putServiceAuthInQueue = new Schema({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Схема валидации параметров функции получения информации о просроченных сообщениях обмена сервиса
|
||||||
|
exports.getServiceExpiredQueueInfo = new Schema({
|
||||||
|
//Идентификатор сервиса
|
||||||
|
nServiceId: {
|
||||||
|
type: Number,
|
||||||
|
required: true,
|
||||||
|
message: {
|
||||||
|
type: path => `Идентификатор сервиса (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||||||
|
required: path => `Не указан идентификатор сервиса (${path})`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//Схема валидации параметров функции записи в журнал работы сервиса
|
//Схема валидации параметров функции записи в журнал работы сервиса
|
||||||
exports.putLog = new Schema({
|
exports.putLog = new Schema({
|
||||||
//Тип сообщения журнала работы сервиса
|
//Тип сообщения журнала работы сервиса
|
||||||
|
@ -152,6 +152,24 @@ const putServiceAuthInQueue = async prms => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Получение информации о просроченных сообщениях обмена сервиса
|
||||||
|
const getServiceExpiredQueueInfo = async prms => {
|
||||||
|
try {
|
||||||
|
let res = await prms.connection.execute(
|
||||||
|
"BEGIN PKG_EXS.SERVICE_QUEUE_EXPIRED_INFO_GET(NEXSSERVICE => :NEXSSERVICE, RCSERVICE_QUEUE_EXPIRED_INFO => :RCSERVICE_QUEUE_EXPIRED_INFO); END;",
|
||||||
|
{
|
||||||
|
NEXSSERVICE: prms.nServiceId,
|
||||||
|
RCSERVICE_QUEUE_EXPIRED_INFO: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||||
|
},
|
||||||
|
{ outFormat: oracledb.OBJECT }
|
||||||
|
);
|
||||||
|
let rows = await readCursorData(res.outBinds.RCSERVICE_QUEUE_EXPIRED_INFO);
|
||||||
|
return rows[0];
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(e.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//Запись в протокол работы
|
//Запись в протокол работы
|
||||||
const log = async prms => {
|
const log = async prms => {
|
||||||
try {
|
try {
|
||||||
@ -369,6 +387,7 @@ exports.setServiceContext = setServiceContext;
|
|||||||
exports.clearServiceContext = clearServiceContext;
|
exports.clearServiceContext = clearServiceContext;
|
||||||
exports.isServiceAuth = isServiceAuth;
|
exports.isServiceAuth = isServiceAuth;
|
||||||
exports.putServiceAuthInQueue = putServiceAuthInQueue;
|
exports.putServiceAuthInQueue = putServiceAuthInQueue;
|
||||||
|
exports.getServiceExpiredQueueInfo = getServiceExpiredQueueInfo;
|
||||||
exports.log = log;
|
exports.log = log;
|
||||||
exports.getQueue = getQueue;
|
exports.getQueue = getQueue;
|
||||||
exports.putQueue = putQueue;
|
exports.putQueue = putQueue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user