@rs-box/ez-flow
Version:
Library for a workflow engine
49 lines (48 loc) • 1.45 kB
JavaScript
;
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);
}
};