Расширение схемы обмена с родительским процессом - передаём любые статусы, изменённое тело сообщения

This commit is contained in:
Mikhail Chechnev 2018-12-05 22:27:31 +03:00
parent 04f218bc84
commit 5b35c48e0a

View File

@ -8,9 +8,45 @@
//----------------------
const Schema = require("validate"); //Схемы валидации
const { Queue } = require("./obj_queue"); //Схема валидации сообщения очереди обмена
const { Service } = require("./obj_service"); //Схема валидации сервиса
const { NQUEUE_EXEC_STATE_APP_OK, NQUEUE_EXEC_STATE_APP_ERR } = require("./obj_queue"); //Схема валидации сообщения очереди обмена
const { ServiceFunction } = require("./obj_service_function"); //Схема валидации функции сервиса
const {
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
} = require("./obj_queue"); //Схема валидации сообщения очереди обмена
//------------
// Тело модуля
//------------
//Валидация данных сообщения очереди
const validateBuffer = val => {
//Либо null
if (val === null) {
return true;
} else {
//Либо данные для формирования Buffer
const s = new Schema({
type: {
type: String,
required: true
},
data: {
type: Array,
required: true
}
});
const errs = s.validate(val, { strip: false });
return errs.length == 0;
}
};
//------------------
// Интерфейс модуля
@ -18,22 +54,76 @@ const { NQUEUE_EXEC_STATE_APP_OK, NQUEUE_EXEC_STATE_APP_ERR } = require("./obj_q
//Схема валидации задачи обработчику очереди исходящих сообщений
exports.OutQueueProcessorTask = new Schema({
//Запись журнала обмена для обработки
queue: {
//schema: Queue,
required: false,
//Идентификатор записи журнала обмена для обработки
nQueueId: {
type: Number,
required: true,
message: {
required: "Не указано обрабатываемое сообщение очереди (queue)"
type: path =>
`Идентификатор записи журнала обмена для обработки (${path}) имеет некорректный тип данных (ожидалось - Number)`,
required: path => `Не указан идентификатор записи журнала обмена для обработки (${path})`
}
},
//Cервис
service: {
//schema: Service,
required: false,
//Состояние обработки сообщения очереди обмена
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: {
required: "Не указан сервис для обработки сообщения очереди (service)"
type: path =>
`Состояние обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
enum: path => `Значение состояния обработки сообщения очереди обмена (${path}) не поддерживается`,
required: path => `Не указано состояние обработки сообщения очереди обмена (${path})`
}
},
//Данные сообщения очереди обмена
blMsg: {
use: { validateBuffer },
required: true,
message: {
validateBuffer: path =>
`Данные записи журнала обмена для обработки (${path}) имеют некорректный тип данных (ожидалось - null или {type: String, data: Array})`,
required: path => `Не указаны данные сообщения очереди обмена (${path})`
}
},
//Данные ответа на сообщение очереди обмена
blResp: {
use: { validateBuffer },
required: true,
message: {
validateBuffer: path =>
`Данные ответа (${path}) имеют некорректный тип данных (ожидалось - null или {type: String, data: Array})`,
required: path => `Не указаны данные ответа (${path})`
}
},
//Cервис-обработчик
service: {
schema: Service,
required: true,
message: {
required: path => `Не указан сервис для обработки сообщения очереди (${path})`
}
},
//Функция сервиса-обработчика
function: {
schema: ServiceFunction,
required: true,
message: {
required: path => `Не указана функция сервиса для обработки сообщения очереди (${path})`
}
}
}).validator({
required: val => typeof val != "undefined"
});
//Схема валидации ответа обработчика очереди исходящих сообщений
@ -41,13 +131,23 @@ exports.OutQueueProcessorTaskResult = new Schema({
//Состояние обработки сообщения очереди обмена
nExecState: {
type: Number,
enum: [NQUEUE_EXEC_STATE_APP_OK, NQUEUE_EXEC_STATE_APP_ERR],
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:
"Состояние обработки сообщения очереди обмена (nExecState) имеет некорректный тип данных (ожидалось - Number)",
enum: "Значение состояния обработки сообщения очереди обмена (nExecState) не поддерживается",
required: "Не указано состояние обработки сообщения очереди обмена (nExecState)"
type: path =>
`Состояние обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`,
enum: path => `Значение состояния обработки сообщения очереди обмена (${path}) не поддерживается`,
required: path => `Не указано состояние обработки сообщения очереди обмена (${path})`
}
},
//Информация от обработчика сообщения очереди обмена
@ -55,18 +155,31 @@ exports.OutQueueProcessorTaskResult = new Schema({
type: String,
required: false,
message: {
type:
"Информация от обработчика сообщения очереди обмена (sExecMsg) имеет некорректный тип данных (ожидалось - String)",
required: "Не указана информация от обработчика сообщения очереди обмена (sExecMsg)"
type: path =>
`Информация от обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`,
required: path => `Не указана информация от обработчика сообщения очереди обмена (${path})`
}
},
//Данные ответа
blResp: {
type: Buffer,
required: false,
//Данные сообщения очереди обмена
blMsg: {
use: { validateBuffer },
required: true,
message: {
type: "Данные ответа сообщения очереди обмена (blResp) имеют некорректный тип данных (ожидалось - Buffer)",
required: "Не указаны данные ответа сообщения очереди обмена (blResp)"
validateBuffer: path =>
`Данные сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - null или {type: String, data: Array})`,
required: path => `Не указаны данные сообщения очереди обмена (${path})`
}
},
//Данные ответа сообщения очереди обмена
blResp: {
use: { validateBuffer },
required: true,
message: {
validateBuffer: path =>
`Данные ответа сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - null или {type: String, data: Array})`,
required: path => `Не указаны данные ответа сообщения очереди обмена (${path})`
}
}
}).validator({
required: val => typeof val != "undefined"
});