class documentation

Context received by a workflow run operation.

Warning

This API is experimental and unstable.

Method __init__ Initialize the workflow run operation context.
Async Method start_workflow Start a workflow that will deliver the result of the Nexus operation.
Class Method _from_start_operation_context Undocumented
Instance Variable _temporal_context Undocumented
def __init__(self, *args, **kwargs): (source)

Initialize the workflow run operation context.

@overload
async def start_workflow(self, workflow: MethodAsyncNoParam[SelfType, ReturnType], *, id: str, task_queue: str | None = None, execution_timeout: timedelta | None = None, run_timeout: timedelta | None = None, task_timeout: timedelta | None = None, id_reuse_policy: temporalio.common.WorkflowIDReusePolicy = temporalio.common.WorkflowIDReusePolicy.ALLOW_DUPLICATE, id_conflict_policy: temporalio.common.WorkflowIDConflictPolicy = temporalio.common.WorkflowIDConflictPolicy.UNSPECIFIED, retry_policy: temporalio.common.RetryPolicy | None = None, cron_schedule: str = '', memo: Mapping[str, Any] | None = None, search_attributes: temporalio.common.TypedSearchAttributes | temporalio.common.SearchAttributes | None = None, static_summary: str | None = None, static_details: str | None = None, start_delay: timedelta | None = None, start_signal: str | None = None, start_signal_args: Sequence[Any] = [], rpc_metadata: Mapping[str, str] = {}, rpc_timeout: timedelta | None = None, request_eager_start: bool = False, priority: temporalio.common.Priority = temporalio.common.Priority.default, versioning_override: temporalio.common.VersioningOverride | None = None) -> WorkflowHandle[ReturnType]:
@overload
async def start_workflow(self, workflow: MethodAsyncSingleParam[SelfType, ParamType, ReturnType], arg: ParamType, *, id: str, task_queue: str | None = None, execution_timeout: timedelta | None = None, run_timeout: timedelta | None = None, task_timeout: timedelta | None = None, id_reuse_policy: temporalio.common.WorkflowIDReusePolicy = temporalio.common.WorkflowIDReusePolicy.ALLOW_DUPLICATE, id_conflict_policy: temporalio.common.WorkflowIDConflictPolicy = temporalio.common.WorkflowIDConflictPolicy.UNSPECIFIED, retry_policy: temporalio.common.RetryPolicy | None = None, cron_schedule: str = '', memo: Mapping[str, Any] | None = None, search_attributes: temporalio.common.TypedSearchAttributes | temporalio.common.SearchAttributes | None = None, static_summary: str | None = None, static_details: str | None = None, start_delay: timedelta | None = None, start_signal: str | None = None, start_signal_args: Sequence[Any] = [], rpc_metadata: Mapping[str, str] = {}, rpc_timeout: timedelta | None = None, request_eager_start: bool = False, priority: temporalio.common.Priority = temporalio.common.Priority.default, versioning_override: temporalio.common.VersioningOverride | None = None) -> WorkflowHandle[ReturnType]:
@overload
async def start_workflow(self, workflow: Callable[Concatenate[SelfType, MultiParamSpec], Awaitable[ReturnType]], *, args: Sequence[Any], id: str, task_queue: str | None = None, execution_timeout: timedelta | None = None, run_timeout: timedelta | None = None, task_timeout: timedelta | None = None, id_reuse_policy: temporalio.common.WorkflowIDReusePolicy = temporalio.common.WorkflowIDReusePolicy.ALLOW_DUPLICATE, id_conflict_policy: temporalio.common.WorkflowIDConflictPolicy = temporalio.common.WorkflowIDConflictPolicy.UNSPECIFIED, retry_policy: temporalio.common.RetryPolicy | None = None, cron_schedule: str = '', memo: Mapping[str, Any] | None = None, search_attributes: temporalio.common.TypedSearchAttributes | temporalio.common.SearchAttributes | None = None, static_summary: str | None = None, static_details: str | None = None, start_delay: timedelta | None = None, start_signal: str | None = None, start_signal_args: Sequence[Any] = [], rpc_metadata: Mapping[str, str] = {}, rpc_timeout: timedelta | None = None, request_eager_start: bool = False, priority: temporalio.common.Priority = temporalio.common.Priority.default, versioning_override: temporalio.common.VersioningOverride | None = None) -> WorkflowHandle[ReturnType]:
@overload
async def start_workflow(self, workflow: str, arg: Any = temporalio.common._arg_unset, *, args: Sequence[Any] = [], id: str, task_queue: str | None = None, result_type: type[ReturnType] | None = None, execution_timeout: timedelta | None = None, run_timeout: timedelta | None = None, task_timeout: timedelta | None = None, id_reuse_policy: temporalio.common.WorkflowIDReusePolicy = temporalio.common.WorkflowIDReusePolicy.ALLOW_DUPLICATE, id_conflict_policy: temporalio.common.WorkflowIDConflictPolicy = temporalio.common.WorkflowIDConflictPolicy.UNSPECIFIED, retry_policy: temporalio.common.RetryPolicy | None = None, cron_schedule: str = '', memo: Mapping[str, Any] | None = None, search_attributes: temporalio.common.TypedSearchAttributes | temporalio.common.SearchAttributes | None = None, static_summary: str | None = None, static_details: str | None = None, start_delay: timedelta | None = None, start_signal: str | None = None, start_signal_args: Sequence[Any] = [], rpc_metadata: Mapping[str, str] = {}, rpc_timeout: timedelta | None = None, request_eager_start: bool = False, priority: temporalio.common.Priority = temporalio.common.Priority.default, versioning_override: temporalio.common.VersioningOverride | None = None) -> WorkflowHandle[ReturnType]:
(source)

Start a workflow that will deliver the result of the Nexus operation.

The workflow will be started in the same namespace as the Nexus worker, using the same client as the worker. If task queue is not specified, the worker's task queue will be used.

See temporalio.client.Client.start_workflow for all arguments.

The return value is temporalio.nexus.WorkflowHandle.

The workflow will be started as usual, with the following modifications:

  • On workflow completion, Temporal server will deliver the workflow result to
    the Nexus operation caller, using the callback from the Nexus operation start request.
  • The request ID from the Nexus operation start request will be used as the
    request ID for the start workflow request.
  • Inbound links to the caller that were submitted in the Nexus start operation
    request will be attached to the started workflow and, outbound links to the started workflow will be added to the Nexus start operation response. If the Nexus caller is itself a workflow, this means that the workflow in the caller namespace web UI will contain links to the started workflow, and vice versa.
@classmethod
def _from_start_operation_context(cls, ctx: StartOperationContext) -> WorkflowRunOperationContext: (source)

Undocumented

_temporal_context = (source)

Undocumented