Skip to main content

SubFlow

Struct SubFlow 

Source
pub struct SubFlow;
Expand description

Creates durable SubFlow Conditions and reads their Execute results.

Construction encodes input and returns a Condition; Dex starts or attaches to the child when the Worker submits that wait. The target Flow must be in the Worker’s Registry. The parent waits durably without holding a handler thread. Inspect FlowResult for child failure; a child’s abnormal terminal status is a result rather than a local value-mapping error. Result indexes are zero-based within the SubFlow Conditions, not all Condition kinds.

use dex_sdk::{Flow, SdkResult, SubFlow, SubFlowOptions, Wait};
use std::time::Duration;
fn wait_for_child<F: Flow>(flow: &F, input: F::StartInput) -> SdkResult<Wait> {
    let child = SubFlow::run_with_options(flow, input,
        SubFlowOptions::new().timeout(Duration::from_secs(60)))?;
    Ok(Wait::until(child))
}

Implementations§

Source§

impl SubFlow

Source

pub fn run<SomeFlow: Flow>( flow: &SomeFlow, input: SomeFlow::StartInput, ) -> SdkResult<Condition>

Creates a SubFlow Condition with default options.

§Errors

Returns a value-mapping error when input cannot be encoded.

Source

pub fn run_with_options<SomeFlow: Flow>( flow: &SomeFlow, input: SomeFlow::StartInput, options: SubFlowOptions, ) -> SdkResult<Condition>

Creates a SubFlow Condition with explicit options.

§Errors

Returns a value-mapping error when input cannot be encoded. Worker mapping later validates the exact registered Rust Flow type, starting Step, Attributes, and option durations.

Source

pub fn condition_result(context: &Context) -> HandlerResult<FlowResult>

Returns the first SubFlow result during Step execute.

§Errors

Returns crate::HandlerError outside Execute or when the selected SubFlow result is unavailable or malformed. See SubFlow for constructing the matching wait.

Source

pub fn condition_result_at( context: &Context, index: usize, ) -> HandlerResult<FlowResult>

Returns one stable-indexed SubFlow result during Step execute.

§Errors

Returns crate::HandlerError outside Execute or when the selected SubFlow result is unavailable or malformed. See SubFlow for constructing the matching wait.

Source

pub fn flow_id(context: &Context) -> HandlerResult<String>

Returns the generated Flow ID for the first SubFlow Condition during Step execute.

§Errors

Returns crate::HandlerError outside Execute or when the selected SubFlow result is unavailable or malformed. See SubFlow for constructing the matching wait.

Source

pub fn flow_id_at(context: &Context, index: usize) -> HandlerResult<String>

Returns the generated Flow ID for one stable-indexed SubFlow Condition during execute.

§Errors

Returns crate::HandlerError outside Execute or when the selected SubFlow result is unavailable or malformed. See SubFlow for constructing the matching wait.

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> 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> 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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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<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