@rs-box/ez-flow
Version:
Library for a workflow engine
42 lines (41 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ParallelFlow = void 0;
const lib_util_1 = require("../utils/lib-util");
const parallel_work_report_1 = require("../work/parallel-work-report");
const abstract_work_flow_1 = require("./abstract-work-flow");
class ParallelFlow extends abstract_work_flow_1.AbstractWorkFlow {
constructor(name, workList) {
super(name);
this.workList = workList;
}
async call(workContext) {
const workReports = await Promise.all(this.workList.map(work => work.call(workContext)));
return new parallel_work_report_1.ParallelWorkReport(workReports);
}
}
exports.ParallelFlow = ParallelFlow;
ParallelFlow.Builder = class {
constructor() {
this.name = lib_util_1.LibUtil.getUUID();
this.workList = [];
}
static newFlow() {
return new ParallelFlow.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 ParallelFlow(this.name, this.workList);
}
};