pub struct WorkflowContext<W> { /* private fields */ }Expand description
Used within workflows to issue commands, get info, etc.
The type parameter W represents the workflow type. This enables type-safe
access to workflow state via state_mut() for mutations.
Implementations§
Source§impl<W> WorkflowContext<W>
impl<W> WorkflowContext<W>
Sourcepub fn task_queue(&self) -> &str
pub fn task_queue(&self) -> &str
Return the task queue the workflow is executing in
Sourcepub fn workflow_time(&self) -> Option<SystemTime>
pub fn workflow_time(&self) -> Option<SystemTime>
Return the current time according to the workflow (which is not wall-clock time).
Sourcepub fn history_length(&self) -> u32
pub fn history_length(&self) -> u32
Return the length of history so far at this point in the workflow
Sourcepub fn current_deployment_version(&self) -> Option<WorkerDeploymentVersion>
pub fn current_deployment_version(&self) -> Option<WorkerDeploymentVersion>
Return the deployment version, if any, as it was when this point in the workflow was first reached. If this code is being executed for the first time, return this Worker’s deployment version if it has one.
Sourcepub fn search_attributes(&self) -> impl Deref<Target = SearchAttributes> + '_
pub fn search_attributes(&self) -> impl Deref<Target = SearchAttributes> + '_
Return current values for workflow search attributes
Sourcepub fn random_seed(&self) -> u64
pub fn random_seed(&self) -> u64
Return the workflow’s randomness seed
Sourcepub fn is_replaying(&self) -> bool
pub fn is_replaying(&self) -> bool
Returns true if the current workflow task is happening under replay
Sourcepub fn headers(&self) -> &HashMap<String, Payload>
pub fn headers(&self) -> &HashMap<String, Payload>
Returns the headers for the current handler invocation (signal, update, query, etc.).
Sourcepub fn payload_converter(&self) -> &PayloadConverter
pub fn payload_converter(&self) -> &PayloadConverter
Returns the PayloadConverter currently used by the worker running this workflow.
Sourcepub fn workflow_initial_info(&self) -> &InitializeWorkflow
pub fn workflow_initial_info(&self) -> &InitializeWorkflow
Return various information that the workflow was initialized with.
Sourcepub async fn cancelled(&self) -> String
pub async fn cancelled(&self) -> String
A future that resolves if/when the workflow is cancelled, with the user provided cause
Sourcepub fn timer<T: Into<TimerOptions>>(
&self,
opts: T,
) -> impl CancellableFuture<TimerResult>
pub fn timer<T: Into<TimerOptions>>( &self, opts: T, ) -> impl CancellableFuture<TimerResult>
Request to create a timer
Sourcepub fn start_activity<AD: ActivityDefinition>(
&self,
activity: AD,
input: impl Into<AD::Input>,
opts: ActivityOptions,
) -> impl CancellableFuture<Result<AD::Output, ActivityExecutionError>>where
AD::Output: TemporalDeserializable,
pub fn start_activity<AD: ActivityDefinition>(
&self,
activity: AD,
input: impl Into<AD::Input>,
opts: ActivityOptions,
) -> impl CancellableFuture<Result<AD::Output, ActivityExecutionError>>where
AD::Output: TemporalDeserializable,
Request to run an activity
Sourcepub fn start_local_activity<AD: ActivityDefinition>(
&self,
activity: AD,
input: impl Into<AD::Input>,
opts: LocalActivityOptions,
) -> impl CancellableFuture<Result<AD::Output, ActivityExecutionError>>where
AD::Output: TemporalDeserializable,
pub fn start_local_activity<AD: ActivityDefinition>(
&self,
activity: AD,
input: impl Into<AD::Input>,
opts: LocalActivityOptions,
) -> impl CancellableFuture<Result<AD::Output, ActivityExecutionError>>where
AD::Output: TemporalDeserializable,
Request to run a local activity
Sourcepub fn child_workflow(&self, opts: ChildWorkflowOptions) -> ChildWorkflow
pub fn child_workflow(&self, opts: ChildWorkflowOptions) -> ChildWorkflow
Creates a child workflow stub with the provided options
Sourcepub fn patched(&self, patch_id: &str) -> bool
pub fn patched(&self, patch_id: &str) -> bool
Check (or record) that this workflow history was created with the provided patch
Sourcepub fn deprecate_patch(&self, patch_id: &str) -> bool
pub fn deprecate_patch(&self, patch_id: &str) -> bool
Record that this workflow history was created with the provided patch, and it is being phased out.
Sourcepub fn signal_workflow(
&self,
opts: impl Into<SignalWorkflowOptions>,
) -> impl CancellableFuture<SignalExternalWfResult>
pub fn signal_workflow( &self, opts: impl Into<SignalWorkflowOptions>, ) -> impl CancellableFuture<SignalExternalWfResult>
Send a signal to an external workflow.
Sourcepub fn upsert_search_attributes(
&self,
attr_iter: impl IntoIterator<Item = (String, Payload)>,
)
pub fn upsert_search_attributes( &self, attr_iter: impl IntoIterator<Item = (String, Payload)>, )
Add or create a set of search attributes
Sourcepub fn upsert_memo(
&self,
attr_iter: impl IntoIterator<Item = (String, Payload)>,
)
pub fn upsert_memo( &self, attr_iter: impl IntoIterator<Item = (String, Payload)>, )
Add or create a set of memo fields
Sourcepub fn force_task_fail(&self, with: Error)
pub fn force_task_fail(&self, with: Error)
Force a workflow task failure (EX: in order to retry on non-sticky queue)
Sourcepub fn cancel_external(
&self,
target: NamespacedWorkflowExecution,
reason: String,
) -> impl Future<Output = CancelExternalWfResult>
pub fn cancel_external( &self, target: NamespacedWorkflowExecution, reason: String, ) -> impl Future<Output = CancelExternalWfResult>
Request the cancellation of an external workflow.
Sourcepub fn start_nexus_operation(
&self,
opts: NexusOperationOptions,
) -> impl CancellableFuture<Result<StartedNexusOperation, Failure>>
pub fn start_nexus_operation( &self, opts: NexusOperationOptions, ) -> impl CancellableFuture<Result<StartedNexusOperation, Failure>>
Start a nexus operation
Sourcepub fn state<R>(&self, f: impl FnOnce(&W) -> R) -> R
pub fn state<R>(&self, f: impl FnOnce(&W) -> R) -> R
Access workflow state immutably via closure.
The borrow is scoped to the closure and cannot escape, preventing borrows from being held across await points.
Sourcepub fn state_mut<R>(&self, f: impl FnOnce(&mut W) -> R) -> R
pub fn state_mut<R>(&self, f: impl FnOnce(&mut W) -> R) -> R
Access workflow state mutably via closure.
The borrow is scoped to the closure and cannot escape, preventing borrows from being held across await points.
After the mutation, all wakers registered by pending wait_condition
futures are woken so that waker-based combinators (e.g.
FuturesOrdered) re-poll them on the next pass.
Sourcepub fn wait_condition<'a>(
&'a self,
condition: impl FnMut(&W) -> bool + 'a,
) -> impl Future<Output = ()> + 'a
pub fn wait_condition<'a>( &'a self, condition: impl FnMut(&W) -> bool + 'a, ) -> impl Future<Output = ()> + 'a
Wait for some condition on workflow state to become true, yielding the workflow if not.
The condition closure receives an immutable reference to the workflow state, which is borrowed only for the duration of each poll (not across await points).
Trait Implementations§
Auto Trait Implementations§
impl<W> Freeze for WorkflowContext<W>
impl<W> !RefUnwindSafe for WorkflowContext<W>
impl<W> !Send for WorkflowContext<W>
impl<W> !Sync for WorkflowContext<W>
impl<W> Unpin for WorkflowContext<W>where
W: Unpin,
impl<W> UnsafeUnpin for WorkflowContext<W>
impl<W> !UnwindSafe for WorkflowContext<W>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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>
T in a tonic::Request