Class Workflow
- Namespace
- Temporalio.Workflows
- Assembly
- Temporalio.dll
Static class with all calls that can be made from a workflow. Properties and methods on this class cannot be used outside of a workflow (with the obvious exception of InWorkflow).
public static class Workflow
- Inheritance
-
Workflow
- Inherited Members
Properties
AllHandlersFinished
Gets a value indicating whether all update and signal handlers have finished executing.
public static bool AllHandlersFinished { get; }
Property Value
Remarks
Consider waiting on this condition before workflow return or continue-as-new, to prevent
interruption of in-progress handlers by workflow return:
await Workflow.WaitConditionAsync(() => Workflow.AllHandlersFinished).
CancellationToken
Gets the cancellation token for the workflow.
public static CancellationToken CancellationToken { get; }
Property Value
Remarks
This token is cancelled when the workflow is cancelled. When cancellation token is not provided to any method in this class, this cancellation token is the default.
ContinueAsNewSuggested
Gets a value indicating whether continue as new is suggested.
public static bool ContinueAsNewSuggested { get; }
Property Value
Remarks
This value is the current continue-as-new suggestion up until the current task. Note, this value may not be up to date when accessed in a query. When continue as new is suggested is based on server-side configuration.
CurrentBuildId
Gets the current build id.
public static string CurrentBuildId { get; }
Property Value
Remarks
This is the Build ID of the worker which executed the current Workflow Task. It may be empty if the task was completed by a worker without a Build ID. If this worker is the one executing this task for the first time and has a Build ID set, then its ID will be used. This value may change over the lifetime of the workflow run, but is deterministic and safe to use for branching.
CurrentDeploymentVersion
Gets the current deployment version of the worker which executed the current Workflow Task.
public static WorkerDeploymentVersion? CurrentDeploymentVersion { get; }
Property Value
Remarks
May be unset if the task was completed by a worker without a deployment version or build id. If this worker is the one executing this task for the first time and has a deployment version set, then its ID will be used. This value may change over the lifetime of the workflow run, but is deterministic and safe to use for branching.
CurrentDetails
Gets or sets the current details for this workflow that may appear in UI/CLI. Unlike static details set at start, this value can be updated throughout the life of the workflow. This can be in Temporal markdown format and can span multiple lines.
public static string CurrentDetails { get; set; }
Property Value
Remarks
WARNING: This setting is experimental.
CurrentHistoryLength
Gets the current number of events in history.
public static int CurrentHistoryLength { get; }
Property Value
Remarks
This value is the current history event count up until the current task. Note, this value may not be up to date when accessed in a query.
CurrentHistorySize
Gets the current history size in bytes.
public static int CurrentHistorySize { get; }
Property Value
Remarks
This value is the current history size up until the current task. Note, this value may not be up to date when accessed in a query.
CurrentUpdateInfo
Gets the current workflow update handler for the caller if any.
public static WorkflowUpdateInfo? CurrentUpdateInfo { get; }
Property Value
Remarks
This set via a AsyncLocal<T> and therefore only visible inside the handler and tasks it creates.
DynamicQuery
Gets or sets the current dynamic query handler. This can be null for no dynamic query handling.
public static WorkflowQueryDefinition? DynamicQuery { get; set; }
Property Value
DynamicSignal
Gets or sets the current dynamic signal handler. This can be null for no dynamic signal handling. If this is set to a value where none was there before, all buffered signals will be immediately delivered to it.
public static WorkflowSignalDefinition? DynamicSignal { get; set; }
Property Value
DynamicUpdate
Gets or sets the current dynamic update handler. This can be null for no dynamic update handling.
public static WorkflowUpdateDefinition? DynamicUpdate { get; set; }
Property Value
InWorkflow
Gets a value indicating whether this code is currently running in a workflow.
public static bool InWorkflow { get; }
Property Value
Info
Gets information about the workflow.
public static WorkflowInfo Info { get; }
Property Value
Instance
Gets the instance of the current workflow class.
public static object Instance { get; }
Property Value
Logger
Gets the logger for the workflow. This is scoped with logger information and does not log during replay.
public static ILogger Logger { get; }
Property Value
Memo
Gets the workflow memo.
public static IReadOnlyDictionary<string, IRawValue> Memo { get; }
Property Value
Remarks
This is read-only from the workflow author perspective. To update use UpsertMemo(params MemoUpdate[]). This always returns the same instance. Any workflow memo updates are immediately reflected on the returned instance, so it is not immutable.
MetricMeter
Gets the metric meter with per-workflow tags already set. Metrics can be set on this meter and they will be properly ignored during replay. This meter is different for each workflow execution.
public static MetricMeter MetricMeter { get; }
Property Value
PayloadConverter
Gets the payload converter for the workflow.
public static IPayloadConverter PayloadConverter { get; }
Property Value
Remarks
If the original converter supported serialization contexts, this is the converter with the workflow serialization context applied.
Queries
Gets queries for this workflow.
public static IDictionary<string, WorkflowQueryDefinition> Queries { get; }
Property Value
Remarks
This dictionary can be mutated during workflow run. However, users are strongly
encouraged to use fixed methods with the [WorkflowQuery] attribute.
Random
Gets a random instance that is deterministic for workflow use.
public static DeterministicRandom Random { get; }
Property Value
Remarks
This instance should be accessed each time needed, not stored. This instance may be recreated with a different seed in special cases (e.g. workflow reset). Do not use any other randomization inside workflow code.
Signals
Gets signals for this workflow.
public static IDictionary<string, WorkflowSignalDefinition> Signals { get; }
Property Value
Remarks
This dictionary can be mutated during workflow run. However, users are strongly
encouraged to use fixed methods with the [WorkflowSignal] attribute. If a new
signal handler is added for a signal name where one wasn't present before, all buffered
signals are sent to the handler immediately.
TypedSearchAttributes
Gets the workflow search attributes.
public static SearchAttributeCollection TypedSearchAttributes { get; }
Property Value
Remarks
This is read-only from the workflow author perspective. To update use UpsertTypedSearchAttributes(params SearchAttributeUpdate[]). This always returns the same instance. Any workflow search attribute updates are immediately reflected on the returned instance, so it is not immutable.
Updates
Gets updates for this workflow.
public static IDictionary<string, WorkflowUpdateDefinition> Updates { get; }
Property Value
Remarks
This dictionary can be mutated during workflow run. However, users are strongly
encouraged to use fixed methods with the [WorkflowUpdate] attribute.
UtcNow
Gets the current timestamp for this workflow.
public static DateTime UtcNow { get; }
Property Value
Remarks
This value is deterministic and safe for replays. Do not use normal UtcNow or anything else dealing with system time in workflows.
Methods
CreateContinueAsNewException(string, IReadOnlyCollection<object?>, ContinueAsNewOptions?)
Create an exception that, when thrown out of the workflow, will continue-as-new with the given workflow.
public static ContinueAsNewException CreateContinueAsNewException(string workflow, IReadOnlyCollection<object?> args, ContinueAsNewOptions? options = null)
Parameters
workflowstringWorkflow name.
argsIReadOnlyCollection<object>Workflow arguments.
optionsContinueAsNewOptionsContinue as new options.
Returns
- ContinueAsNewException
Exception for continuing as new.
CreateContinueAsNewException<TWorkflow>(Expression<Func<TWorkflow, Task>>, ContinueAsNewOptions?)
Create an exception via lambda invoking the run method that, when thrown out of the workflow, will continue-as-new with the given workflow.
public static ContinueAsNewException CreateContinueAsNewException<TWorkflow>(Expression<Func<TWorkflow, Task>> workflowRunCall, ContinueAsNewOptions? options = null)
Parameters
workflowRunCallExpression<Func<TWorkflow, Task>>Invocation of workflow run method with a result.
optionsContinueAsNewOptionsContinue as new options.
Returns
- ContinueAsNewException
Exception for continuing as new.
Type Parameters
TWorkflowWorkflow class type.
CreateContinueAsNewException<TWorkflow, TResult>(Expression<Func<TWorkflow, Task<TResult>>>, ContinueAsNewOptions?)
Create an exception via lambda invoking the run method that, when thrown out of the workflow, will continue-as-new with the given workflow.
public static ContinueAsNewException CreateContinueAsNewException<TWorkflow, TResult>(Expression<Func<TWorkflow, Task<TResult>>> workflowRunCall, ContinueAsNewOptions? options = null)
Parameters
workflowRunCallExpression<Func<TWorkflow, Task<TResult>>>Invocation of workflow run method with a result.
optionsContinueAsNewOptionsContinue as new options.
Returns
- ContinueAsNewException
Exception for continuing as new.
Type Parameters
TWorkflowWorkflow class type.
TResultWorkflow result type.
CreateNexusClient(string, string)
Create an untyped Nexus client with a string service name and endpoint. This is a shortcut for CreateNexusClient(string, NexusClientOptions).
public static NexusClient CreateNexusClient(string service, string endpoint)
Parameters
Returns
- NexusClient
Nexus client.
Remarks
WARNING: Nexus support is experimental.
CreateNexusClient(string, NexusClientOptions)
Create an untyped Nexus client with a string service name and client options.
public static NexusClient CreateNexusClient(string service, NexusClientOptions options)
Parameters
servicestringService name.
optionsNexusClientOptionsClient options.
Returns
- NexusClient
Nexus client.
Remarks
WARNING: Nexus support is experimental.
CreateNexusClient<TService>(string)
Create a typed Nexus client from a service interface and endpoint. This is a shortcut for CreateNexusClient<TService>(NexusClientOptions).
public static NexusClient<TService> CreateNexusClient<TService>(string endpoint)
Parameters
endpointstringEndpoint.
Returns
- NexusClient<TService>
Nexus client.
Type Parameters
TServiceService interface type with the NexusRpc.NexusServiceAttribute attribute.
Remarks
WARNING: Nexus support is experimental.
CreateNexusClient<TService>(NexusClientOptions)
Create a typed Nexus client from a service interface and endpoint.
public static NexusClient<TService> CreateNexusClient<TService>(NexusClientOptions options)
Parameters
optionsNexusClientOptionsClient options.
Returns
- NexusClient<TService>
Nexus client.
Type Parameters
TServiceService interface type with the NexusRpc.NexusServiceAttribute attribute.
Remarks
WARNING: Nexus support is experimental.
DelayAsync(int, CancellationToken?)
Sleep in a workflow for the given time. See documentation of DelayAsync(TimeSpan, CancellationToken?) for details.
public static Task DelayAsync(int millisecondsDelay, CancellationToken? cancellationToken = null)
Parameters
millisecondsDelayintDelay amount. See documentation of DelayAsync(TimeSpan, CancellationToken?) for details.
cancellationTokenCancellationToken?Cancellation token. See documentation of DelayAsync(TimeSpan, CancellationToken?) for details.
Returns
- Task
Task for completion. See documentation of DelayAsync(TimeSpan, CancellationToken?) for details.
- See Also
DelayAsync(TimeSpan, CancellationToken?)
Sleep in a workflow for the given time.
public static Task DelayAsync(TimeSpan delay, CancellationToken? cancellationToken = null)
Parameters
delayTimeSpanAmount of time to sleep.
cancellationTokenCancellationToken?Cancellation token. If unset, this defaults to CancellationToken.
Returns
- Task
Task that is complete when sleep completes.
Remarks
The delay value can be Infinite or
InfiniteTimeSpan but otherwise cannot be negative. A server-side
timer is not created for infinite delays, so it is non-deterministic to change a timer
to/from infinite from/to an actual value.
If the delay is 0, it is assumed to be 1 millisecond and still results in a
server-side timer. Since Temporal timers are server-side, timer resolution may not end
up as precise as system timers.
DelayWithOptionsAsync(DelayOptions)
Sleep in a workflow for the given options.
public static Task DelayWithOptionsAsync(DelayOptions options)
Parameters
optionsDelayOptionsOptions.
Returns
- Task
Task for completion. See documentation of DelayAsync(TimeSpan, CancellationToken?) for details.
- See Also
DeprecatePatch(string)
Mark a patch as deprecated.
public static void DeprecatePatch(string patchId)
Parameters
patchIdstringPatch ID.
Remarks
This marks a workflow that had Patched(string) in a previous version of the code as no longer applicable because all workflows that use the old code path are done and will never be queried again. Therefore the old code path is removed as well.
ExecuteActivityAsync(Expression<Action>, ActivityOptions)
Execute a static non-async activity without result via lambda.
public static Task ExecuteActivityAsync(Expression<Action> activityCall, ActivityOptions options)
Parameters
activityCallExpression<Action>Invocation of activity method.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion with result.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync(Expression<Func<Task>>, ActivityOptions)
Execute a static async activity without result via lambda.
public static Task ExecuteActivityAsync(Expression<Func<Task>> activityCall, ActivityOptions options)
Parameters
activityCallExpression<Func<Task>>Invocation of activity method.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion with result.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync(string, IReadOnlyCollection<object?>, ActivityOptions)
Execute an activity by name with no result and any number of arguments.
public static Task ExecuteActivityAsync(string activity, IReadOnlyCollection<object?> args, ActivityOptions options)
Parameters
activitystringActivity name to execute.
argsIReadOnlyCollection<object>Activity arguments.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync<TActivityInstance>(Expression<Action<TActivityInstance>>, ActivityOptions)
Execute a non-static non-async activity without result via lambda.
public static Task ExecuteActivityAsync<TActivityInstance>(Expression<Action<TActivityInstance>> activityCall, ActivityOptions options)
Parameters
activityCallExpression<Action<TActivityInstance>>Invocation of activity method.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion with result.
Type Parameters
TActivityInstanceActivity class type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync<TResult>(Expression<Func<Task<TResult>>>, ActivityOptions)
Execute a static async activity with result via lambda.
public static Task<TResult> ExecuteActivityAsync<TResult>(Expression<Func<Task<TResult>>> activityCall, ActivityOptions options)
Parameters
activityCallExpression<Func<Task<TResult>>>Invocation of activity method.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync<TActivityInstance>(Expression<Func<TActivityInstance, Task>>, ActivityOptions)
Execute a non-static async activity without result via lambda.
public static Task ExecuteActivityAsync<TActivityInstance>(Expression<Func<TActivityInstance, Task>> activityCall, ActivityOptions options)
Parameters
activityCallExpression<Func<TActivityInstance, Task>>Invocation of activity method.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion with result.
Type Parameters
TActivityInstanceActivity class type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync<TResult>(Expression<Func<TResult>>, ActivityOptions)
Execute a static non-async activity with result via lambda.
public static Task<TResult> ExecuteActivityAsync<TResult>(Expression<Func<TResult>> activityCall, ActivityOptions options)
Parameters
activityCallExpression<Func<TResult>>Invocation of activity method.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync<TResult>(string, IReadOnlyCollection<object?>, ActivityOptions)
Execute an activity by name with a result and any number of arguments.
public static Task<TResult> ExecuteActivityAsync<TResult>(string activity, IReadOnlyCollection<object?> args, ActivityOptions options)
Parameters
activitystringActivity name to execute.
argsIReadOnlyCollection<object>Activity arguments.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync<TActivityInstance, TResult>(Expression<Func<TActivityInstance, Task<TResult>>>, ActivityOptions)
Execute a non-static async activity with result via lambda.
public static Task<TResult> ExecuteActivityAsync<TActivityInstance, TResult>(Expression<Func<TActivityInstance, Task<TResult>>> activityCall, ActivityOptions options)
Parameters
activityCallExpression<Func<TActivityInstance, Task<TResult>>>Invocation of activity method.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TActivityInstanceActivity class type.
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteActivityAsync<TActivityInstance, TResult>(Expression<Func<TActivityInstance, TResult>>, ActivityOptions)
Execute a non-static non-async activity with result via lambda.
public static Task<TResult> ExecuteActivityAsync<TActivityInstance, TResult>(Expression<Func<TActivityInstance, TResult>> activityCall, ActivityOptions options)
Parameters
activityCallExpression<Func<TActivityInstance, TResult>>Invocation of activity method.
optionsActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TActivityInstanceActivity class type.
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteChildWorkflowAsync(string, IReadOnlyCollection<object?>, ChildWorkflowOptions?)
Shortcut for StartChildWorkflowAsync(string, IReadOnlyCollection<object?>, ChildWorkflowOptions?) + GetResultAsync().
public static Task ExecuteChildWorkflowAsync(string workflow, IReadOnlyCollection<object?> args, ChildWorkflowOptions? options = null)
Parameters
workflowstringWorkflow name to execute.
argsIReadOnlyCollection<object>Workflow arguments.
optionsChildWorkflowOptionsWorkflow options.
Returns
- Task
Task for workflow completion.
Remarks
Using an already-cancelled token may give a different exception than cancelling after started. Use IsCanceledException(Exception) to check if it's a cancellation either way.
Exceptions
- WorkflowAlreadyStartedException
Throw if an ID is given in the options, but it is already running. This exception is stored into the returned task.
ExecuteChildWorkflowAsync<TWorkflow>(Expression<Func<TWorkflow, Task>>, ChildWorkflowOptions?)
Shortcut for StartChildWorkflowAsync<TWorkflow>(Expression<Func<TWorkflow, Task>>, ChildWorkflowOptions?) + GetResultAsync().
public static Task ExecuteChildWorkflowAsync<TWorkflow>(Expression<Func<TWorkflow, Task>> workflowRunCall, ChildWorkflowOptions? options = null)
Parameters
workflowRunCallExpression<Func<TWorkflow, Task>>Invocation of workflow run method with a result.
optionsChildWorkflowOptionsWorkflow options.
Returns
- Task
Task for workflow completion.
Type Parameters
TWorkflowWorkflow class type.
Remarks
Using an already-cancelled token may give a different exception than cancelling after started. Use IsCanceledException(Exception) to check if it's a cancellation either way.
ExecuteChildWorkflowAsync<TResult>(string, IReadOnlyCollection<object?>, ChildWorkflowOptions?)
Shortcut for StartChildWorkflowAsync(string, IReadOnlyCollection<object?>, ChildWorkflowOptions?) + GetResultAsync<TResult>().
public static Task<TResult> ExecuteChildWorkflowAsync<TResult>(string workflow, IReadOnlyCollection<object?> args, ChildWorkflowOptions? options = null)
Parameters
workflowstringWorkflow name to execute.
argsIReadOnlyCollection<object>Workflow arguments.
optionsChildWorkflowOptionsWorkflow options.
Returns
- Task<TResult>
Task for workflow completion.
Type Parameters
TResultWorkflow result type.
Remarks
Using an already-cancelled token may give a different exception than cancelling after started. Use IsCanceledException(Exception) to check if it's a cancellation either way.
Exceptions
- WorkflowAlreadyStartedException
Throw if an ID is given in the options, but it is already running. This exception is stored into the returned task.
ExecuteChildWorkflowAsync<TWorkflow, TResult>(Expression<Func<TWorkflow, Task<TResult>>>, ChildWorkflowOptions?)
Shortcut for StartChildWorkflowAsync<TWorkflow, TResult>(Expression<Func<TWorkflow, Task<TResult>>>, ChildWorkflowOptions?) + GetResultAsync().
public static Task<TResult> ExecuteChildWorkflowAsync<TWorkflow, TResult>(Expression<Func<TWorkflow, Task<TResult>>> workflowRunCall, ChildWorkflowOptions? options = null)
Parameters
workflowRunCallExpression<Func<TWorkflow, Task<TResult>>>Invocation of workflow run method with a result.
optionsChildWorkflowOptionsWorkflow options.
Returns
- Task<TResult>
Task for workflow completion.
Type Parameters
TWorkflowWorkflow class type.
TResultWorkflow result type.
Remarks
Using an already-cancelled token may give a different exception than cancelling after started. Use IsCanceledException(Exception) to check if it's a cancellation either way.
ExecuteLocalActivityAsync(Expression<Action>, LocalActivityOptions)
Execute a static non-async local activity without result via lambda.
public static Task ExecuteLocalActivityAsync(Expression<Action> activityCall, LocalActivityOptions options)
Parameters
activityCallExpression<Action>Invocation of activity method.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion with result.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync(Expression<Func<Task>>, LocalActivityOptions)
Execute a static async local activity without result via lambda.
public static Task ExecuteLocalActivityAsync(Expression<Func<Task>> activityCall, LocalActivityOptions options)
Parameters
activityCallExpression<Func<Task>>Invocation of activity method.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion with result.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync(string, IReadOnlyCollection<object?>, LocalActivityOptions)
Execute a local activity by name with no result and any number of arguments.
public static Task ExecuteLocalActivityAsync(string activity, IReadOnlyCollection<object?> args, LocalActivityOptions options)
Parameters
activitystringActivity name to execute.
argsIReadOnlyCollection<object>Activity arguments.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync<TActivityInstance>(Expression<Action<TActivityInstance>>, LocalActivityOptions)
Execute a non-static non-async local activity without result via lambda.
public static Task ExecuteLocalActivityAsync<TActivityInstance>(Expression<Action<TActivityInstance>> activityCall, LocalActivityOptions options)
Parameters
activityCallExpression<Action<TActivityInstance>>Invocation of activity method.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion with result.
Type Parameters
TActivityInstanceActivity class type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync<TResult>(Expression<Func<Task<TResult>>>, LocalActivityOptions)
Execute a static async local activity with result via lambda.
public static Task<TResult> ExecuteLocalActivityAsync<TResult>(Expression<Func<Task<TResult>>> activityCall, LocalActivityOptions options)
Parameters
activityCallExpression<Func<Task<TResult>>>Invocation of activity method.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync<TActivityInstance>(Expression<Func<TActivityInstance, Task>>, LocalActivityOptions)
Execute a non-static async local activity without result via lambda.
public static Task ExecuteLocalActivityAsync<TActivityInstance>(Expression<Func<TActivityInstance, Task>> activityCall, LocalActivityOptions options)
Parameters
activityCallExpression<Func<TActivityInstance, Task>>Invocation of activity method.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task
Task for completion with result.
Type Parameters
TActivityInstanceActivity class type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync<TResult>(Expression<Func<TResult>>, LocalActivityOptions)
Execute a static non-async local activity with result via lambda.
public static Task<TResult> ExecuteLocalActivityAsync<TResult>(Expression<Func<TResult>> activityCall, LocalActivityOptions options)
Parameters
activityCallExpression<Func<TResult>>Invocation of activity method.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync<TResult>(string, IReadOnlyCollection<object?>, LocalActivityOptions)
Execute a local activity by name with a result and any number of arguments.
public static Task<TResult> ExecuteLocalActivityAsync<TResult>(string activity, IReadOnlyCollection<object?> args, LocalActivityOptions options)
Parameters
activitystringActivity name to execute.
argsIReadOnlyCollection<object>Activity arguments.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync<TActivityInstance, TResult>(Expression<Func<TActivityInstance, Task<TResult>>>, LocalActivityOptions)
Execute a non-static async local activity with result via lambda.
public static Task<TResult> ExecuteLocalActivityAsync<TActivityInstance, TResult>(Expression<Func<TActivityInstance, Task<TResult>>> activityCall, LocalActivityOptions options)
Parameters
activityCallExpression<Func<TActivityInstance, Task<TResult>>>Invocation of activity method.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TActivityInstanceActivity class type.
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
ExecuteLocalActivityAsync<TActivityInstance, TResult>(Expression<Func<TActivityInstance, TResult>>, LocalActivityOptions)
Execute a non-static non-async local activity with result via lambda.
public static Task<TResult> ExecuteLocalActivityAsync<TActivityInstance, TResult>(Expression<Func<TActivityInstance, TResult>> activityCall, LocalActivityOptions options)
Parameters
activityCallExpression<Func<TActivityInstance, TResult>>Invocation of activity method.
optionsLocalActivityOptionsActivity options. This is required and either ScheduleToCloseTimeout or StartToCloseTimeout must be set.
Returns
- Task<TResult>
Task for completion with result.
Type Parameters
TActivityInstanceActivity class type.
TResultActivity result type.
Remarks
The task will throw an ActivityFailureException on activity failure.
GetExternalWorkflowHandle(string, string?)
Get a handle to an external workflow for cancelling and issuing signals.
public static ExternalWorkflowHandle GetExternalWorkflowHandle(string id, string? runId = null)
Parameters
Returns
- ExternalWorkflowHandle
External workflow handle.
GetExternalWorkflowHandle<TWorkflow>(string, string?)
Get a handle to an external workflow for cancelling and issuing signals.
public static ExternalWorkflowHandle<TWorkflow> GetExternalWorkflowHandle<TWorkflow>(string id, string? runId = null)
Parameters
Returns
- ExternalWorkflowHandle<TWorkflow>
External workflow handle.
Type Parameters
TWorkflowWorkflow class type.
NewGuid()
Deterministically create a new Guid similar to NewGuid() (which cannot be used in workflows). The resulting GUID intentionally represents a version 4 UUID.
public static Guid NewGuid()
Returns
- Guid
A new GUID.
Patched(string)
Patch a workflow.
public static bool Patched(string patchId)
Parameters
patchIdstringPatch ID.
Returns
- bool
True if this should take the newer patch, false if it should take the old path.
Remarks
When called, this will only return true if code should take the newer path which means this is either not replaying or is replaying and has seen this patch before. Results for successive calls to this function for the same ID and workflow are memoized.
Use DeprecatePatch(string) when all workflows are done and will never be queried again. The old code path can be removed at that time too.
RunTaskAsync(Func<Task>, CancellationToken?)
Workflow-safe form of Run(Func<Task>, CancellationToken).
public static Task RunTaskAsync(Func<Task> function, CancellationToken? cancellationToken = null)
Parameters
functionFunc<Task>The work to execute asynchronously.
cancellationTokenCancellationToken?A cancellation token that can be used to cancel the work if it has not yet started. Defaults to CancellationToken.
Returns
- Task
A task for the running task (but not necessarily the task that is returned from the function).
RunTaskAsync<TResult>(Func<Task<TResult>>, CancellationToken?)
Workflow-safe form of Run<TResult>(Func<TResult>, CancellationToken).
public static Task<TResult> RunTaskAsync<TResult>(Func<Task<TResult>> function, CancellationToken? cancellationToken = null)
Parameters
functionFunc<Task<TResult>>The work to execute asynchronously.
cancellationTokenCancellationToken?A cancellation token that can be used to cancel the work if it has not yet started. Defaults to CancellationToken.
Returns
- Task<TResult>
A task for the running task (but not necessarily the task that is returned from the function).
Type Parameters
TResultThe type of the result returned by the task.
StartChildWorkflowAsync(string, IReadOnlyCollection<object?>, ChildWorkflowOptions?)
Start a child workflow by name.
public static Task<ChildWorkflowHandle> StartChildWorkflowAsync(string workflow, IReadOnlyCollection<object?> args, ChildWorkflowOptions? options = null)
Parameters
workflowstringWorkflow name to execute.
argsIReadOnlyCollection<object>Workflow arguments.
optionsChildWorkflowOptionsWorkflow options.
Returns
- Task<ChildWorkflowHandle>
The child workflow handle once started.
Remarks
Using an already-cancelled token may give a different exception than cancelling after started. Use IsCanceledException(Exception) to check if it's a cancellation either way.
Exceptions
- WorkflowAlreadyStartedException
Throw if an ID is given in the options, but it is already running. This exception is stored into the returned task.
StartChildWorkflowAsync<TWorkflow>(Expression<Func<TWorkflow, Task>>, ChildWorkflowOptions?)
Start a child workflow via lambda invoking the run method.
public static Task<ChildWorkflowHandle<TWorkflow>> StartChildWorkflowAsync<TWorkflow>(Expression<Func<TWorkflow, Task>> workflowRunCall, ChildWorkflowOptions? options = null)
Parameters
workflowRunCallExpression<Func<TWorkflow, Task>>Invocation of workflow run method without a result.
optionsChildWorkflowOptionsWorkflow options.
Returns
- Task<ChildWorkflowHandle<TWorkflow>>
The child workflow handle once started.
Type Parameters
TWorkflowWorkflow class type.
Remarks
Using an already-cancelled token may give a different exception than cancelling after started. Use IsCanceledException(Exception) to check if it's a cancellation either way.
Exceptions
- WorkflowAlreadyStartedException
Throw if an ID is given in the options, but it is already running. This exception is stored into the returned task.
StartChildWorkflowAsync<TWorkflow, TResult>(Expression<Func<TWorkflow, Task<TResult>>>, ChildWorkflowOptions?)
Start a child workflow via lambda invoking the run method.
public static Task<ChildWorkflowHandle<TWorkflow, TResult>> StartChildWorkflowAsync<TWorkflow, TResult>(Expression<Func<TWorkflow, Task<TResult>>> workflowRunCall, ChildWorkflowOptions? options = null)
Parameters
workflowRunCallExpression<Func<TWorkflow, Task<TResult>>>Invocation of workflow run method with a result.
optionsChildWorkflowOptionsWorkflow options.
Returns
- Task<ChildWorkflowHandle<TWorkflow, TResult>>
The child workflow handle once started.
Type Parameters
TWorkflowWorkflow class type.
TResultWorkflow result type.
Remarks
Using an already-cancelled token may give a different exception than cancelling after started. Use IsCanceledException(Exception) to check if it's a cancellation either way.
Exceptions
- WorkflowAlreadyStartedException
Throw if an ID is given in the options, but it is already running. This exception is stored into the returned task.
UpsertMemo(params MemoUpdate[])
Issue updates to the workflow memo.
public static void UpsertMemo(params MemoUpdate[] updates)
Parameters
updatesMemoUpdate[]Updates to issue.
Exceptions
- ArgumentException
If no updates given, two updates are given for a key, or an update value cannot be converted.
UpsertTypedSearchAttributes(params SearchAttributeUpdate[])
Issue updates to the workflow search attributes.
public static void UpsertTypedSearchAttributes(params SearchAttributeUpdate[] updates)
Parameters
updatesSearchAttributeUpdate[]Updates to issue.
Exceptions
- ArgumentException
If no updates given or two updates are given for a key.
WaitConditionAsync(Func<bool>, int, CancellationToken?)
Wait for the given function to return true or a timeout. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
public static Task<bool> WaitConditionAsync(Func<bool> conditionCheck, int timeoutMilliseconds, CancellationToken? cancellationToken = null)
Parameters
conditionCheckFunc<bool>Condition function. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
timeoutMillisecondsintTimeout milliseconds. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
cancellationTokenCancellationToken?Cancellation token. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
Returns
- Task<bool>
Task when condition becomes true or a timeout has occurred. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
- See Also
WaitConditionAsync(Func<bool>, CancellationToken?)
Wait for the given function to return true. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
public static Task WaitConditionAsync(Func<bool> conditionCheck, CancellationToken? cancellationToken = null)
Parameters
conditionCheckFunc<bool>Condition function. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
cancellationTokenCancellationToken?Cancellation token. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
Returns
- Task
Task when condition becomes true. See documentation of WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?) for more details.
- See Also
WaitConditionAsync(Func<bool>, TimeSpan, CancellationToken?)
Wait for the given function to return true or a timeout.
public static Task<bool> WaitConditionAsync(Func<bool> conditionCheck, TimeSpan timeout, CancellationToken? cancellationToken = null)
Parameters
conditionCheckFunc<bool>Condition function.
timeoutTimeSpanOptional timeout for waiting.
cancellationTokenCancellationToken?Cancellation token. If unset, this defaults to CancellationToken.
Returns
Remarks
The conditionCheck function is invoked on each iteration of the event loop.
Therefore, it should be fast and side-effect free.
WaitConditionWithOptionsAsync(WaitConditionOptions)
Wait for the given function to return true or a timeout.
public static Task<bool> WaitConditionWithOptionsAsync(WaitConditionOptions options)
Parameters
optionsWaitConditionOptionsOptions for the wait condition.
Returns
WhenAllAsync(IEnumerable<Task>)
Workflow-safe form of WhenAll(IEnumerable<Task>) (which just calls the standard library call currently because it is already safe).
public static Task WhenAllAsync(IEnumerable<Task> tasks)
Parameters
tasksIEnumerable<Task>The tasks to wait on for completion.
Returns
- Task
A task that represents the completion of all of the supplied tasks.
WhenAllAsync(params Task[])
Workflow-safe form of WhenAll(params Task[]) (which just calls the standard library call currently because it is already safe).
public static Task WhenAllAsync(params Task[] tasks)
Parameters
tasksTask[]The tasks to wait on for completion.
Returns
- Task
A task that represents the completion of all of the supplied tasks.
WhenAllAsync<TResult>(IEnumerable<Task<TResult>>)
Workflow-safe form of WhenAll<TResult>(IEnumerable<Task<TResult>>) (which just calls the standard library call currently because it is already safe).
public static Task<TResult[]> WhenAllAsync<TResult>(IEnumerable<Task<TResult>> tasks)
Parameters
tasksIEnumerable<Task<TResult>>The tasks to wait on for completion.
Returns
- Task<TResult[]>
A task that represents the completion of all of the supplied tasks.
Type Parameters
TResultThe type of the completed task..
WhenAllAsync<TResult>(params Task<TResult>[])
Workflow-safe form of WhenAll<TResult>(params Task<TResult>[]) (which just calls the standard library call currently because it is already safe).
public static Task<TResult[]> WhenAllAsync<TResult>(params Task<TResult>[] tasks)
Parameters
tasksTask<TResult>[]The tasks to wait on for completion.
Returns
- Task<TResult[]>
A task that represents the completion of all of the supplied tasks.
Type Parameters
TResultThe type of the completed task..
WhenAnyAsync(IEnumerable<Task>)
Workflow-safe form of WhenAny(IEnumerable<Task>).
public static Task<Task> WhenAnyAsync(IEnumerable<Task> tasks)
Parameters
tasksIEnumerable<Task>Tasks to wait for first completed of.
Returns
WhenAnyAsync(params Task[])
Workflow-safe form of WhenAny(params Task[]).
public static Task<Task> WhenAnyAsync(params Task[] tasks)
Parameters
tasksTask[]Tasks to wait for first completed of.
Returns
WhenAnyAsync<TResult>(IEnumerable<Task<TResult>>)
Workflow-safe form of WhenAny<TResult>(IEnumerable<Task<TResult>>).
public static Task<Task<TResult>> WhenAnyAsync<TResult>(IEnumerable<Task<TResult>> tasks)
Parameters
tasksIEnumerable<Task<TResult>>Tasks to wait for first completed of.
Returns
Type Parameters
TResultResult type.
WhenAnyAsync<TResult>(params Task<TResult>[])
Workflow-safe form of WhenAny<TResult>(params Task<TResult>[]).
public static Task<Task<TResult>> WhenAnyAsync<TResult>(params Task<TResult>[] tasks)
Parameters
tasksTask<TResult>[]Tasks to wait for first completed of.
Returns
Type Parameters
TResultResult type.