UNPKG

@node-ts/bus-workflow

Version:

A workflow engine for orchestrating logic flows in distributed applications.

40 lines (39 loc) 2.24 kB
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; }