Skip to main content

Crate oximedia_workflow

Crate oximedia_workflow 

Source
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, WorkflowEngine with node-level status tracking, and WorkflowTemplate.
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.