pub struct Workflow {
pub metadata: WorkflowMetadata,
pub nodes: Vec<Node>,
pub edges: Vec<Edge>,
}Expand description
Complete workflow definition
Fields§
§metadata: WorkflowMetadataWorkflow metadata
nodes: Vec<Node>Nodes in the workflow
edges: Vec<Edge>Edges connecting the nodes
Implementations§
Source§impl Workflow
impl Workflow
pub fn new(name: String) -> Self
Sourcepub fn get_node_mut(&mut self, id: &NodeId) -> Option<&mut Node>
pub fn get_node_mut(&mut self, id: &NodeId) -> Option<&mut Node>
Find a mutable node by its ID
Sourcepub fn find_nodes_by_kind(&self, kind: &NodeKind) -> Vec<&Node>
pub fn find_nodes_by_kind(&self, kind: &NodeKind) -> Vec<&Node>
Find all nodes of a specific kind
Sourcepub fn get_start_node(&self) -> Option<&Node>
pub fn get_start_node(&self) -> Option<&Node>
Get the start node of the workflow
Sourcepub fn get_end_nodes(&self) -> Vec<&Node>
pub fn get_end_nodes(&self) -> Vec<&Node>
Get all end nodes of the workflow
Sourcepub fn remove_node(&mut self, id: &NodeId) -> bool
pub fn remove_node(&mut self, id: &NodeId) -> bool
Remove a node and all its associated edges
Sourcepub fn remove_edge(&mut self, from: &NodeId, to: &NodeId) -> bool
pub fn remove_edge(&mut self, from: &NodeId, to: &NodeId) -> bool
Remove an edge between two nodes
Sourcepub fn node_count(&self) -> usize
pub fn node_count(&self) -> usize
Get the number of nodes in the workflow
Sourcepub fn edge_count(&self) -> usize
pub fn edge_count(&self) -> usize
Get the number of edges in the workflow
Sourcepub fn get_outgoing_edges(&self, node_id: &NodeId) -> Vec<&Edge>
pub fn get_outgoing_edges(&self, node_id: &NodeId) -> Vec<&Edge>
Get all outgoing edges from a node
Sourcepub fn get_incoming_edges(&self, node_id: &NodeId) -> Vec<&Edge>
pub fn get_incoming_edges(&self, node_id: &NodeId) -> Vec<&Edge>
Get all incoming edges to a node
Sourcepub fn validate(&self) -> Result<(), String>
pub fn validate(&self) -> Result<(), String>
Validate the workflow structure with comprehensive checks
Sourcepub fn from_json_file(path: &str) -> Result<Self, String>
pub fn from_json_file(path: &str) -> Result<Self, String>
Import workflow from JSON file
Sourcepub fn from_yaml_file(path: &str) -> Result<Self, String>
pub fn from_yaml_file(path: &str) -> Result<Self, String>
Import workflow from YAML file
Sourcepub fn create_new_version(
&self,
change_description: String,
version_type: VersionBump,
) -> Self
pub fn create_new_version( &self, change_description: String, version_type: VersionBump, ) -> Self
Create a new version of this workflow
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Workflow
impl<'de> Deserialize<'de> for Workflow
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 Workflow
impl RefUnwindSafe for Workflow
impl Send for Workflow
impl Sync for Workflow
impl Unpin for Workflow
impl UnwindSafe for Workflow
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more