@node-ts/bus-workflow
Version:
A workflow engine for orchestrating logic flows in distributed applications.
40 lines (39 loc) • 2.24 kB
TypeScript
import { WorkflowData, WorkflowDataConstructor } from '../workflow-data';
import { WorkflowConstructor } from '../workflow';
import { WorkflowHandlerFn } from './workflow-handler-fn';
import { Message } from '@node-ts/bus-messages';
import { HandlerRegistry, ClassConstructor } from '@node-ts/bus-core';
import { MessageWorkflowMapping } from '../message-workflow-mapping';
import { Persistence } from '../persistence';
import { StartedByProxy } from './started-by-proxy';
import { HandlesProxy } from './handles-proxy';
import { Logger } from '@node-ts/logger-core';
/**
* The central workflow registry that holds all workflows managed by the application. This includes
* - the list of workflows
* - what messages start the workflow
* - what messages are handled by each workflow
*/
export declare class WorkflowRegistry {
private readonly handlerRegistry;
private readonly persistence;
private readonly startedByFactory;
private readonly handlesFactory;
private readonly logger;
private workflowRegistry;
private isInitialized;
private isInitializing;
constructor(handlerRegistry: HandlerRegistry, persistence: Persistence, startedByFactory: (workflowDataConstructor: WorkflowDataConstructor<WorkflowData>, handler: WorkflowHandlerFn<Message, WorkflowData>) => StartedByProxy<Message, WorkflowData>, handlesFactory: (handler: WorkflowHandlerFn<Message, WorkflowData>, workflowDataConstructor: WorkflowDataConstructor<WorkflowData>, messageMapping: MessageWorkflowMapping<Message, WorkflowData>) => HandlesProxy<Message, WorkflowData>, logger: Logger);
register<TWorkflowData extends WorkflowData>(workflowConstructor: WorkflowConstructor<TWorkflowData>, workflowDataConstructor: ClassConstructor<TWorkflowData>): void;
/**
* Initialize all services that are used to support workflows. This registers all messages subscribed to
* in workflows as handlers with the bus, as well as initializing the persistence service so that workflow
* states can be stored.
*
* This should be called once as the application is starting.
*/
initializeWorkflows(): Promise<void>;
dispose(): Promise<void>;
private registerStartedBy;
private registerHandles;
}