pub struct WorkflowExecutor { /* private fields */ }Expand description
Workflow executor.
Implementations§
Source§impl WorkflowExecutor
impl WorkflowExecutor
Sourcepub fn new(task_executor: Arc<dyn TaskExecutor>) -> Self
pub fn new(task_executor: Arc<dyn TaskExecutor>) -> Self
Create a new workflow executor.
Sourcepub fn with_max_concurrent(self, max_concurrent: usize) -> Self
pub fn with_max_concurrent(self, max_concurrent: usize) -> Self
Set maximum concurrent tasks.
Sourcepub fn with_timeout(self, timeout: Duration) -> Self
pub fn with_timeout(self, timeout: Duration) -> Self
Set execution timeout.
Sourcepub fn pause(&self)
pub fn pause(&self)
Signal the executor to pause after the current in-flight tasks finish.
The executor stops launching new tasks as soon as it receives the signal, but any already-running tasks are allowed to complete.
Sourcepub fn send_control(&self, control: WorkflowControl) -> Result<()>
pub fn send_control(&self, control: WorkflowControl) -> Result<()>
Send a WorkflowControl signal to the executor.
WorkflowControl::Pause— equivalent toSelf::pause.WorkflowControl::Resume— equivalent toSelf::resume.WorkflowControl::Cancel— signals the executor to abort after the current task wave finishes and return a cancellation error.
§Errors
Returns WorkflowError if the underlying channel is closed (i.e. the
executor has already been dropped).
Sourcepub fn is_paused(&self) -> bool
pub fn is_paused(&self) -> bool
Returns true when the executor is currently in a paused state.
This reflects the latest value sent via Self::pause /
Self::send_control. It does not guarantee that execution has
actually stopped; in-flight tasks may still be running.
Sourcepub fn resume_from_checkpoint(&mut self, checkpoint_json: &str) -> Result<()>
pub fn resume_from_checkpoint(&mut self, checkpoint_json: &str) -> Result<()>
Load a prior ExecutionCheckpoint so that already-completed tasks are
skipped when Self::execute is called next.
§Errors
Returns an error if the checkpoint JSON is invalid.
Sourcepub async fn execute(&self, workflow: &mut Workflow) -> Result<ExecutionResult>
pub async fn execute(&self, workflow: &mut Workflow) -> Result<ExecutionResult>
Execute a workflow.
Tasks whose dependencies are all satisfied at the same time are launched
concurrently (fan-out). The executor waits for all of them before
considering their successors (fan-in), bounded by max_concurrent.
If a checkpoint was loaded via Self::resume_from_checkpoint the
corresponding tasks are pre-marked as completed and skipped.
The executor checks the pause signal between task waves; when paused it
drains the current in-flight tasks, serialises a checkpoint, and returns
WorkflowState::Paused in the ExecutionResult.