pub struct WorkflowExecutor { /* private fields */ }Expand description
Executes workflows.
Implementations§
Source§impl WorkflowExecutor
impl WorkflowExecutor
Sourcepub fn new(
registry: Arc<WorkflowRegistry>,
pool: PgPool,
http_client: CircuitBreakerClient,
) -> Self
pub fn new( registry: Arc<WorkflowRegistry>, pool: PgPool, http_client: CircuitBreakerClient, ) -> Self
Create a new workflow executor.
Sourcepub async fn start<I: Serialize>(
&self,
workflow_name: &str,
input: I,
owner_subject: Option<String>,
) -> Result<Uuid>
pub async fn start<I: Serialize>( &self, workflow_name: &str, input: I, owner_subject: Option<String>, ) -> Result<Uuid>
Start a new workflow. Returns immediately with the run_id; workflow executes in the background.
Sourcepub async fn resume(&self, run_id: Uuid) -> Result<WorkflowResult>
pub async fn resume(&self, run_id: Uuid) -> Result<WorkflowResult>
Resume a workflow from where it left off.
Sourcepub async fn resume_from_sleep(&self, run_id: Uuid) -> Result<WorkflowResult>
pub async fn resume_from_sleep(&self, run_id: Uuid) -> Result<WorkflowResult>
Resume a workflow after a sleep timer expired.
Sourcepub async fn status(&self, run_id: Uuid) -> Result<WorkflowRecord>
pub async fn status(&self, run_id: Uuid) -> Result<WorkflowRecord>
Get workflow status.
Sourcepub async fn cancel(&self, run_id: Uuid) -> Result<()>
pub async fn cancel(&self, run_id: Uuid) -> Result<()>
Cancel a workflow and run compensation.
Compensation follows the saga pattern: steps are undone in reverse order of their completion. This ensures that dependencies are respected. For example, if step A created a resource that step B modified, we must undo B’s modification before deleting A’s resource.
Compensation handlers receive the original step result, allowing them to know exactly what to undo (e.g., refund the specific payment ID).
Sourcepub async fn save_step(&self, step: &WorkflowStepRecord) -> Result<()>
pub async fn save_step(&self, step: &WorkflowStepRecord) -> Result<()>
Save step record.
Trait Implementations§
Source§impl WorkflowDispatch for WorkflowExecutor
impl WorkflowDispatch for WorkflowExecutor
Auto Trait Implementations§
impl Freeze for WorkflowExecutor
impl !RefUnwindSafe for WorkflowExecutor
impl Send for WorkflowExecutor
impl Sync for WorkflowExecutor
impl Unpin for WorkflowExecutor
impl !UnwindSafe for WorkflowExecutor
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
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request