UNPKG

cs-element

Version:

Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support

314 lines 12.2 kB
/** * Интерфейсы для системы массовых операций (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