Class TemporalOperationHandler
- Namespace
- Temporalio.Nexus
- Assembly
- Temporalio.dll
Factory for creating generic Nexus operation handlers backed by Temporal.
public static class TemporalOperationHandler
- Inheritance
-
TemporalOperationHandler
- Inherited Members
Remarks
WARNING: Nexus support is experimental.
Usage example — starting a workflow from a Nexus operation:
[OperationImpl]
public IOperationHandler<TransferInput, TransferResult> StartTransfer() =>
TemporalOperationHandler.FromHandleFactory<TransferInput, TransferResult>(
async (context, client, input) =>
await client.StartWorkflowAsync<TransferWorkflow, TransferResult>(
wf => wf.RunAsync(input),
new(id: $"transfer-{input.TransferId}", taskQueue: "my-task-queue")));
To perform a synchronous operation (e.g., sending a signal and returning immediately):
[OperationImpl]
public IOperationHandler<CancelOrderInput, NoValue> CancelOrder() =>
TemporalOperationHandler.FromHandleFactory<CancelOrderInput, NoValue>(
async (context, client, input) =>
{
await client.TemporalClient
.GetWorkflowHandle($"order-{input.OrderId}")
.SignalAsync("requestCancellation", new[] { input });
return TemporalOperationResult<NoValue>.SyncResult(default);
});
Methods
FromHandleFactory<TResult>(Func<TemporalOperationStartContext, ITemporalNexusClient, Task<TemporalOperationResult<TResult>>>)
Create an operation handler with no input from the given start function.
public static TemporalOperationHandler<NoValue, TResult> FromHandleFactory<TResult>(Func<TemporalOperationStartContext, ITemporalNexusClient, Task<TemporalOperationResult<TResult>>> startFunc)
Parameters
startFuncFunc<TemporalOperationStartContext, ITemporalNexusClient, Task<TemporalOperationResult<TResult>>>Function invoked on every operation start. Receives the Nexus start context and a Temporal operation client for starting workflows. Should return a TemporalOperationResult<TResult>.
Returns
- TemporalOperationHandler<NoValue, TResult>
Operation handler backed by Temporal.
Type Parameters
TResultOperation result type.
FromHandleFactory<TInput, TResult>(Func<TemporalOperationStartContext, ITemporalNexusClient, TInput, Task<TemporalOperationResult<TResult>>>)
Create an operation handler from the given start function.
public static TemporalOperationHandler<TInput, TResult> FromHandleFactory<TInput, TResult>(Func<TemporalOperationStartContext, ITemporalNexusClient, TInput, Task<TemporalOperationResult<TResult>>> startFunc)
Parameters
startFuncFunc<TemporalOperationStartContext, ITemporalNexusClient, TInput, Task<TemporalOperationResult<TResult>>>Function invoked on every operation start. Receives the Nexus start context, a Temporal operation client for starting workflows, and the operation input. Should return a TemporalOperationResult<TResult>.
Returns
- TemporalOperationHandler<TInput, TResult>
Operation handler backed by Temporal.
Type Parameters
TInputOperation input type.
TResultOperation result type.