@node-ts/bus-workflow
Version:
A workflow engine for orchestrating logic flows in distributed applications.
19 lines (18 loc) • 1.26 kB
TypeScript
import { Message } from '@node-ts/bus-messages';
import { ClassConstructor } from '@node-ts/bus-core';
import { WorkflowData } from '../workflow-data';
import { Workflow, WorkflowConstructor } from '../workflow';
import { WorkflowWithHandler } from './handler-workflow';
export declare const WORKFLOW_STARTED_BY_METADATA_KEY: unique symbol;
export declare class WorkflowStartedByMetadata {
propertyKey: string;
messageConstructor: ClassConstructor<Message>;
static addStep(metadata: WorkflowStartedByMetadata, target: Workflow<WorkflowData>): void;
static getSteps(target: WorkflowConstructor<WorkflowData>): WorkflowStartedByMetadata[];
}
/**
* A handler that starts a new workflow whenever a message of the handled type is received. A workflow can be started
* by one or more message types.
* @param messageConstructor The type of message that starts a new workflow
*/
export declare function StartedBy<TMessage extends Message, TWorkflowData extends WorkflowData, TPropertyKey extends string, TTarget extends WorkflowWithHandler<TMessage, TWorkflowData, TPropertyKey> = WorkflowWithHandler<TMessage, TWorkflowData, TPropertyKey>>(messageConstructor: ClassConstructor<TMessage>): (target: TTarget, propertyKey: TPropertyKey) => void;