oxigdal_workflow/lib.rs
1//! # oxigdal-workflow
2//!
3//! DAG-based workflow engine for complex geospatial processing pipelines.
4//!
5//! This crate provides a comprehensive workflow orchestration system with:
6//! - DAG-based execution with automatic parallelization
7//! - Flexible scheduling (cron, event-driven, interval-based)
8//! - State persistence and recovery from failures
9//! - Conditional execution and branching
10//! - Workflow templates and versioning
11//! - Comprehensive monitoring and debugging tools
12//! - External integrations (Airflow, Prefect, Temporal)
13//!
14//! ## Example
15//!
16//! ```rust,no_run
17//! use oxigdal_workflow::{
18//! WorkflowRuntime, TaskExecutor, ExecutorConfig, ExecutionContext, TaskOutput, TaskNode,
19//! Result,
20//! };
21//! use async_trait::async_trait;
22//!
23//! #[derive(Clone)]
24//! struct MyExecutor;
25//!
26//! #[async_trait]
27//! impl TaskExecutor for MyExecutor {
28//! async fn execute(&self, _task: &TaskNode, _ctx: &ExecutionContext) -> Result<TaskOutput> {
29//! Ok(TaskOutput { data: None, logs: vec![] })
30//! }
31//! }
32//!
33//! #[tokio::main]
34//! async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
35//! // Create a workflow runtime with default config
36//! let runtime = WorkflowRuntime::new(ExecutorConfig::default(), MyExecutor);
37//!
38//! Ok(())
39//! }
40//! ```
41//!
42//! ## Features
43//!
44//! - `default`: Enables all features
45//! - `full`: Enables all features
46//! - `integrations`: External workflow system integrations
47//! - `server`: HTTP server for workflow management
48
49#![warn(missing_docs)]
50#![deny(clippy::unwrap_used, clippy::panic)]
51
52pub mod conditional;
53pub mod dag;
54pub mod engine;
55pub mod error;
56pub mod integrations;
57pub mod monitoring;
58pub mod scheduler;
59pub mod templates;
60pub mod versioning;
61
62// Re-export commonly used types
63pub use conditional::{ConditionalBranch, ConditionalEvaluator, ExecutionDecision, Expression};
64pub use dag::{TaskNode, WorkflowDag};
65pub use engine::{
66 ExecutionContext, ExecutorConfig, TaskExecutor, TaskOutput, WorkflowDefinition,
67 WorkflowExecutor, WorkflowRuntime,
68};
69pub use error::{DagError, Result, WorkflowError};
70pub use monitoring::{ExecutionHistory, WorkflowMetrics};
71pub use scheduler::{CronSchedule, EventTrigger, Scheduler, SchedulerConfig};
72pub use templates::{WorkflowTemplate, WorkflowTemplateLibrary};
73pub use versioning::{WorkflowVersion, WorkflowVersionManager};