forked from CITKParus/P8-ExchangeService
358 lines
20 KiB
JavaScript
358 lines
20 KiB
JavaScript
/*
|
||
Сервис интеграции ПП Парус 8 с WEB API
|
||
Модели данных: описатель сообщения очереди обмена
|
||
*/
|
||
|
||
//----------------------
|
||
// Подключение библиотек
|
||
//----------------------
|
||
|
||
const Schema = require("validate"); //Схемы валидации
|
||
|
||
//----------
|
||
// Константы
|
||
//----------
|
||
|
||
//Состояния исполнения сообщений очереди обмена
|
||
const NQUEUE_EXEC_STATE_INQUEUE = 0; //Поставлено в очередь
|
||
const NQUEUE_EXEC_STATE_APP = 1; //Обрабатывается сервером приложений
|
||
const NQUEUE_EXEC_STATE_APP_OK = 2; //Успешно обработано сервером приложений
|
||
const NQUEUE_EXEC_STATE_APP_ERR = 3; //Ошибка обработки сервером приложений
|
||
const NQUEUE_EXEC_STATE_DB = 4; //Обрабатывается СУБД
|
||
const NQUEUE_EXEC_STATE_DB_OK = 5; //Успешно обработано СУБД
|
||
const NQUEUE_EXEC_STATE_DB_ERR = 6; //Ошибка обработки СУБД
|
||
const NQUEUE_EXEC_STATE_OK = 7; //Обработано успешно
|
||
const NQUEUE_EXEC_STATE_ERR = 8; //Обработано с ошибками
|
||
const SQUEUE_EXEC_STATE_INQUEUE = "INQUEUE"; //Поставлено в очередь (строковый код)
|
||
const SQUEUE_EXEC_STATE_APP = "APP"; //Обрабатывается сервером приложений (строковый код)
|
||
const SQUEUE_EXEC_STATE_APP_OK = "APP_OK"; //Успешно обработано сервером приложений (строковый код)
|
||
const SQUEUE_EXEC_STATE_APP_ERR = "APP_ERR"; //Ошибка обработки сервером приложений (строковый код)
|
||
const SQUEUE_EXEC_STATE_DB = "DB"; //Обрабатывается СУБД (строковый код)
|
||
const SQUEUE_EXEC_STATE_DB_OK = "DB_OK"; //Успешно обработано СУБД (строковый код)
|
||
const SQUEUE_EXEC_STATE_DB_ERR = "DB_ERR"; //Ошибка обработки СУБД (строковый код)
|
||
const SQUEUE_EXEC_STATE_OK = "OK"; //Обработано успешно (строковый код)
|
||
const SQUEUE_EXEC_STATE_ERR = "ERR"; //Обработано с ошибками (строковый код)
|
||
|
||
//Коды результатов исполнения обработчика сообщения
|
||
const SPRC_RESP_RESULT_OK = "OK"; //Обработано успешно
|
||
const SPRC_RESP_RESULT_ERR = "ERR"; //Ошибка обработки
|
||
const SPRC_RESP_RESULT_UNAUTH = "UNAUTH"; //Неаутентифицирован
|
||
|
||
//Флаг сброса данных сообщения
|
||
const NQUEUE_RESET_DATA_NO = 0; //Не сбрасывать
|
||
const NQUEUE_RESET_DATA_YES = 1; //Сбросить
|
||
|
||
//------------------
|
||
// Интерфейс модуля
|
||
//------------------
|
||
|
||
//Константы
|
||
exports.NQUEUE_EXEC_STATE_INQUEUE = NQUEUE_EXEC_STATE_INQUEUE;
|
||
exports.NQUEUE_EXEC_STATE_APP = NQUEUE_EXEC_STATE_APP;
|
||
exports.NQUEUE_EXEC_STATE_APP_OK = NQUEUE_EXEC_STATE_APP_OK;
|
||
exports.NQUEUE_EXEC_STATE_APP_ERR = NQUEUE_EXEC_STATE_APP_ERR;
|
||
exports.NQUEUE_EXEC_STATE_DB = NQUEUE_EXEC_STATE_DB;
|
||
exports.NQUEUE_EXEC_STATE_DB_OK = NQUEUE_EXEC_STATE_DB_OK;
|
||
exports.NQUEUE_EXEC_STATE_DB_ERR = NQUEUE_EXEC_STATE_DB_ERR;
|
||
exports.NQUEUE_EXEC_STATE_OK = NQUEUE_EXEC_STATE_OK;
|
||
exports.NQUEUE_EXEC_STATE_ERR = NQUEUE_EXEC_STATE_ERR;
|
||
exports.SQUEUE_EXEC_STATE_INQUEUE = SQUEUE_EXEC_STATE_INQUEUE;
|
||
exports.SQUEUE_EXEC_STATE_APP = SQUEUE_EXEC_STATE_APP;
|
||
exports.SQUEUE_EXEC_STATE_APP_OK = SQUEUE_EXEC_STATE_APP_OK;
|
||
exports.SQUEUE_EXEC_STATE_APP_ERR = SQUEUE_EXEC_STATE_APP_ERR;
|
||
exports.SQUEUE_EXEC_STATE_DB = SQUEUE_EXEC_STATE_DB;
|
||
exports.SQUEUE_EXEC_STATE_DB_OK = SQUEUE_EXEC_STATE_DB_OK;
|
||
exports.SQUEUE_EXEC_STATE_DB_ERR = SQUEUE_EXEC_STATE_DB_ERR;
|
||
exports.SQUEUE_EXEC_STATE_OK = SQUEUE_EXEC_STATE_OK;
|
||
exports.SQUEUE_EXEC_STATE_ERR = SQUEUE_EXEC_STATE_ERR;
|
||
exports.SPRC_RESP_RESULT_OK = SPRC_RESP_RESULT_OK;
|
||
exports.SPRC_RESP_RESULT_ERR = SPRC_RESP_RESULT_ERR;
|
||
exports.SPRC_RESP_RESULT_UNAUTH = SPRC_RESP_RESULT_UNAUTH;
|
||
exports.NQUEUE_RESET_DATA_NO = NQUEUE_RESET_DATA_NO;
|
||
exports.NQUEUE_RESET_DATA_YES = NQUEUE_RESET_DATA_YES;
|
||
|
||
//Схема валидации сообщения очереди обмена
|
||
exports.Queue = new Schema({
|
||
//Идентификатор сообщения очереди обмена
|
||
nId: {
|
||
type: Number,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Идентификатор сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан идентификатор сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Дата постановки сообщения в очередь обмена
|
||
dInDate: {
|
||
type: Date,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Дата постановки сообщения в очередь обмена (${path}) имеет некорректный тип данных (ожидалось - Date)`,
|
||
required: path => `Не указана дата постановки сообщения в очередь обмена (${path})`
|
||
}
|
||
},
|
||
//Дата постановки сообщения в очередь обмена (строковое представление)
|
||
sInDate: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Строковое представление даты постановки сообщения в очередь обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указано строковое представление даты постановки сообщения в очередь обмена (${path})`
|
||
}
|
||
},
|
||
//Пользователь поставивший сообщение в очередь обмена
|
||
sInAuth: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Пользователь, поставивший сообщение в очередь обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан пользователь, поставивший сообщение в очередь обмена (${path})`
|
||
}
|
||
},
|
||
//Идентификатор сервиса-обработчика сообщения очереди обмена
|
||
nServiceId: {
|
||
type: Number,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Идентификатор сервиса-обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан идентификатор сервиса-обработчика сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Код сервиса-обработчика сообщения очереди обмена
|
||
sServiceCode: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Код сервиса-обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан код сервиса-обработчика сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Идентификатор функции сервиса-обработчика сообщения очереди обмена
|
||
nServiceFnId: {
|
||
type: Number,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Идентификатор функции сервиса-обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан идентификатор функции сервиса-обработчика сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Код функции сервиса-обработчика сообщения очереди обмена
|
||
sServiceFnCode: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Код функции сервиса-обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан код функции сервиса-обработчика сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Дата обработки сообщения очереди обмена
|
||
dExecDate: {
|
||
type: Date,
|
||
required: false,
|
||
message: {
|
||
type: path =>
|
||
`Дата обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Date)`,
|
||
required: path => `Не указана дата обработки сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Дата обработки сообщения очереди обмена (строковое представление)
|
||
sExecDate: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path =>
|
||
`Строковое представление даты обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указано строковое представление даты обработки сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Количество попыток обработки сообщения очереди обмена
|
||
nExecCnt: {
|
||
type: Number,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Количество попыток обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указано количество попыток обработки сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Предельное количество попыток обработки сообщения очереди обмена
|
||
nRetryAttempts: {
|
||
type: Number,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Предельное количество попыток обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указано предельное количество попыток обработки сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Состояние обработки сообщения очереди обмена
|
||
nExecState: {
|
||
type: Number,
|
||
enum: [
|
||
NQUEUE_EXEC_STATE_INQUEUE,
|
||
NQUEUE_EXEC_STATE_APP,
|
||
NQUEUE_EXEC_STATE_APP_OK,
|
||
NQUEUE_EXEC_STATE_APP_ERR,
|
||
NQUEUE_EXEC_STATE_DB,
|
||
NQUEUE_EXEC_STATE_DB_OK,
|
||
NQUEUE_EXEC_STATE_DB_ERR,
|
||
NQUEUE_EXEC_STATE_OK,
|
||
NQUEUE_EXEC_STATE_ERR
|
||
],
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Состояние обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
enum: path => `Значение состояния обработки сообщения очереди обмена (${path}) не поддерживается`,
|
||
required: path => `Не указано состояние обработки сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Состояние обработки сообщения очереди обмена (строковый код)
|
||
sExecState: {
|
||
type: String,
|
||
enum: [
|
||
SQUEUE_EXEC_STATE_INQUEUE,
|
||
SQUEUE_EXEC_STATE_APP,
|
||
SQUEUE_EXEC_STATE_APP_OK,
|
||
SQUEUE_EXEC_STATE_APP_ERR,
|
||
SQUEUE_EXEC_STATE_DB,
|
||
SQUEUE_EXEC_STATE_DB_OK,
|
||
SQUEUE_EXEC_STATE_DB_ERR,
|
||
SQUEUE_EXEC_STATE_OK,
|
||
SQUEUE_EXEC_STATE_ERR
|
||
],
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Строковый код состояния обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
enum: path =>
|
||
`Значение строкового кода состояния обработки сообщения очереди обмена (${path}) не поддерживается`,
|
||
required: path => `Не указан строковый код состояния обработки сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Информация от обработчика сообщения очереди обмена
|
||
sExecMsg: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path =>
|
||
`Информация от обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указана информация от обработчика сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Идентификатор связанного сообщения очереди обмена
|
||
nQueueId: {
|
||
type: Number,
|
||
required: false,
|
||
message: {
|
||
type: path =>
|
||
`Идентификатор связанного сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан идентификатор связанного сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Параметры сообщения
|
||
sOptions: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path =>
|
||
`Параметры сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указаны параметры сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Параметры ответа
|
||
sOptionsResp: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path =>
|
||
`Параметры ответа на сообщение очереди обмена (${path}) имеют некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указаны параметры ответа на сообщение очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Приоритет в очереди обмена
|
||
nPriority: {
|
||
type: Number,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Приоритет в очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан приоритет в очереди обмена (${path})`
|
||
}
|
||
}
|
||
});
|
||
|
||
//Схема валидации данных сообщения очереди обмена
|
||
exports.QueueMsg = new Schema({
|
||
//Данные сообщения очереди обмена
|
||
blMsg: {
|
||
type: Buffer,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Данные сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - Buffer)`,
|
||
required: path => `Не указаны данные сообщения очереди обмена (${path})`
|
||
}
|
||
}
|
||
}).validator({ required: val => val === null || val });
|
||
|
||
//Схема валидации данных ответа сообщения очереди обмена
|
||
exports.QueueResp = new Schema({
|
||
//Данные ответа сообщения очереди обмена
|
||
blResp: {
|
||
type: Buffer,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Данные ответа сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - Buffer)`,
|
||
required: path => `Не указаны данные ответа сообщения очереди обмена (${path})`
|
||
}
|
||
}
|
||
}).validator({ required: val => val === null || val });
|
||
|
||
//Схема валидации результата обработки сообщения очереди
|
||
exports.QueuePrcResult = new Schema({
|
||
//Состояние обработки сообщения очереди обмена
|
||
sResult: {
|
||
type: String,
|
||
enum: [SPRC_RESP_RESULT_OK, SPRC_RESP_RESULT_ERR, SPRC_RESP_RESULT_UNAUTH],
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Состояние обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
enum: path => `Значение состояния обработки сообщения очереди обмена (${path}) не поддерживается`,
|
||
required: path => `Не указано состояние обработки сообщения очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Параметры ответа на сообщение очереди обмена
|
||
sOptionsResp: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path =>
|
||
`Параметры ответа на сообщение очереди обмена (${path}) имеют некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указаны параметры ответа на сообщение очереди обмена (${path})`
|
||
}
|
||
},
|
||
//Информация от обработчика сообщения очереди обмена
|
||
sMsg: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path =>
|
||
`Информация от обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указана информация от обработчика сообщения очереди обмена (${path})`
|
||
}
|
||
}
|
||
}).validator({
|
||
required: val => typeof val != "undefined"
|
||
});
|