conductor-oss / conductor-oss/csharp-sdk

Missing task builders: NOOP, EXCLUSIVE_JOIN, START_WORKFLOW

Open
#160 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
C#
Stars
54
Forks
23
Avg merge
4d 21h
Merged PRs (30d)
2

Description

## Summary

Three system task types have no builder class in `Conductor/Definition/TaskType/`. Users who need these types must construct `WorkflowTask` manually. NOOP is also absent from the `WorkflowTaskTypeEnum`.

Tested against: **Conductor OSS 3.32.0-rc.9**

## Missing

| Task Type | Enum constant | Builder class | Notes |
|-----------|--------------|--------------|-------|
| NOOP | ✗ missing from enum | ✗ | No-op task; completes immediately. Core OSS type. |
| EXCLUSIVE_JOIN | ✓ `EXCLUSIVEJOIN = 18` | ✗ | Join for SWITCH branches; `defaultExclusiveJoinTask` unreachable. |
| START_WORKFLOW | ✓ `STARTWORKFLOW = 10` | ✗ | Fire-and-forget child workflow; `StartWorkflow` model exists, no task builder. |

## Server Acceptance

All three types accepted by Conductor OSS 3.32.0-rc.9. NOOP and EXCLUSIVE_JOIN server acceptance confirmed in parallel Java SDK (#130, #133) and JavaScript SDK (#136, #137) audits against the same server.

## Suggested Additions

```csharp
// Add to WorkflowTaskTypeEnum:
[EnumMember(Value = "NOOP")]
NOOP = 35,

// NoopTask.cs
public class NoopTask : Task
{
public NoopTask(string taskReferenceName)
: base(taskReferenceName, WorkflowTask.WorkflowTaskTypeEnum.NOOP) { }
}

// ExclusiveJoinTask.cs
public class ExclusiveJoinTask : Task
{
public ExclusiveJoinTask(string taskReferenceName, string[] joinOn,
string[] defaultExclusiveJoinTask = null)
: base(taskReferenceName, WorkflowTask.WorkflowTaskTypeEnum.EXCLUSIVEJOIN)
{
JoinOn = new List(joinOn);
if (defaultExclusiveJoinTask != null)
DefaultExclusiveJoinTask = new List(defaultExclusiveJoinTask);
}
}

// StartWorkflowTask.cs
public class StartWorkflowTask : Task
{
public StartWorkflowTask(string taskReferenceName, StartWorkflow startWorkflow)
: base(taskReferenceName, WorkflowTask.WorkflowTaskTypeEnum.STARTWORKFLOW)
{
WithInput("startWorkflow", startWorkflow);
}
}
```

Related: Java SDK [#130](https://github.com/conductor-oss/conductor-java-sdk/issues/130) (NOOP), [#133](https://github.com/conductor-oss/conductor-java-sdk/issues/133) (EXCLUSIVE_JOIN)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in Conductor/Definition/TaskType/ and inspect existing Task builder classes, WorkflowTask.WorkflowTaskTypeEnum, and the StartWorkflow model. Add builders for NOOP, EXCLUSIVE_JOIN, and START_WORKFLOW, plus the NOOP enum value, following the issue’s constructor and input details. Done means all three task types can be built without manually constructing WorkflowTask and the project compiles.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
api, backend
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
76/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.