Expand description
Comprehensive workflow orchestration engine for OxiMedia.
This crate provides a complete workflow orchestration system with:
- DAG-based workflow definition
- Task dependencies and parallel execution
- State persistence with
SQLite - Cron-style scheduling
- REST API for workflow management
- Real-time monitoring and metrics
- Multiple task types (transcode, QC, transfer, etc.)
§Examples
§Creating a Simple Workflow
use oximedia_workflow::{Workflow, Task, TaskType};
use std::time::Duration;
let mut workflow = Workflow::new("my-workflow");
let task = Task::new("wait-task", TaskType::Wait {
duration: Duration::from_secs(5),
});
workflow.add_task(task);§Creating a Multi-Pass Encoding Workflow
use oximedia_workflow::patterns::multi_pass_encoding;
use std::path::PathBuf;
let workflow = multi_pass_encoding(
PathBuf::from("/source.mp4"),
PathBuf::from("/proxy.mp4"),
PathBuf::from("/output.mp4"),
"broadcast".to_string(),
);Re-exports§
pub use batch_status::BatchStatusWriter;pub use batch_status::FlushResult;pub use batch_status::StatusUpdate;pub use builder::QcTaskBuilder;pub use builder::TaskBuilder;pub use builder::TranscodeTaskBuilder;pub use builder::TransferTaskBuilder;pub use builder::WorkflowBuilder;pub use circuit_breaker::CircuitBreaker;pub use circuit_breaker::CircuitBreakerConfig;pub use circuit_breaker::CircuitBreakerMetrics;pub use circuit_breaker::CircuitBreakerRegistry;pub use circuit_breaker::CircuitBreakerSummary;pub use circuit_breaker::CircuitDecision;pub use circuit_breaker::CircuitState;pub use dag::audio_normalize;pub use dag::ingest_transcode;pub use dag::subtitle_burn;pub use dag::BranchEvaluator;pub use dag::BranchNode;pub use dag::BranchType;pub use dag::DagError;pub use dag::DagRunStatus;pub use dag::DagWorkflowEngine;pub use dag::NodeId;pub use dag::NodeStatus;pub use dag::WorkflowDag;pub use dag::WorkflowEdge;pub use dag::WorkflowNode;pub use dag::WorkflowTemplate;pub use error::Result;pub use error::WorkflowError;pub use event_bus::BusEvent;pub use event_bus::EventBus;pub use event_bus::EventBusConfig;pub use event_bus::EventBusStats;pub use event_bus::EventFilter;pub use event_bus::SubscriptionId;pub use executor::parse_condition;pub use executor::DefaultTaskExecutor;pub use executor::ExecutionContext;pub use executor::TaskExecutor;pub use executor::WorkflowControl;pub use executor::WorkflowExecutor;pub use monitoring::MonitoringService;pub use monitoring::SystemStatistics;pub use monitoring::TaskMetrics;pub use monitoring::WorkflowMetrics;pub use parallel_steps::execute_step;pub use parallel_steps::ParallelStepError;pub use parallel_steps::ParallelSteps;pub use parallel_steps::StepResult;pub use parallel_steps::StepType;pub use parallel_steps::WorkflowStage;pub use parallel_steps::WorkflowStep;pub use queue::QueueStatistics;pub use queue::TaskQueue;pub use retry_policy::ExponentialRetryPolicy;pub use retry_policy::RetryDecision;pub use retry_policy::RetryPolicyState;pub use scheduler::Clock;pub use scheduler::FileWatcher;pub use scheduler::ScheduledWorkflow;pub use scheduler::SystemClock;pub use scheduler::Trigger;pub use scheduler::WorkflowScheduler;pub use task::AnalysisType;pub use task::HttpMethod;pub use task::NotificationChannel;pub use task::RetryPolicy;pub use task::Task;pub use task::TaskId;pub use task::TaskPriority;pub use task::TaskResult;pub use task::TaskState;pub use task::TaskType;pub use task::TransferProtocol;pub use task_priority_queue::PriorityEntry;pub use task_priority_queue::PriorityLevel;pub use task_priority_queue::TaskPriorityQueue;pub use utils::calculate_parallelism;pub use utils::clone_workflow;pub use utils::estimate_workflow_duration;pub use utils::expand_env_vars;pub use utils::expand_template;pub use utils::find_critical_path;pub use utils::format_duration;pub use utils::generate_task_name;pub use utils::get_workflow_statistics;pub use utils::merge_configs;pub use utils::normalize_paths;pub use utils::parse_duration;pub use utils::sanitize_task_name;pub use utils::WorkflowStatistics;pub use validation::ComplexityAnalyzer;pub use validation::ComplexityLevel;pub use validation::ComplexityMetrics;pub use validation::TaskValidator;pub use validation::ValidationReport;pub use validation::ValidationRule;pub use validation::WorkflowValidator;pub use webhook::WebhookConfig;pub use webhook::WebhookEvent;pub use webhook::WebhookNotifier;pub use webhook::WorkflowContext;pub use websocket::WebSocketManager;pub use websocket::WebSocketState;pub use websocket::WorkflowEvent;pub use workflow::Edge;pub use workflow::Workflow;pub use workflow::WorkflowConfig;pub use workflow::WorkflowId;pub use workflow::WorkflowState;pub use workflow_import_export::deserialize_bundle;pub use workflow_import_export::export_workflow;pub use workflow_import_export::import_workflow;pub use workflow_import_export::serialize_bundle;pub use workflow_import_export::BundleFormat;pub use workflow_import_export::DagBundle;pub use workflow_import_export::WorkflowBundle;pub use workflow_import_export::WorkflowDefinition;pub use workflow_migration::FieldChange;pub use workflow_migration::MigrationError;pub use workflow_migration::MigrationRegistry;pub use workflow_migration::MigrationStep;pub use workflow_migration::SchemaVersion;pub use workflow_simulation::quick_simulate;pub use workflow_simulation::ConditionSource;pub use workflow_simulation::EvaluatedCondition;pub use workflow_simulation::SimulatedOutcome;pub use workflow_simulation::SimulationConfig;pub use workflow_simulation::SimulationResult;pub use workflow_simulation::SimulationSummary;pub use workflow_simulation::WorkflowSimulator;pub use patterns::*;
Modules§
- approval_
gate - Approval gate system for workflow steps.
- audit_
log - Workflow audit logging: immutable event log, actor tracking, and compliance export.
- batch_
status - Batch task status update manager.
- builder
- Builder pattern for workflow construction.
- checkpoint
- File-based workflow checkpoint/resume support for
oximedia-workflow. - circuit_
breaker - Circuit breaker pattern for workflow retry protection.
- cost_
tracking - Workflow cost tracking: per-step costs, budget limits, and cost center allocation.
- dag
- DAG-based workflow definition with
WorkflowNode,WorkflowEdge,WorkflowDag,WorkflowEnginewith node-level status tracking, andWorkflowTemplate. - error
- Error types for workflow orchestration.
- event_
bus - Publish/subscribe event bus for workflow task communication.
- execution_
trace - Execution tracing and span tracking for workflow debugging.
- executor
- Workflow execution engine.
- fan_
pattern - Fan-out / fan-in parallel task execution patterns.
- fanout
- Fan-out / fan-in parallel execution pattern for OxiMedia workflows.
- monitoring
- Workflow monitoring and metrics.
- notification_
sink - Notification sink integrations for workflow events.
- notification_
system - Notification system for workflow events.
- parallel_
steps - Parallel and sequential step execution within workflow stages.
- patterns
- Common workflow patterns and templates.
- pause_
resume - Workflow pause/resume support with in-memory checkpoint serialisation.
- queue
- Task queue implementation with priority support.
- resource_
pool - Resource pool management for workflow execution.
- retry_
policy - Retry policy engine for workflow task execution.
- scheduler
- Workflow scheduling and triggers.
- sla
- Service Level Agreement (SLA) tracking for workflow orchestration.
- sla_
tracking - SLA tracking for workflow deadlines, breach detection, and escalation rules.
- state_
machine - Finite state machine for workflow execution state tracking.
- step_
condition - Conditional step execution for workflow orchestration.
- step_
conditions - Conditional step execution for workflow orchestration.
- step_
result - Step result types for workflow execution tracking.
- task
- Task definitions and types.
- task_
dependency - Task dependency modelling for
oximedia-workflow. - task_
graph - Task dependency graph for workflow execution planning.
- task_
priority_ queue - Priority-based task scheduling queue.
- task_
template - Task template instantiation for
oximedia-workflow. - templates
- Workflow template library.
- triggers
- Workflow trigger system.
- utils
- Utility functions and helpers.
- validation
- Workflow and task validation.
- versioning
- Workflow version management and diffing.
- webhook
- Outbound webhook notifier for workflow lifecycle events.
- webhook_
trigger - HTTP webhook trigger system for OxiMedia workflows.
- websocket
- WebSocket support for real-time workflow updates.
- workflow
- Workflow definition and management.
- workflow_
audit - Workflow audit trail for compliance and debugging.
- workflow_
bundle - Portable workflow bundle import/export for OxiMedia.
- workflow_
checkpoint - Workflow checkpoint management for
oximedia-workflow. - workflow_
compose - Workflow composition: combine smaller workflows into larger meta-workflows.
- workflow_
dashboard - Workflow dashboard data provider.
- workflow_
diff - Workflow diff: compare two workflow versions to identify changes.
- workflow_
health_ check - Workflow engine health check module.
- workflow_
import_ export - Workflow import/export as portable YAML/JSON bundles.
- workflow_
log - Structured workflow event log for
oximedia-workflow. - workflow_
marketplace - Workflow marketplace for sharing and discovering reusable workflow templates.
- workflow_
metrics - Workflow runtime metrics collection for
oximedia-workflow. - workflow_
migration - Workflow schema migration and version upgrade utilities.
- workflow_
retry - Advanced retry orchestration for workflow tasks.
- workflow_
simulation - Workflow simulation (dry-run) engine.
- workflow_
snapshot - Workflow state snapshotting for rollback, replay, and audit.
- workflow_
template - Pre-built workflow templates for common media processing pipelines.
- workflow_
throttle - Workflow throttling and rate-limiting for
oximedia-workflow. - workflow_
version - Workflow versioning and migration support.