From ee4e5ddd97bb05f5dc6232e11d1d616ca8ff7ec8 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Thu, 10 Jan 2019 17:21:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D1=81=D0=B8=D1=80=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=81=D0=B1=D1=80=D0=BE=D1=81=20=D0=B0=D1=82?= =?UTF-8?q?=D1=83=D0=B5=D0=BD=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B2=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B5,=20=D0=B5=D1=81?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87?= =?UTF-8?q?=D0=B8=D0=BA=20=D0=B2=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20UNAUTH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/out_queue.js | 14 +++++++++++++- models/common.js | 10 ++++++++++ models/prms_db_connector.js | 13 +++++++++++++ modules/parus_oracle_db.js | 4 ++-- 4 files changed, 38 insertions(+), 3 deletions(-) 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) {