Add builder-style API for ForkJoin tasks with fluent subtask configuration #2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses the feedback from PR #1 by implementing a builder-style approach for configuring ForkJoin tasks, replacing the cumbersome object-based configuration with a fluent API similar to the existing DoWhile task builder.
Problem
The current ForkJoin implementation requires manually creating arrays of
WorkflowTaskobjects, which is verbose and error-prone:Solution
The new implementation provides a clean, fluent API that follows the established pattern from DoWhile tasks:
Implementation Details
IForkBuilder<TWorkflow>: Interface for configuring fork branchesForkTaskBuilder<TWorkflow>: Main builder that extendsBaseTaskBuilderand manages multiple parallel branchesForkBranchBuilder<TWorkflow>: Individual branch builder implementingITaskSequenceBuilderfor task sequencesFork()extension method: Entry point providing the fluent APIKey Features
Generated Output
The builder generates the same FORK_JOIN and JOIN workflow structure as the original implementation, ensuring compatibility with existing Conductor workflows.
Examples Added
ForkBuilderWorkflow: Basic demonstration of the new APIForkJoinWorkflowNewStyle: Migration example showing old vs new approachMultiBranchForkWorkflow: Advanced example with multiple tasks per branchThis enhancement significantly improves the developer experience when creating parallel workflows while maintaining full compatibility with existing code.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.