import { IExecutionContextFacade, IFlowNodeInstanceService, IProcessModelFacade, IProcessTokenFacade, Model, NextFlowNodeInfo, Runtime, } from '@process-engine/process_engine_contracts'; import {FlowNodeHandler} from './index'; export class StartEventHandler extends FlowNodeHandler { private _flowNodeInstanceService: IFlowNodeInstanceService = undefined; constructor(flowNodeInstanceService: IFlowNodeInstanceService) { super(); this._flowNodeInstanceService = flowNodeInstanceService; } private get flowNodeInstanceService(): IFlowNodeInstanceService { return this._flowNodeInstanceService; } protected async executeInternally(flowNode: Model.Events.StartEvent, token: Runtime.Types.ProcessToken, processTokenFacade: IProcessTokenFacade, processModelFacade: IProcessModelFacade, executionContextFacade: IExecutionContextFacade): Promise { await this.flowNodeInstanceService.persistOnEnter(flowNode.id, this.flowNodeInstanceId, token); const nextFlowNode: Model.Base.FlowNode = await processModelFacade.getNextFlowNodeFor(flowNode); await this.flowNodeInstanceService.persistOnExit(flowNode.id, this.flowNodeInstanceId, token); return new NextFlowNodeInfo(nextFlowNode, token, processTokenFacade); } }