From 1ff8468f9ab07328eed451e1bcb1f241825f2912 Mon Sep 17 00:00:00 2001 From: Apeksha_2022 <70309060+Apeksha9389@users.noreply.github.com> Date: Sat, 10 Oct 2026 09:40:05 +0530 Subject: [PATCH 1/3] fix: let forkTask create multiple parallel branches --- src/sdk/builders/tasks/forkJoin.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/sdk/builders/tasks/forkJoin.ts b/src/sdk/builders/tasks/forkJoin.ts index b150ea4f..2854ba8d 100644 --- a/src/sdk/builders/tasks/forkJoin.ts +++ b/src/sdk/builders/tasks/forkJoin.ts @@ -6,14 +6,21 @@ import { } from "../../../open-api"; import { generateJoinTask } from "../../generators"; +/** + * Creates a FORK_JOIN task. Pass a list of branches (`TaskDefTypes[][]`) to run + * them in parallel; a flat list of tasks is treated as a single branch. + */ export const forkTask = ( taskReferenceName: string, - forkTasks: TaskDefTypes[] + forkTasks: TaskDefTypes[] | TaskDefTypes[][] ): ForkJoinTaskDef => ({ taskReferenceName, name: taskReferenceName, type: TaskType.FORK_JOIN, - forkTasks: [forkTasks], + forkTasks: + forkTasks.length > 0 && forkTasks.every((branch) => Array.isArray(branch)) + ? (forkTasks as TaskDefTypes[][]) + : [forkTasks as TaskDefTypes[]], }); export const forkTaskJoin = ( From 1e3e0c83b12b3eb63d6b3df0248dc62416ee3e7f Mon Sep 17 00:00:00 2001 From: Apeksha_2022 <70309060+Apeksha9389@users.noreply.github.com> Date: Sat, 10 Oct 2026 09:40:23 +0530 Subject: [PATCH 2/3] test: cover forkTask with several branches --- src/sdk/builders/tasks/__tests__/factory.test.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/sdk/builders/tasks/__tests__/factory.test.ts b/src/sdk/builders/tasks/__tests__/factory.test.ts index fffbb6b4..175a760c 100644 --- a/src/sdk/builders/tasks/__tests__/factory.test.ts +++ b/src/sdk/builders/tasks/__tests__/factory.test.ts @@ -110,6 +110,13 @@ describe("forkTask", () => { ], }); }); + it("Should create one branch per inner list", () => { + const a = eventTask("a", "prefix", "suffix"); + const b = eventTask("b", "prefix", "suffix"); + const c = eventTask("c", "prefix", "suffix"); + const forkTaskObj = forkTask("parallel", [[a, b], [c]]); + expect(forkTaskObj.forkTasks).toEqual([[a, b], [c]]); + }); it("Should return a tuple with both fork and join", () => { const tname = "forkTaskJoin"; const [forkTask, joinTask] = forkTaskJoin(tname, [ From cc3d3ccbec71126f0813836398b12608c8455684 Mon Sep 17 00:00:00 2001 From: Apeksha_2022 <70309060+Apeksha9389@users.noreply.github.com> Date: Sat, 10 Oct 2026 09:41:33 +0530 Subject: [PATCH 3/3] docs: show forkTask with parallel branches --- docs/api-reference/task-generators.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/api-reference/task-generators.md b/docs/api-reference/task-generators.md index d0aefcdc..a3b95942 100644 --- a/docs/api-reference/task-generators.md +++ b/docs/api-reference/task-generators.md @@ -69,11 +69,11 @@ _System Task_ - Executes multiple task branches in parallel and waits for all to ```typescript import { forkTask, forkTaskJoin } from "@io-orkes/conductor-javascript"; -// Method 1: Using forkTask (creates only the fork) +// Method 1: Using forkTask (creates only the fork). +// Each inner array is one branch; the branches run in parallel. const task1 = forkTask("fork_ref", [ - simpleTask("task1", "process_1", {}), - simpleTask("task2", "process_2", {}), - simpleTask("task3", "process_3", {}), + [simpleTask("task1", "process_1", {})], + [simpleTask("task2", "process_2", {}), simpleTask("task3", "process_3", {})], ]); // Method 2: Using forkTaskJoin (creates both fork and join)