feat: add structured PARALLEL blocks with join-all tokens

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
0264408
2026-09-18 18:17:53 +08:00
co-authored by Cursor
parent 0e9bb4bd16
commit e4478656c1
31 changed files with 1300 additions and 62 deletions
@@ -8,6 +8,7 @@ import com.jetlumen.ordo.api.RoutingCondition;
import com.jetlumen.ordo.api.TransactionExecutor;
import com.jetlumen.ordo.api.repository.ActionExecutionRepository;
import com.jetlumen.ordo.api.repository.ApprovalTaskRepository;
import com.jetlumen.ordo.api.repository.InstanceTokenRepository;
import com.jetlumen.ordo.api.repository.ProcessDefinitionRepository;
import com.jetlumen.ordo.api.repository.ProcessHistoryRepository;
import com.jetlumen.ordo.api.repository.ProcessInstanceRepository;
@@ -16,6 +17,7 @@ import com.jetlumen.ordo.spring.OrdoProperties;
import com.jetlumen.ordo.storage.jdbc.JdbcActionExecutionRepository;
import com.jetlumen.ordo.storage.jdbc.JdbcApprovalTaskRepository;
import com.jetlumen.ordo.storage.jdbc.JdbcConnectionProvider;
import com.jetlumen.ordo.storage.jdbc.JdbcInstanceTokenRepository;
import com.jetlumen.ordo.storage.jdbc.JdbcProcessDefinitionRepository;
import com.jetlumen.ordo.storage.jdbc.JdbcProcessHistoryRepository;
import com.jetlumen.ordo.storage.jdbc.JdbcProcessInstanceRepository;
@@ -134,6 +136,13 @@ public class OrdoJdbcAutoConfiguration {
return new JdbcActionExecutionRepository(connectionProvider, ordoSqlDialect);
}
@Bean
@ConditionalOnMissingBean
public InstanceTokenRepository ordoInstanceTokenRepository(
JdbcConnectionProvider connectionProvider, SqlDialect ordoSqlDialect) {
return new JdbcInstanceTokenRepository(connectionProvider, ordoSqlDialect);
}
@Bean
@ConditionalOnMissingBean
public OrdoEngine ordoEngine(Clock ordoClock,
@@ -146,11 +155,12 @@ public class OrdoJdbcAutoConfiguration {
ApprovalTaskRepository ordoApprovalTaskRepository,
ProcessHistoryRepository ordoProcessHistoryRepository,
ActionExecutionRepository ordoActionExecutionRepository,
InstanceTokenRepository ordoInstanceTokenRepository,
ObjectProvider<OrdoEventListener> ordoEventListeners) {
return new DefaultOrdoEngine(ordoClock, ordoAssigneeResolver, ordoRoutingCondition, actionHandler,
ordoTransactionExecutor, ordoProcessDefinitionRepository, ordoProcessInstanceRepository,
ordoApprovalTaskRepository, ordoProcessHistoryRepository, ordoActionExecutionRepository,
ordoEventListeners.orderedStream().toList());
ordoInstanceTokenRepository, ordoEventListeners.orderedStream().toList());
}
@Bean