P8-ExchangeService/models/obj_service_function.js

265 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Сервис интеграции ПП Парус 8 с WEB API
Модели данных: описатель функции сервиса
*/
//----------------------
// Подключение библиотек
//----------------------
const Schema = require("validate"); //Схемы валидации
//----------
// Константы
//----------
//Типы функций сервиса
const NFN_TYPE_DATA = 0; //Обмен данными
const NFN_TYPE_LOGIN = 1; //Начало сеанса
const NFN_TYPE_LOGOUT = 2; //Завершение сеанса
const SFN_TYPE_DATA = "DATA"; //Обмен данными (строковый код)
const SFN_TYPE_LOGIN = "LOGIN"; //Начало сеанса (строковый код)
const SFN_TYPE_LOGOUT = "LOGOUT"; //Завершение сеанса (строковый код)
//Способы передачи параметров функциям сервиса
const NFN_PRMS_TYPE_POST = 0; //POST-запрос
const NFN_PRMS_TYPE_GET = 1; //GET-запрос
const SFN_PRMS_TYPE_POST = "POST"; //POST-запрос
const SFN_PRMS_TYPE_GET = "GET"; //GET-запрос
//Расписание повторного исполнения функции
const NRETRY_SCHEDULE_UNDEF = 0; //Не определено
const NRETRY_SCHEDULE_SEC = 1; //Секунда
const NRETRY_SCHEDULE_MIN = 2; //Минута
const NRETRY_SCHEDULE_HOUR = 3; //Час
const NRETRY_SCHEDULE_DAY = 4; //Сутки
const NRETRY_SCHEDULE_WEEK = 5; //Неделя
const NRETRY_SCHEDULE_MONTH = 6; //Месяц
const SRETRY_SCHEDULE_UNDEF = "UNDEFINED"; //Не определено (строковый код)
const SRETRY_SCHEDULE_SEC = "SEC"; //Секунда (строковый код)
const SRETRY_SCHEDULE_MIN = "MIN"; //Минута (строковый код)
const SRETRY_SCHEDULE_HOUR = "HOUR"; //Час (строковый код)
const SRETRY_SCHEDULE_DAY = "DAY"; //Сутки (строковый код)
const SRETRY_SCHEDULE_WEEK = "WEEK"; //Неделя (строковый код)
const SRETRY_SCHEDULE_MONTH = "MONTH"; //Месяц (строковый код)
//-------------
// Тело модуля
//-------------
//Функция проверки наименования обработчика со стороны сервера приложений
const validateAppSrvFn = val => {
if (val) {
let r = /^[a-z0-9_.-]+(.js)\/[a-z0-9_.-]+$/;
return r.test(val.toLowerCase());
}
return true;
};
//------------------
// Интерфейс модуля
//------------------
//Константы
exports.NFN_TYPE_DATA = NFN_TYPE_DATA;
exports.NFN_TYPE_LOGIN = NFN_TYPE_LOGIN;
exports.NFN_TYPE_LOGOUT = NFN_TYPE_LOGOUT;
exports.SFN_TYPE_DATA = SFN_TYPE_DATA;
exports.SFN_TYPE_LOGIN = SFN_TYPE_LOGIN;
exports.SFN_TYPE_LOGOUT = SFN_TYPE_LOGOUT;
exports.NFN_PRMS_TYPE_POST = NFN_PRMS_TYPE_POST;
exports.NFN_PRMS_TYPE_GET = NFN_PRMS_TYPE_GET;
exports.SFN_PRMS_TYPE_POST = SFN_PRMS_TYPE_POST;
exports.SFN_PRMS_TYPE_GET = SFN_PRMS_TYPE_GET;
exports.NRETRY_SCHEDULE_UNDEF = NRETRY_SCHEDULE_UNDEF;
exports.NRETRY_SCHEDULE_SEC = NRETRY_SCHEDULE_SEC;
exports.NRETRY_SCHEDULE_MIN = NRETRY_SCHEDULE_MIN;
exports.NRETRY_SCHEDULE_HOUR = NRETRY_SCHEDULE_HOUR;
exports.NRETRY_SCHEDULE_DAY = NRETRY_SCHEDULE_DAY;
exports.NRETRY_SCHEDULE_WEEK = NRETRY_SCHEDULE_WEEK;
exports.NRETRY_SCHEDULE_MONTH = NRETRY_SCHEDULE_MONTH;
exports.SRETRY_SCHEDULE_UNDEF = SRETRY_SCHEDULE_UNDEF;
exports.SRETRY_SCHEDULE_SEC = SRETRY_SCHEDULE_SEC;
exports.SRETRY_SCHEDULE_MIN = SRETRY_SCHEDULE_MIN;
exports.SRETRY_SCHEDULE_HOUR = SRETRY_SCHEDULE_HOUR;
exports.SRETRY_SCHEDULE_DAY = SRETRY_SCHEDULE_DAY;
exports.SRETRY_SCHEDULE_WEEK = SRETRY_SCHEDULE_WEEK;
exports.SRETRY_SCHEDULE_MONTH = SRETRY_SCHEDULE_MONTH;
//Схема валидации функции сервиса
exports.ServiceFunction = new Schema({
//Идентификатор функции сервиса
nId: {
type: Number,
required: true,
message: {
type: "Идентификатор функции сервиса (nId) имеет некорректный тип данных (ожидалось - Number)",
required: "Не указан идентификатор функции сервиса (nId)"
}
},
//Идентификатор родительского сервиса функции
nServiceId: {
type: Number,
required: true,
message: {
type:
"Идентификатор родительского сервиса функции (nServiceId) имеет некорректный тип данных (ожидалось - Number)",
required: "Не указан идентификатор родительского сервиса функции (nServiceId)"
}
},
//Код функции сервиса
sCode: {
type: String,
required: true,
message: {
type: "Код функции сервиса (sCode) имеет некорректный тип данных (ожидалось - String)",
required: "Не указан код функции сервиса (sCode)"
}
},
//Тип функции сервиса
nFnType: {
type: Number,
enum: [NFN_TYPE_DATA, NFN_TYPE_LOGIN, NFN_TYPE_LOGOUT],
required: true,
message: {
type: "Тип функции сервиса (nFnType) имеет некорректный тип данных (ожидалось - Number)",
enum: "Значение типа функции сервиса (nFnType) не поддерживается",
required: "Не указан тип функции сервиса (nFnType)"
}
},
//Тип функции сервиса (строковый код)
sFnType: {
type: String,
enum: [SFN_TYPE_DATA, SFN_TYPE_LOGIN, SFN_TYPE_LOGOUT],
required: true,
message: {
type: "Строковый код типа функции сервиса (sFnType) имеет некорректный тип данных (ожидалось - String)",
enum: "Значение строкового кода типа функции сервиса (sFnType) не поддерживается",
required: "Не указан строковый код типа функции сервиса (sFnType)"
}
},
//Адрес функции сервиса
sFnURL: {
type: String,
required: true,
message: {
type: "Адрес функции сервиса (sFnURL) имеет некорректный тип данных (ожидалось - String)",
required: "Не указан адрес функции сервиса (sFnURL)"
}
},
//Способ передачи параметров функции сервиса
nFnPrmsType: {
type: Number,
enum: [NFN_PRMS_TYPE_GET, NFN_PRMS_TYPE_POST],
required: true,
message: {
type:
"Способ передачи параметров функции сервиса (nFnPrmsType) имеет некорректный тип данных (ожидалось - Number)",
enum: "Значение способа передачи параметров функции сервиса (nFnPrmsType) не поддерживается",
required: "Не указан способ передачи параметров функции сервиса (nFnPrmsType)"
}
},
//Способ передачи параметров функции сервиса (строковый код)
sFnPrmsType: {
type: String,
enum: [SFN_PRMS_TYPE_GET, SFN_PRMS_TYPE_POST],
required: true,
message: {
type:
"Строковый код способа передачи параметров функции сервиса (sFnPrmsType) имеет некорректный тип данных (ожидалось - String)",
enum:
"Значение строкового кода способа передачи параметров функции сервиса (sFnPrmsType) не поддерживается",
required: "Не указан строковый код способа передачи параметров функции сервиса (sFnPrmsType)"
}
},
//График повторной отправки запроса функции сервиса
nRetrySchedule: {
type: Number,
enum: [
NRETRY_SCHEDULE_UNDEF,
NRETRY_SCHEDULE_SEC,
NRETRY_SCHEDULE_MIN,
NRETRY_SCHEDULE_HOUR,
NRETRY_SCHEDULE_DAY,
NRETRY_SCHEDULE_WEEK,
NRETRY_SCHEDULE_MONTH
],
required: true,
message: {
type:
"График повторной отправки запроса функции сервиса (nRetrySchedule) имеет некорректный тип данных (ожидалось - Number)",
enum: "Значение графика повторной отправки запроса функции сервиса (nRetrySchedule) не поддерживается",
required: "Не указан график повторной отправки запроса функции сервиса (nRetrySchedule)"
}
},
//График повторной отправки запроса функции сервиса (строковый код)
sRetrySchedule: {
type: String,
enum: [
SRETRY_SCHEDULE_UNDEF,
SRETRY_SCHEDULE_SEC,
SRETRY_SCHEDULE_MIN,
SRETRY_SCHEDULE_HOUR,
SRETRY_SCHEDULE_DAY,
SRETRY_SCHEDULE_WEEK,
SRETRY_SCHEDULE_MONTH
],
required: true,
message: {
type:
"Строковый код графика повторной отправки запроса функции сервиса (sRetrySchedule) имеет некорректный тип данных (ожидалось - String)",
enum:
"Значение строкового кода графика повторной отправки запроса функции сервиса (sRetrySchedule) не поддерживается",
required: "Не указан строковый код графика повторной отправки запроса функции сервиса (sRetrySchedule)"
}
},
//Идентификатор типового сообщения обмена, обрабатываемого функцией сервиса
nMsgId: {
type: Number,
required: true,
message: {
type:
"Идентификатор типового сообщения обмена, обрабатываемого функцией сервиса (nMsgId) имеет некорректный тип данных (ожидалось - Number)",
required: "Не указан идентификатор типового сообщения обмена, обрабатываемого функцией сервиса (nMsgId)"
}
},
//Код типового сообщения обмена, обрабатываемого функцией сервиса
sMsgCode: {
type: String,
required: true,
message: {
type:
"Код типового сообщения обмена, обрабатываемого функцией сервиса (sMsgCode) имеет некорректный тип данных (ожидалось - String)",
required: "Не указан код типового сообщения обмена, обрабатываемого функцией сервиса (sMsgCode)"
}
},
//Обработчик сообщения "до" на строне сервера приложений для функции сервиса
sAppSrvBefore: {
type: String,
required: false,
use: { validateAppSrvFn },
message: {
type:
"Обработчик сообщения 'до' на строне сервера приложений для функции сервиса (sAppSrvBefore) имеет некорректный тип данных (ожидалось - String)",
required:
"Не указан обработчик сообщения 'до' на строне сервера приложений для функции сервиса (sAppSrvBefore)",
validateAppSrvFn:
"Обработчик сообщения 'до' на строне сервера приложений для функции сервиса (sAppSrvBefore) имеет некорректный формат, ожидалось: <МОДУЛЬ>.js/<ФУНКЦИЯ>"
}
},
//Обработчик сообщения "после" на строне сервера приложений для функции сервиса
sAppSrvAfter: {
type: String,
required: false,
use: { validateAppSrvFn },
message: {
type:
"Обработчик сообщения 'после' на строне сервера приложений для функции сервиса (sAppSrvAfter) имеет некорректный тип данных (ожидалось - String)",
required:
"Не указан обработчик сообщения 'после' на строне сервера приложений для функции сервиса (sAppSrvAfter)",
validateAppSrvFn:
"Обработчик сообщения 'после' на строне сервера приложений для функции сервиса (sAppSrvBefore) имеет некорректный формат, ожидалось: <МОДУЛЬ>.js/<ФУНКЦИЯ>"
}
}
});