Table of Contents

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

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

TResult

Operation 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

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

TInput

Operation input type.

TResult

Operation result type.