/* Сервис интеграции ПП Парус 8 с WEB API Модели данных: описатель сообщений обмена с обработчиком очереди исходящих сообщений */ //---------------------- // Подключение библиотек //---------------------- const Schema = require("validate"); //Схемы валидации const { dbConnect } = require("./obj_config"); //Схемы валидации конфигурации сервера приложений const { Service } = require("./obj_service"); //Схема валидации сервиса const { ServiceFunction } = require("./obj_service_function"); //Схема валидации функции сервиса //---------- // Константы //---------- //Состояния обработки сообщений очереди обмена const STASK_RESULT_OK = "OK"; //Обработано успешно const STASK_RESULT_ERR = "ERR"; //Обработано с ошибками const STASK_RESULT_UNAUTH = "UNAUTH"; //Не обработано из-за отсутсвия аутентификации //------------------ // Интерфейс модуля //------------------ //Константы exports.STASK_RESULT_OK = STASK_RESULT_OK; exports.STASK_RESULT_ERR = STASK_RESULT_ERR; exports.STASK_RESULT_UNAUTH = STASK_RESULT_UNAUTH; //Схема валидации задачи обработчику очереди исходящих сообщений exports.OutQueueProcessorTask = new Schema({ //Идентификатор записи журнала обмена для обработки nQueueId: { type: Number, required: true, message: { type: path => `Идентификатор записи журнала обмена для обработки (${path}) имеет некорректный тип данных (ожидалось - Number)`, required: path => `Не указан идентификатор записи журнала обмена для обработки (${path})` } }, //Параметры подключения к БД connectSettings: { schema: dbConnect, required: true, message: { required: path => `Не указаны параметры подключения к БД (${path})` } }, //Cервис-обработчик service: { schema: Service, required: true, message: { required: path => `Не указан сервис для обработки сообщения очереди (${path})` } }, //Функция сервиса-обработчика function: { schema: ServiceFunction, required: true, message: { required: path => `Не указана функция сервиса для обработки сообщения очереди (${path})` } }, //Глобальный адрес прокси-сервера sProxy: { type: String, required: false, message: { type: path => `Глобальный адрес прокси-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указан глобальный адрес прокси-сервера (${path})` } } }); //Схема валидации ответа обработчика очереди исходящих сообщений exports.OutQueueProcessorTaskResult = new Schema({ //Состояние обработки сообщения очереди обмена sResult: { type: String, enum: [STASK_RESULT_OK, STASK_RESULT_ERR, STASK_RESULT_UNAUTH], required: true, message: { type: path => `Состояние обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`, enum: path => `Значение состояния обработки сообщения очереди обмена (${path}) не поддерживается`, required: path => `Не указано состояние обработки сообщения очереди обмена (${path})` } }, //Информация от обработчика сообщения очереди обмена sMsg: { type: String, required: true, message: { type: path => `Информация от обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указана информация от обработчика сообщения очереди обмена (${path})` } } }).validator({ required: val => typeof val != "undefined" }); //Схема валидации результата работы функции "предобработки" сообщения очереди сервером приложений exports.OutQueueProcessorFnBefore = new Schema({ //Параметры запроса удалённому сервису options: { type: Object, required: false, message: { type: path => `Параметры запроса удалённому сервису (${path}) имеют некорректный тип данных (ожидалось - Object, см. документацию к REQUEST - https://github.com/request/request)`, required: path => `Не указаны параметры запроса удалённому сервису (${path})` } }, //Обработанное сообщение очереди blMsg: { type: Buffer, required: false, message: { type: path => `Обработанное сообщение очереди (${path}) имеет некорректный тип данных (ожидалось - Buffer)`, required: path => `Не указано обработанное сообщение очереди (${path})` } }, //Флаг ошибки аутентификации на удаленном сервисе bUnAuth: { type: Boolean, required: false, message: { type: path => `Флаг ошибки аутентификации на удаленном сервисе (${path}) имеет некорректный тип данных (ожидалось - Boolean)`, required: path => `Не указан флаг ошибки аутентификации на удаленном сервисе (${path})` } }, //Контекст сервиса sCtx: { type: String, required: false, message: { type: path => `Контектс сервиса (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указан контекст сервиса (${path})` } }, //Дата истечения контекста dCtxExp: { type: Date, required: false, message: { type: path => `Дата истечения контекста (${path}) имеет некорректный тип данных (ожидалось - Date)`, required: path => `Не указана дата истечения контекста (${path})` } }, //Флаг прекращения дальнейшей обработки сообщения bStopPropagation: { type: Boolean, required: false, message: { type: path => `Флаг прекращения дальнейшей обработки сообщения (${path}) имеет некорректный тип данных (ожидалось - Boolean)`, required: path => `Не указан флаг прекращения дальнейшей обработки сообщения (${path})` } } }); //Схема валидации результата работы функции "постобработки" сообщения очереди сервером приложений exports.OutQueueProcessorFnAfter = new Schema({ //Результат обработки ответа удалённого сервиса blResp: { type: Buffer, required: false, message: { type: path => `Результат обработки ответа удалённого сервиса (${path}) имеет некорректный тип данных (ожидалось - Buffer)`, required: path => `Не указан результат обработки ответа удалённого сервиса (${path})` } }, //Флаг ошибки аутентификации на удаленном сервисе bUnAuth: { type: Boolean, required: false, message: { type: path => `Флаг ошибки аутентификации на удаленном сервисе (${path}) имеет некорректный тип данных (ожидалось - Boolean)`, required: path => `Не указан флаг ошибки аутентификации на удаленном сервисе (${path})` } }, //Контекст сервиса sCtx: { type: String, required: false, message: { type: path => `Контектс сервиса (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указан контекст сервиса (${path})` } }, //Дата истечения контекста dCtxExp: { type: Date, required: false, message: { type: path => `Дата истечения контекста (${path}) имеет некорректный тип данных (ожидалось - Date)`, required: path => `Не указана дата истечения контекста (${path})` } } });