UNPKG

@rs-box/ez-flow

Version:
49 lines (48 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SequentialFlow = void 0; const lib_util_1 = require("../utils/lib-util"); const work_status_1 = require("../work/work-status"); const abstract_work_flow_1 = require("./abstract-work-flow"); class SequentialFlow extends abstract_work_flow_1.AbstractWorkFlow { constructor(name, workList) { super(name); this.workList = workList; } async call(workContext) { let workReport; for (const work of this.workList) { workReport = await work.call(workContext); const workStatus = workReport.getWorkStatus(); if (workReport != null && (workStatus === work_status_1.WorkStatus.FAILED || workStatus === work_status_1.WorkStatus.BROKEN)) break; } return workReport; } } exports.SequentialFlow = SequentialFlow; SequentialFlow.Builder = class { constructor() { this.name = lib_util_1.LibUtil.getUUID(); this.workList = []; } static newFlow() { return new SequentialFlow.Builder(); } withName(name) { this.name = name; return this; } addWork(work) { this.workList.push(work); return this; } withWorks(workList) { this.workList = workList; return this; } build() { return new SequentialFlow(this.name, this.workList); } };