pub enum TriggerRule {
Always,
All {
conditions: Vec<TriggerCondition>,
},
Any {
conditions: Vec<TriggerCondition>,
},
None {
conditions: Vec<TriggerCondition>,
},
}Expand description
Trigger rule definitions for conditional task execution.
Trigger rules determine when a task should be executed based on various conditions. They can be combined to create complex execution logic.
§Examples
ⓘ
use cloacina::scheduler::{TriggerRule, TriggerCondition, ValueOperator};
use serde_json::json;
// Always execute
let always = TriggerRule::Always;
// Execute if all conditions are met
let all_conditions = TriggerRule::All {
conditions: vec![
TriggerCondition::TaskSuccess { task_name: "task1".to_string() },
TriggerCondition::ContextValue {
key: "status".to_string(),
operator: ValueOperator::Equals,
value: json!("ready")
}
]
};
// Execute if any condition is met
let any_condition = TriggerRule::Any {
conditions: vec![
TriggerCondition::TaskFailed { task_name: "task1".to_string() },
TriggerCondition::TaskSkipped { task_name: "task2".to_string() }
]
};
// Execute if no conditions are met
let none_condition = TriggerRule::None {
conditions: vec![
TriggerCondition::ContextValue {
key: "skip".to_string(),
operator: ValueOperator::Exists,
value: json!(true)
}
]
};§Performance
Trigger rule evaluation:
- Is performed in memory
- Uses efficient context lookups
- Supports early termination for All/Any rules
- Caches context values where possible
§Thread Safety
Trigger rules are:
- Immutable after creation
- Safe to share across threads
- Free of side effects
Variants§
Always
Always execute the task (default behavior).
All
Execute only if all conditions are met.
Fields
§
conditions: Vec<TriggerCondition>Any
Execute if any condition is met.
Fields
§
conditions: Vec<TriggerCondition>None
Execute only if none of the conditions are met.
Fields
§
conditions: Vec<TriggerCondition>Trait Implementations§
Source§impl Clone for TriggerRule
impl Clone for TriggerRule
Source§fn clone(&self) -> TriggerRule
fn clone(&self) -> TriggerRule
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for TriggerRule
impl Debug for TriggerRule
Source§impl<'de> Deserialize<'de> for TriggerRule
impl<'de> Deserialize<'de> for TriggerRule
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for TriggerRule
impl RefUnwindSafe for TriggerRule
impl Send for TriggerRule
impl Sync for TriggerRule
impl Unpin for TriggerRule
impl UnwindSafe for TriggerRule
Blanket Implementations§
Source§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
Source§fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
DISTINCT modifier for aggregate functions Read moreSource§fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
ALL modifier for aggregate functions Read moreSource§fn aggregate_filter<P>(self, f: P) -> Self::Output
fn aggregate_filter<P>(self, f: P) -> Self::Output
Add an aggregate function filter Read more
Source§fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
Add an aggregate function order Read more
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoSql for T
impl<T> IntoSql for T
Source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
Convert
self to an expression for Diesel’s query builder. Read moreSource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
Convert
&self to an expression for Diesel’s query builder. Read moreSource§impl<T> WindowExpressionMethods for T
impl<T> WindowExpressionMethods for T
Source§fn over(self) -> Self::Outputwhere
Self: OverDsl,
fn over(self) -> Self::Outputwhere
Self: OverDsl,
Turn a function call into a window function call Read more
Source§fn window_filter<P>(self, f: P) -> Self::Output
fn window_filter<P>(self, f: P) -> Self::Output
Add a filter to the current window function Read more
Source§fn partition_by<E>(self, expr: E) -> Self::Outputwhere
Self: PartitionByDsl<E>,
fn partition_by<E>(self, expr: E) -> Self::Outputwhere
Self: PartitionByDsl<E>,
Add a partition clause to the current window function Read more
Source§fn window_order<E>(self, expr: E) -> Self::Outputwhere
Self: OrderWindowDsl<E>,
fn window_order<E>(self, expr: E) -> Self::Outputwhere
Self: OrderWindowDsl<E>,
Add a order clause to the current window function Read more