nestjs-temporal-core
    Preparing search index...

    Class WorkflowProxy<T>

    Concrete implementation of IWorkflowProxy<T>.

    Plain class — not @Injectable. Instances are created by WorkflowProxyFactory and registered as NestJS providers via createWorkflowProvider().

    Type Parameters

    Implements

    Index
    • Get a typed handle to an existing workflow execution. result() on the handle returns Promise<WorkflowResultType<T>>.

      Parameters

      • workflowId: string
      • OptionalrunId: string

      Returns Promise<WorkflowHandle<T>>

      const handle = await this.orderProxy.getHandle('order-42');
      const result = await handle.result(); // typed as the workflow's return type
    • Query the workflow using a typed QueryDefinition created with defineQuery. TResult and TArgs are both inferred from the definition.

      Type Parameters

      • TResult
      • TArgs extends unknown[] = []

      Parameters

      Returns Promise<TResult>

      // in workflow file: export const statusQuery = defineQuery<OrderStatus>('getStatus');
      const status = await this.orderProxy.query('order-42', statusQuery); // typed: OrderStatus

      // query with args:
      // export const itemQuery = defineQuery<Item, [string]>('getItem');
      const item = await this.orderProxy.query('order-42', itemQuery, 'item-id');
    • Query by string name. Use when a QueryDefinition is unavailable. Caller must supply TResult explicitly (e.g. queryByName<OrderStatus>(...)).

      Type Parameters

      • TResult

      Parameters

      • workflowId: string
      • queryName: string
      • Optionalargs: readonly unknown[]

      Returns Promise<TResult>

      const status = await this.orderProxy.queryByName<OrderStatus>(
      'order-42',
      'getStatus',
      );
    • Send a typed signal using a SignalDefinition created with defineSignal. TypeScript infers TArgs from the definition — call site is fully type-checked.

      Type Parameters

      • TArgs extends unknown[]

      Parameters

      • workflowId: string
      • signalDef: SignalDefinition<TArgs>
      • ...args: TArgs

      Returns Promise<void>

      // in workflow file: export const approveSignal = defineSignal<[string]>('approve');
      await this.orderProxy.signal('order-42', approveSignal, 'manager-approval');
    • Send a signal by string name. Use when a SignalDefinition is unavailable. Args are readonly unknown[] — no implicit any.

      Parameters

      • workflowId: string
      • signalName: string
      • Optionalargs: readonly unknown[]

      Returns Promise<void>

      await this.orderProxy.signalByName('order-42', 'approve', ['manager-approval']);
      
    • Atomically start the workflow and send a signal. If the workflow is already running, only the signal is delivered (no duplicate start). Both signalArgs and workflowArgs are fully typed via the respective definitions.

      Type Parameters

      • TSignalArgs extends unknown[]

      Parameters

      Returns Promise<WorkflowHandleWithMetadata<T>>

      // export const addItemSignal = defineSignal<[CartItem]>('addItem');
      await this.cartProxy.signalWithStart(
      addItemSignal,
      [{ sku: 'SKU-123', qty: 2 }], // signalArgs — typed
      [userId], // workflowArgs — typed as Parameters<cartWorkflow>
      { workflowId: `cart-${userId}`, taskQueue: 'carts' },
      );
    • Send a typed update using an UpdateDefinition created with defineUpdate, and wait for it to complete. Updates can mutate workflow state and return a result. TypeScript infers TResult/TArgs from the definition — call site is fully type-checked.

      Type Parameters

      • TResult
      • TArgs extends unknown[] = []

      Parameters

      Returns Promise<TResult>

      // in workflow file: export const depositUpdate = defineUpdate<number, [number]>('deposit');
      const newBalance = await this.accountProxy.update('account-42', depositUpdate, 100);
    • Send an update by string name. Use when an UpdateDefinition is unavailable. Caller must supply TResult explicitly (e.g. updateByName<number>(...)).

      Type Parameters

      • TResult

      Parameters

      • workflowId: string
      • updateName: string
      • Optionalargs: readonly unknown[]

      Returns Promise<TResult>

      const newBalance = await this.accountProxy.updateByName<number>(
      'account-42',
      'deposit',
      [100],
      );