246 lines
13 KiB
JavaScript
246 lines
13 KiB
JavaScript
/*
|
||
Сервис интеграции ПП Парус 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"; //Месяц (строковый код)
|
||
|
||
//------------------
|
||
// Интерфейс модуля
|
||
//------------------
|
||
|
||
//Константы
|
||
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,
|
||
message: {
|
||
type:
|
||
"Обработчик сообщения 'до' на строне сервера приложений для функции сервиса (sAppSrvBefore) имеет некорректный тип данных (ожидалось - String)",
|
||
required:
|
||
"Не указан обработчик сообщения 'до' на строне сервера приложений для функции сервиса (sAppSrvBefore)"
|
||
}
|
||
},
|
||
//Обработчик сообщения "после" на строне сервера приложений для функции сервиса
|
||
sAppSrvAfter: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type:
|
||
"Обработчик сообщения 'после' на строне сервера приложений для функции сервиса (sAppSrvAfter) имеет некорректный тип данных (ожидалось - String)",
|
||
required:
|
||
"Не указан обработчик сообщения 'после' на строне сервера приложений для функции сервиса (sAppSrvBefore)"
|
||
}
|
||
}
|
||
});
|