conductor-oss / conductor-oss/java-sdk
EXCLUSIVE_JOIN task: missing builder class; defaultExclusiveJoinTask unreachable
- Lingua principale
- Java
- Stelle
- 12
- Fork
- 10
- Merge medio
- 2g 8h
- PR unite (30g)
- 4
Descrizione
## Summary
`TaskType.EXCLUSIVE_JOIN` exists in the SDK enum but there is no `ExclusiveJoin` builder
class. There is no way to set the `defaultExclusiveJoinTask` field through the SDK API.
Users must construct raw `WorkflowTask` objects manually.
## Server baseline
Conductor **3.32.0-rc.9**
## Evidence
**Static:** `TaskType.EXCLUSIVE_JOIN` is in the enum; no builder class exists.
`WorkflowTask.defaultExclusiveJoinTask` (type: `List`) is unreachable from the SDK.
**Live (2026-07-16):** A raw EXCLUSIVE_JOIN task (`joinOn`, `defaultExclusiveJoinTask`)
inside a SWITCH workflow was registered and executed against Conductor OSS 3.32.0-rc.9.
Workflow completed successfully — server supports EXCLUSIVE_JOIN fully, gap is SDK-only.
## Expected behaviour
```java
new ExclusiveJoin("excl_join_ref")
.joinOn("branch_a_task", "branch_b_task")
.defaultExclusiveJoinTask("branch_b_task")
```
## Proposed fix
```java
public class ExclusiveJoin extends Task {
private String[] joinOn;
private List defaultExclusiveJoinTask = new ArrayList<>();
public ExclusiveJoin(String taskReferenceName, String... joinOn) {
super(taskReferenceName, TaskType.EXCLUSIVE_JOIN);
this.joinOn = joinOn;
}
public ExclusiveJoin defaultExclusiveJoinTask(String... tasks) {
this.defaultExclusiveJoinTask = Arrays.asList(tasks);
return this;
}
@Override
protected void updateWorkflowTask(WorkflowTask task) {
task.setJoinOn(Arrays.asList(joinOn));
task.setDefaultExclusiveJoinTask(defaultExclusiveJoinTask);
}
}
```
## Related
Discovered during systematic SDK audit against Conductor OSS 3.32.0-rc.9.
Same gap exists in the Python SDK (conductor-oss/python-sdk#429).
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia con TaskType.EXCLUSIVE_JOIN e WorkflowTask.defaultExclusiveJoinTask, quindi confronta l'API ExclusiveJoin proposta con le convenzioni del builder di Task dell'SDK. Il lavoro è completato quando i chiamanti possono configurare joinOn e defaultExclusiveJoinTask tramite ExclusiveJoin e la workflow task risultante può essere registrata ed eseguita senza costruire una WorkflowTask grezza.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- backend-api-design
- Tipo di issue
- Funzionalità
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Tranquilla
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 74/100