conductor-oss / conductor-oss/java-sdk

EXCLUSIVE_JOIN task: missing builder class; defaultExclusiveJoinTask unreachable

Aperta Adatta ai principianti
#133 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
bug
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.