diff --git a/wfe-core/src/models/workflow_definition.rs b/wfe-core/src/models/workflow_definition.rs index 1ff89ca..0c98db2 100644 --- a/wfe-core/src/models/workflow_definition.rs +++ b/wfe-core/src/models/workflow_definition.rs @@ -2,6 +2,7 @@ use std::time::Duration; use serde::{Deserialize, Serialize}; +use super::condition::StepCondition; use super::error_behavior::ErrorBehavior; /// A compiled workflow definition ready for execution. @@ -46,6 +47,9 @@ pub struct WorkflowStep { /// Serializable configuration for primitive steps (e.g. event_name, duration). #[serde(default, skip_serializing_if = "Option::is_none")] pub step_config: Option, + /// Optional condition that must evaluate to true for this step to execute. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub when: Option, } impl WorkflowStep { @@ -62,6 +66,7 @@ impl WorkflowStep { do_compensate: false, saga: false, step_config: None, + when: None, } } } diff --git a/wfe-core/src/models/workflow_instance.rs b/wfe-core/src/models/workflow_instance.rs index 9fac9f4..0bc1882 100644 --- a/wfe-core/src/models/workflow_instance.rs +++ b/wfe-core/src/models/workflow_instance.rs @@ -45,6 +45,7 @@ impl WorkflowInstance { matches!( p.status, PointerStatus::Complete + | PointerStatus::Skipped | PointerStatus::Compensated | PointerStatus::Cancelled | PointerStatus::Failed