Skip to content

Commit

Permalink
Fix task dependency parameter mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
WMXPY committed Nov 6, 2023
1 parent b07d46e commit 02f53d2
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 16 deletions.
4 changes: 2 additions & 2 deletions src/orchestration/initialize/recursive-create-task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export const initializeLoadRecursiveCreateTask = (

previousTask.addDependency(
currentTask.getOrThrow().taskIdentifier,
nextOperation.connection.parametersMapping,
[nextOperation.connection.parametersMapping],
);
continue operation;
}
Expand All @@ -44,7 +44,7 @@ export const initializeLoadRecursiveCreateTask = (
if (currentTask.exists) {
nextTask.addDependency(
currentTask.getOrThrow().taskIdentifier,
nextOperation.connection.parametersMapping,
[nextOperation.connection.parametersMapping],
);
}

Expand Down
6 changes: 3 additions & 3 deletions src/orchestration/map-espial-insert/recursive-create-task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export const mapEspialInsertRecursiveCreateTask = (
if (nextOperations.length === 0) {
mapFinalizeTask.addDependency(
currentTask.getOrThrow().taskIdentifier,
{},
[],
);
return;
}
Expand All @@ -42,7 +42,7 @@ export const mapEspialInsertRecursiveCreateTask = (

previousTask.addDependency(
currentTask.getOrThrow().taskIdentifier,
nextOperation.connection.parametersMapping,
[nextOperation.connection.parametersMapping],
);
continue operation;
}
Expand All @@ -54,7 +54,7 @@ export const mapEspialInsertRecursiveCreateTask = (
if (currentTask.exists) {
nextTask.addDependency(
currentTask.getOrThrow().taskIdentifier,
nextOperation.connection.parametersMapping,
[nextOperation.connection.parametersMapping],
);
}

Expand Down
13 changes: 13 additions & 0 deletions src/task/apply/map-espial-succeed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import { PUB_ACTION_TYPE, PubAction } from "../../action/definition/action";
import { mapEspialInsertCreateTasks } from "../../orchestration/map-espial-insert/create-task";
import { PUB_TASK_STATUS } from "../definition/task";
import { PubMapEspialTask } from "../implementation/map-espial";
import { PubMapFinalizeTask } from "../implementation/map-finalize";
import { PubTaskBase } from "../task-base";
Expand Down Expand Up @@ -34,5 +35,17 @@ export const applyMapEspialSucceedOnTaskManager = (
}

taskManager.insertTasks([mapFinalizeTask]);

mapEspialTask.setTaskStatus(PUB_TASK_STATUS.RESOLVED);

const dependents: PubTaskBase[] = taskManager.getTasksByDependency(mapEspialTask.taskIdentifier);

for (const dependent of dependents) {

dependent.reconnectDependency(
mapEspialTask.taskIdentifier,
[mapFinalizeTask.taskIdentifier],
);
}
return true;
};
38 changes: 30 additions & 8 deletions src/task/task-base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ export abstract class PubTaskBase {

public addDependency(
dependency: string,
parametersMapping: PubConnectionParameterMapping,
parametersMappings: PubConnectionParameterMapping[],
): this {

if (this._dependencies.has(dependency)) {
Expand All @@ -97,18 +97,18 @@ export abstract class PubTaskBase {

this._dependencies.set(dependency, [
...dependencies,
parametersMapping,
...parametersMappings,
]);
return this;
}

this._dependencies.set(dependency, [parametersMapping]);
this._dependencies.set(dependency, parametersMappings);
return this;
}

public resolveDependency(
dependency: string,
output: TaskExecuteOutput,
output?: TaskExecuteOutput,
): this {

if (!this._dependencies.has(dependency)) {
Expand All @@ -118,10 +118,32 @@ export abstract class PubTaskBase {
const mappings: PubConnectionParameterMapping[] =
this._dependencies.get(dependency) as PubConnectionParameterMapping[];

for (const mapping of mappings) {
this.combineExecuteInput(
mapTaskDependencyOutput(mapping, output),
);
if (typeof output !== 'undefined') {
for (const mapping of mappings) {
this.combineExecuteInput(
mapTaskDependencyOutput(mapping, output),
);
}
}

this._dependencies.delete(dependency);
return this;
}

public reconnectDependency(
dependency: string,
newDependencies: string[],
): this {

if (!this._dependencies.has(dependency)) {
return this;
}

const mappings: PubConnectionParameterMapping[] =
this._dependencies.get(dependency) as PubConnectionParameterMapping[];

for (const newDependency of newDependencies) {
this.addDependency(newDependency, mappings);
}

this._dependencies.delete(dependency);
Expand Down
4 changes: 1 addition & 3 deletions test/e2e/two-action-map/resolve-map.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,7 @@ describe('Given (Two-Action-Map Resolve Map) Use Case', (): void => {

expect(applyResult).to.be.true;

console.log(taskManager.createSnapshot());

ExpectTaskManager.with(taskManager)
.forTasksWithProcedureIdentifier("MAP");
.hasExecutableTaskLength(1);
});
});

0 comments on commit 02f53d2

Please sign in to comment.