FlowDefinition

Struct FlowDefinition 

Source
pub struct FlowDefinition {
    pub name: String,
    pub version: Option<String>,
    pub description: Option<String>,
    pub triggers: Vec<TriggerDefinition>,
    pub nodes: HashMap<String, NodeDefinition>,
    pub edges: Vec<EdgeDefinition>,
    pub settings: FlowSettings,
}
Expand description

A complete flow definition from YAML.

This is the top-level structure representing a XERV flow document.

§Example

name: order_processing
version: "1.0"
description: Process incoming orders with fraud detection

triggers:
  - id: api_webhook
    type: webhook
    params:
      port: 8080
      path: /orders

nodes:
  validate:
    type: std::json_parse
    config:
      strict: true

  fraud_check:
    type: std::switch
    config:
      condition:
        type: greater_than
        field: risk_score
        value: 0.8

  process_order:
    type: plugins::order_processor

  flag_fraud:
    type: plugins::fraud_handler

edges:
  - from: api_webhook
    to: validate
  - from: validate
    to: fraud_check
  - from: fraud_check.true
    to: flag_fraud
  - from: fraud_check.false
    to: process_order

settings:
  max_concurrent_executions: 100
  execution_timeout_ms: 30000

Fields§

§name: String

Flow name (required).

§version: Option<String>

Flow version (optional, defaults to “1.0”).

§description: Option<String>

Human-readable description.

§triggers: Vec<TriggerDefinition>

Triggers that start this flow.

§nodes: HashMap<String, NodeDefinition>

Nodes in the flow, keyed by node ID.

§edges: Vec<EdgeDefinition>

Edges connecting nodes.

§settings: FlowSettings

Runtime settings.

Implementations§

Source§

impl FlowDefinition

Source

pub fn new(name: impl Into<String>) -> Self

Create a new flow definition.

Source

pub fn from_yaml(yaml: &str) -> Result<Self, Error>

Parse a flow definition from YAML string.

Source

pub fn from_file(path: &Path) -> Result<Self, FlowLoadError>

Parse a flow definition from YAML file.

Source

pub fn to_yaml(&self) -> Result<String, Error>

Serialize to YAML string.

Source

pub fn validate(&self) -> ValidationResult

Validate the flow definition.

Source

pub fn from_yaml_validated(yaml: &str) -> Result<Self, FlowLoadError>

Parse and validate in one step.

Source

pub fn with_version(self, version: impl Into<String>) -> Self

Set version.

Source

pub fn with_description(self, desc: impl Into<String>) -> Self

Set description.

Source

pub fn with_trigger(self, trigger: TriggerDefinition) -> Self

Add a trigger.

Source

pub fn with_node(self, id: impl Into<String>, node: NodeDefinition) -> Self

Add a node.

Source

pub fn with_edge(self, edge: EdgeDefinition) -> Self

Add an edge.

Source

pub fn with_settings(self, settings: FlowSettings) -> Self

Set settings.

Source

pub fn effective_version(&self) -> &str

Get the effective version (defaults to “1.0”).

Source

pub fn node_ids(&self) -> impl Iterator<Item = &str>

Get all node IDs.

Source

pub fn trigger_ids(&self) -> impl Iterator<Item = &str>

Get all trigger IDs.

Source

pub fn get_node(&self, id: &str) -> Option<&NodeDefinition>

Get a node by ID.

Source

pub fn get_trigger(&self, id: &str) -> Option<&TriggerDefinition>

Get a trigger by ID.

Source

pub fn has_trigger(&self, id: &str) -> bool

Check if a trigger with the given ID exists.

Source

pub fn has_node(&self, id: &str) -> bool

Check if a node with the given ID exists.

Source

pub fn enabled_triggers(&self) -> impl Iterator<Item = &TriggerDefinition>

Get enabled triggers.

Source

pub fn enabled_nodes(&self) -> impl Iterator<Item = (&str, &NodeDefinition)>

Get enabled nodes.

Source

pub fn edges_from(&self, node_id: &str) -> impl Iterator<Item = &EdgeDefinition>

Find edges from a given node.

Source

pub fn edges_to(&self, node_id: &str) -> impl Iterator<Item = &EdgeDefinition>

Find edges to a given node.

Trait Implementations§

Source§

impl Clone for FlowDefinition

Source§

fn clone(&self) -> FlowDefinition

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FlowDefinition

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for FlowDefinition

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for FlowDefinition

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,