cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
314 lines • 12.2 kB
TypeScript
/**
* Интерфейсы для системы массовых операций (Batch Operations)
*/
import { ICSElement } from './interfaces';
/**
* Тип операции в батче
*/
export declare enum BatchOperationType {
CREATE = "create",
UPDATE = "update",
DELETE = "delete",
MOVE = "move",
COPY = "copy",
VALIDATE = "validate",
TRANSFORM = "transform",
CUSTOM = "custom"
}
/**
* Приоритет операции
*/
export declare enum BatchPriority {
LOW = 1,
NORMAL = 2,
HIGH = 3,
CRITICAL = 4
}
/**
* Стратегия выполнения батча
*/
export declare enum BatchExecutionStrategy {
SEQUENTIAL = "sequential",
PARALLEL = "parallel",
MIXED = "mixed"
}
/**
* Режим обработки ошибок
*/
export declare enum BatchErrorMode {
FAIL_FAST = "fail_fast",
CONTINUE = "continue",
COLLECT_ERRORS = "collect_errors"
}
/**
* Базовая операция в батче
*/
export interface BatchOperation {
/** Уникальный идентификатор операции */
id: string;
/** Тип операции */
type: BatchOperationType;
/** Приоритет операции */
priority: BatchPriority;
/** Целевой элемент */
target?: ICSElement;
/** Дополнительные параметры */
params?: Record<string, any>;
/** Функция выполнения операции */
execute: (context: BatchExecutionContext) => Promise<any>;
/** Функция отката операции */
rollback?: (context: BatchExecutionContext) => Promise<void>;
/** Валидация перед выполнением */
validate?: (context: BatchExecutionContext) => Promise<BatchValidationResult>;
/** Зависимости от других операций */
dependencies?: string[];
/** Метаданные операции */
metadata?: Record<string, any>;
/** Таймаут выполнения (мс) */
timeout?: number;
/** Максимальное количество попыток */
maxRetries?: number;
}
/**
* Контекст выполнения операции
*/
export interface BatchExecutionContext {
/** ID батча */
batchId: string;
/** Текущая операция */
operation: BatchOperation;
/** Результаты предыдущих операций */
previousResults: Map<string, BatchOperationResult>;
/** Общие данные батча */
sharedData: Map<string, any>;
/** Отмена выполнения */
abortSignal?: AbortSignal;
/** Функция обновления прогресса */
updateProgress?: (progress: Partial<BatchProgress>) => void;
}
/**
* Результат выполнения операции
*/
export interface BatchOperationResult {
/** ID операции */
operationId: string;
/** Успешность выполнения */
success: boolean;
/** Результат операции */
result?: any;
/** Ошибка, если есть */
error?: Error;
/** Время выполнения (мс) */
executionTime: number;
/** Количество попыток */
attempts: number;
/** Метаданные результата */
metadata?: Record<string, any>;
}
/**
* Результат валидации операции
*/
export interface BatchValidationResult {
/** Валидна ли операция */
valid: boolean;
/** Ошибки валидации */
errors: string[];
/** Предупреждения */
warnings: string[];
}
/**
* Прогресс выполнения батча
*/
export interface BatchProgress {
/** ID батча */
batchId: string;
/** Общее количество операций */
totalOperations: number;
/** Выполнено операций */
completedOperations: number;
/** Неудачных операций */
failedOperations: number;
/** Пропущенных операций */
skippedOperations: number;
/** Процент выполнения (0-100) */
percentage: number;
/** Текущая операция */
currentOperation?: string;
/** Оценочное время завершения */
estimatedTimeRemaining?: number;
/** Время начала */
startTime: Date;
/** Время последнего обновления */
lastUpdate: Date;
}
/**
* Результат выполнения батча
*/
export interface BatchResult {
/** ID батча */
batchId: string;
/** Успешность выполнения всего батча */
success: boolean;
/** Результаты операций */
operationResults: BatchOperationResult[];
/** Общее время выполнения */
totalExecutionTime: number;
/** Статистика */
statistics: BatchStatistics;
/** Ошибки батча */
errors: Error[];
/** Метаданные */
metadata?: Record<string, any>;
}
/**
* Статистика выполнения батча
*/
export interface BatchStatistics {
/** Общее количество операций */
totalOperations: number;
/** Успешных операций */
successfulOperations: number;
/** Неудачных операций */
failedOperations: number;
/** Пропущенных операций */
skippedOperations: number;
/** Среднее время выполнения операции */
averageExecutionTime: number;
/** Минимальное время выполнения */
minExecutionTime: number;
/** Максимальное время выполнения */
maxExecutionTime: number;
/** Использование памяти */
memoryUsage?: number;
}
/**
* Конфигурация батча
*/
export interface BatchConfig {
/** Стратегия выполнения */
executionStrategy: BatchExecutionStrategy;
/** Режим обработки ошибок */
errorMode: BatchErrorMode;
/** Максимальное количество параллельных операций */
maxConcurrency: number;
/** Общий таймаут батча (мс) */
timeout?: number;
/** Интервал обновления прогресса (мс) */
progressUpdateInterval: number;
/** Включить откат при ошибках */
enableRollback: boolean;
/** Валидировать операции перед выполнением */
validateBeforeExecution: boolean;
/** Сохранять промежуточные результаты */
persistIntermediateResults: boolean;
}
/**
* Слушатель событий батча
*/
export interface BatchEventListener {
/** Начало выполнения батча */
onBatchStart?: (batchId: string) => void;
/** Завершение батча */
onBatchComplete?: (result: BatchResult) => void;
/** Ошибка батча */
onBatchError?: (batchId: string, error: Error) => void;
/** Начало операции */
onOperationStart?: (operation: BatchOperation) => void;
/** Завершение операции */
onOperationComplete?: (result: BatchOperationResult) => void;
/** Ошибка операции */
onOperationError?: (operationId: string, error: Error) => void;
/** Обновление прогресса */
onProgressUpdate?: (progress: BatchProgress) => void;
}
/**
* Менеджер массовых операций
*/
export interface IBatchManager {
/** Создать новый батч */
createBatch(config?: Partial<BatchConfig>): string;
/** Добавить операцию в батч */
addOperation(batchId: string, operation: BatchOperation): void;
/** Добавить несколько операций */
addOperations(batchId: string, operations: BatchOperation[]): void;
/** Выполнить батч */
executeBatch(batchId: string): Promise<BatchResult>;
/** Отменить выполнение батча */
cancelBatch(batchId: string): Promise<void>;
/** Получить прогресс выполнения */
getProgress(batchId: string): BatchProgress | null;
/** Получить результат батча */
getBatchResult(batchId: string): BatchResult | null;
/** Удалить батч */
removeBatch(batchId: string): boolean;
/** Получить все активные батчи */
getActiveBatches(): string[];
/** Добавить слушателя событий */
addEventListener(listener: BatchEventListener): void;
/** Удалить слушателя событий */
removeEventListener(listener: BatchEventListener): void;
/** Получить статистику */
getStatistics(): BatchManagerStatistics;
}
/**
* Статистика менеджера батчей
*/
export interface BatchManagerStatistics {
/** Общее количество выполненных батчей */
totalBatches: number;
/** Успешных батчей */
successfulBatches: number;
/** Неудачных батчей */
failedBatches: number;
/** Активных батчей */
activeBatches: number;
/** Общее количество операций */
totalOperations: number;
/** Среднее время выполнения батча */
averageBatchExecutionTime: number;
/** Использование памяти */
memoryUsage: number;
}
/**
* Фабрика операций
*/
export interface BatchOperationFactory {
/** Создать операцию создания элемента */
createElementOperation(elementData: any): BatchOperation;
/** Создать операцию обновления элемента */
updateElementOperation(element: ICSElement, updates: any): BatchOperation;
/** Создать операцию удаления элемента */
deleteElementOperation(element: ICSElement): BatchOperation;
/** Создать операцию перемещения элемента */
moveElementOperation(element: ICSElement, newParent: ICSElement): BatchOperation;
/** Создать операцию копирования элемента */
copyElementOperation(element: ICSElement, target: ICSElement): BatchOperation;
/** Создать операцию валидации */
validateElementOperation(element: ICSElement): BatchOperation;
/** Создать пользовательскую операцию */
customOperation(id: string, executor: (context: BatchExecutionContext) => Promise<any>): BatchOperation;
}
/**
* Построитель батчей
*/
export interface BatchBuilder {
/** Установить конфигурацию */
withConfig(config: Partial<BatchConfig>): BatchBuilder;
/** Добавить операцию */
addOperation(operation: BatchOperation): BatchBuilder;
/** Добавить операции */
addOperations(operations: BatchOperation[]): BatchBuilder;
/** Добавить операцию создания */
createElement(elementData: any): BatchBuilder;
/** Добавить операцию обновления */
updateElement(element: ICSElement, updates: any): BatchBuilder;
/** Добавить операцию удаления */
deleteElement(element: ICSElement): BatchBuilder;
/** Добавить условную операцию */
when(condition: (context: BatchExecutionContext) => boolean, operation: BatchOperation): BatchBuilder;
/** Построить и выполнить батч */
execute(): Promise<BatchResult>;
/** Построить батч без выполнения */
build(): string;
}
//# sourceMappingURL=batch-interfaces.d.ts.map