diff --git a/core/out_queue.js b/core/out_queue.js index 0964ac4..36bbfcd 100644 --- a/core/out_queue.js +++ b/core/out_queue.js @@ -15,6 +15,7 @@ const { SERR_OBJECT_BAD_INTERFACE } = require("./constants"); //Общесист const { makeErrorText, validateObject } = require("./utils"); //Вспомогательные функции const { NINC_EXEC_CNT_YES, NINC_EXEC_CNT_NO } = require("../models/prms_db_connector"); //Схемы валидации параметров функций модуля взаимодействия с БД const objOutQueueProcessorSchema = require("../models/obj_out_queue_processor"); //Схемы валидации сообщений обмена с обработчиком сообщения очереди +const { NFORCE_YES } = require("../models/common"); //Общие константы и схемы валидации const objQueueSchema = require("../models/obj_queue"); //Схемы валидации сообщения очереди const objServiceFnSchema = require("../models/obj_service_function"); //Схемы валидации функции сервиса const prmsOutQueueSchema = require("../models/prms_out_queue"); //Схемы валидации параметров функций класса @@ -259,7 +260,18 @@ class OutQueue extends EventEmitter { //Ошибки обработки нет, но может быть есть ошибка аутентификации if (result.sResult == objOutQueueProcessorSchema.STASK_RESULT_UNAUTH) { //Ставим задачу на аутентификацию сервиса - await this.dbConn.putServiceAuthInQueue({ nServiceId: prms.queue.nServiceId }); + try { + await this.dbConn.putServiceAuthInQueue({ + nServiceId: prms.queue.nServiceId, + nForce: NFORCE_YES + }); + } catch (e) { + //Отразим в протоколе ошибку постановки задачи на аутентификацию сервиса + await self.logger.error( + `Ошибка постановки задачи на аутентификацию сервиса: ${makeErrorText(e)}`, + { nQueueId: prms.queue.nId } + ); + } } } } else { diff --git a/models/common.js b/models/common.js index 9899edd..d81b5fc 100644 --- a/models/common.js +++ b/models/common.js @@ -3,6 +3,14 @@ Модели данных: общие функции валидации, константы, модели */ +//---------- +// Константы +//---------- + +//Признак принудительного исполнения действия +NFORCE_NO = 0; //Не выполнять принудительно (нормальный уровень проверок исполения) +NFORCE_YES = 1; //Выполнить принудительно (пониженный уровень проверок исполнения) + //------------ // Тело модуля //------------ @@ -31,4 +39,6 @@ const validateMailList = sMailList => { // Интерфейс модуля //----------------- +exports.NFORCE_NO = NFORCE_NO; +exports.NFORCE_YES = NFORCE_YES; exports.validateMailList = validateMailList; diff --git a/models/prms_db_connector.js b/models/prms_db_connector.js index b72abcd..a3fb638 100644 --- a/models/prms_db_connector.js +++ b/models/prms_db_connector.js @@ -10,6 +10,7 @@ const Schema = require("validate"); //Схемы валидации const { dbConnect } = require("./obj_config"); //Схемы валидации конфигурации сервера приложений const { NLOG_STATE_INF, NLOG_STATE_WRN, NLOG_STATE_ERR } = require("./obj_log"); //Схемы валидации записи журнала работы сервиса обмена +const { NFORCE_NO, NFORCE_YES } = require("./common"); //Общие алгоритмы валидации const { NQUEUE_EXEC_STATE_INQUEUE, NQUEUE_EXEC_STATE_APP, @@ -166,6 +167,18 @@ exports.putServiceAuthInQueue = new Schema({ type: path => `Идентификатор сервиса (${path}) имеет некорректный тип данных (ожидалось - Number)`, required: path => `Не указан идентификатор сервиса (${path})` } + }, + //Признак принудительного завершения сессии + nForce: { + type: Number, + required: false, + enum: [NFORCE_YES, NFORCE_NO], + message: { + type: path => + `Признак принудительного завершения сессии (${path}) имеет некорректный тип данных (ожидалось - Number)`, + enum: path => `Значение признака принудительного завершения сессии (${path}) не поддерживается`, + required: path => `Не указан признак принудительного завершения сессии (${path})` + } } }); diff --git a/modules/parus_oracle_db.js b/modules/parus_oracle_db.js index 86fc636..a518f2f 100644 --- a/modules/parus_oracle_db.js +++ b/modules/parus_oracle_db.js @@ -143,8 +143,8 @@ const isServiceAuth = async prms => { const putServiceAuthInQueue = async prms => { try { await prms.connection.execute( - "BEGIN PKG_EXS.SERVICE_AUTH_PUT_INQUEUE(NEXSSERVICE => :NEXSSERVICE); END;", - { NEXSSERVICE: prms.nServiceId }, + "BEGIN PKG_EXS.SERVICE_AUTH_PUT_INQUEUE(NEXSSERVICE => :NEXSSERVICE, NFORCE => :NFORCE); END;", + { NEXSSERVICE: prms.nServiceId, NFORCE: prms.nForce }, { autoCommit: true } ); } catch (e) {