@node-ts/bus-workflow
Version:
A workflow engine for orchestrating logic flows in distributed applications.
28 lines (24 loc) • 1 kB
text/typescript
import { Message } from '@node-ts/bus-messages'
import { Logger } from '@node-ts/logger-core'
import { WorkflowData, WorkflowDataConstructor, WorkflowStatus } from '../workflow-data'
import { Persistence } from '../persistence'
import { WorkflowHandlerFn } from './workflow-handler-fn'
import { WorkflowHandlerProxy } from './workflow-handler-proxy'
import * as uuid from 'uuid'
export class StartedByProxy<TMessage extends Message, TWorkflowData extends WorkflowData>
extends WorkflowHandlerProxy<TMessage, TWorkflowData> {
constructor (
workflowDataConstructor: WorkflowDataConstructor<TWorkflowData>,
handler: WorkflowHandlerFn<TMessage, TWorkflowData>,
persistence: Persistence,
logger: Logger
) {
super(handler, workflowDataConstructor, persistence, logger)
}
async getWorkflowData (): Promise<TWorkflowData[]> {
const data = new this.workflowDataConstructor()
data.$status = WorkflowStatus.Running
data.$workflowId = uuid.v4()
return [data]
}
}