pub trait WorkflowImplementation: Sized + 'static {
type Run: WorkflowDefinition;
const HAS_INIT: bool;
const INIT_TAKES_INPUT: bool;
// Required methods
fn name() -> &'static str;
fn definition() -> WorkflowDefinitionDescriptor;
fn init(
ctx: WorkflowContextView,
input: Option<<Self::Run as WorkflowDefinition>::Input>,
) -> Self;
fn run(
ctx: WorkflowContext<Self>,
input: Option<<Self::Run as WorkflowDefinition>::Input>,
) -> LocalBoxFuture<'static, Result<Payload, WorkflowTermination>>;
fn dispatch_signal(
ctx: WorkflowContext<Self>,
name: &str,
input: Box<dyn Any>,
) -> LocalBoxFuture<'static, Result<(), WorkflowError>>;
fn dispatch_query(
&self,
ctx: WorkflowContextView,
name: &str,
input: Box<dyn Any>,
converter: &PayloadConverter,
) -> Result<Payload, WorkflowError>;
fn dispatch_update(
ctx: WorkflowContext<Self>,
name: &str,
input: Box<dyn Any>,
converter: &PayloadConverter,
) -> LocalBoxFuture<'static, Result<Payload, WorkflowError>>;
fn validate_update(
&self,
ctx: WorkflowContextView,
name: &str,
input: Box<dyn Any>,
) -> Result<(), WorkflowError>;
// Provided methods
fn decode_signal_input(
_name: &str,
_payloads: Payloads,
_converter: &PayloadConverter,
) -> Result<Option<Box<dyn Any>>, WorkflowError> { ... }
fn decode_query_input(
_name: &str,
_payloads: &Payloads,
_converter: &PayloadConverter,
) -> Result<Option<Box<dyn Any>>, WorkflowError> { ... }
fn decode_update_input(
_name: &str,
_payloads: Payloads,
_converter: &PayloadConverter,
) -> Result<Option<Box<dyn Any>>, WorkflowError> { ... }
}Expand description
Trait implemented by workflow structs to enable execution by the worker.
This trait is typically generated by the #[workflow_methods] macro and should not
be implemented manually in most cases.
Required Associated Constants§
Sourceconst HAS_INIT: bool
const HAS_INIT: bool
Whether this workflow has a user-defined #[init] method.
Set to true by the macro when #[init] is present, false otherwise.
Sourceconst INIT_TAKES_INPUT: bool
const INIT_TAKES_INPUT: bool
Whether the init method accepts the workflow input. If true, input goes to init. If false, input goes to run.
Required Associated Types§
Sourcetype Run: WorkflowDefinition
type Run: WorkflowDefinition
The marker struct for the run method that implements WorkflowDefinition
Required Methods§
Sourcefn definition() -> WorkflowDefinitionDescriptor
fn definition() -> WorkflowDefinitionDescriptor
Returns the exported workflow definition metadata for this workflow.
Sourcefn init(
ctx: WorkflowContextView,
input: Option<<Self::Run as WorkflowDefinition>::Input>,
) -> Self
fn init( ctx: WorkflowContextView, input: Option<<Self::Run as WorkflowDefinition>::Input>, ) -> Self
Initialize the workflow instance.
Sourcefn run(
ctx: WorkflowContext<Self>,
input: Option<<Self::Run as WorkflowDefinition>::Input>,
) -> LocalBoxFuture<'static, Result<Payload, WorkflowTermination>>
fn run( ctx: WorkflowContext<Self>, input: Option<<Self::Run as WorkflowDefinition>::Input>, ) -> LocalBoxFuture<'static, Result<Payload, WorkflowTermination>>
Execute the workflow’s main run function.
Sourcefn dispatch_signal(
ctx: WorkflowContext<Self>,
name: &str,
input: Box<dyn Any>,
) -> LocalBoxFuture<'static, Result<(), WorkflowError>>
fn dispatch_signal( ctx: WorkflowContext<Self>, name: &str, input: Box<dyn Any>, ) -> LocalBoxFuture<'static, Result<(), WorkflowError>>
Dispatch a signal using an already decoded input value.
Sourcefn dispatch_query(
&self,
ctx: WorkflowContextView,
name: &str,
input: Box<dyn Any>,
converter: &PayloadConverter,
) -> Result<Payload, WorkflowError>
fn dispatch_query( &self, ctx: WorkflowContextView, name: &str, input: Box<dyn Any>, converter: &PayloadConverter, ) -> Result<Payload, WorkflowError>
Dispatch a query using an already decoded input value.
Sourcefn dispatch_update(
ctx: WorkflowContext<Self>,
name: &str,
input: Box<dyn Any>,
converter: &PayloadConverter,
) -> LocalBoxFuture<'static, Result<Payload, WorkflowError>>
fn dispatch_update( ctx: WorkflowContext<Self>, name: &str, input: Box<dyn Any>, converter: &PayloadConverter, ) -> LocalBoxFuture<'static, Result<Payload, WorkflowError>>
Dispatch an update using an already decoded input value.
Sourcefn validate_update(
&self,
ctx: WorkflowContextView,
name: &str,
input: Box<dyn Any>,
) -> Result<(), WorkflowError>
fn validate_update( &self, ctx: WorkflowContextView, name: &str, input: Box<dyn Any>, ) -> Result<(), WorkflowError>
Validate an update using an already decoded input value.
Provided Methods§
Sourcefn decode_signal_input(
_name: &str,
_payloads: Payloads,
_converter: &PayloadConverter,
) -> Result<Option<Box<dyn Any>>, WorkflowError>
fn decode_signal_input( _name: &str, _payloads: Payloads, _converter: &PayloadConverter, ) -> Result<Option<Box<dyn Any>>, WorkflowError>
Decode a signal’s payloads into that signal handler’s concrete input type.
Sourcefn decode_query_input(
_name: &str,
_payloads: &Payloads,
_converter: &PayloadConverter,
) -> Result<Option<Box<dyn Any>>, WorkflowError>
fn decode_query_input( _name: &str, _payloads: &Payloads, _converter: &PayloadConverter, ) -> Result<Option<Box<dyn Any>>, WorkflowError>
Decode a query’s payloads into that query handler’s concrete input type.
Sourcefn decode_update_input(
_name: &str,
_payloads: Payloads,
_converter: &PayloadConverter,
) -> Result<Option<Box<dyn Any>>, WorkflowError>
fn decode_update_input( _name: &str, _payloads: Payloads, _converter: &PayloadConverter, ) -> Result<Option<Box<dyn Any>>, WorkflowError>
Decode an update’s payloads into that update handler’s concrete input type.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".