feat: add ACTION steps that run after the approval transaction commits
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+11
-2
@@ -1,5 +1,6 @@
|
||||
package com.jetlumen.ordo.spring;
|
||||
|
||||
import com.jetlumen.ordo.api.ActionHandler;
|
||||
import com.jetlumen.ordo.api.AssigneeResolver;
|
||||
import com.jetlumen.ordo.api.OrdoEngine;
|
||||
import com.jetlumen.ordo.api.RoutingCondition;
|
||||
@@ -65,6 +66,12 @@ public class OrdoJdbcAutoConfiguration {
|
||||
return RoutingCondition.always();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public ActionHandler ordoActionHandler() {
|
||||
return ActionHandler.noop();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@DependsOnDatabaseInitialization
|
||||
@@ -101,12 +108,14 @@ public class OrdoJdbcAutoConfiguration {
|
||||
public OrdoEngine ordoEngine(Clock ordoClock,
|
||||
AssigneeResolver ordoAssigneeResolver,
|
||||
RoutingCondition ordoRoutingCondition,
|
||||
ActionHandler actionHandler,
|
||||
TransactionExecutor ordoTransactionExecutor,
|
||||
ProcessDefinitionRepository ordoProcessDefinitionRepository,
|
||||
ProcessInstanceRepository ordoProcessInstanceRepository,
|
||||
ApprovalTaskRepository ordoApprovalTaskRepository) {
|
||||
return new DefaultOrdoEngine(ordoClock, ordoAssigneeResolver, ordoRoutingCondition, ordoTransactionExecutor,
|
||||
ordoProcessDefinitionRepository, ordoProcessInstanceRepository, ordoApprovalTaskRepository);
|
||||
return new DefaultOrdoEngine(ordoClock, ordoAssigneeResolver, ordoRoutingCondition, actionHandler,
|
||||
ordoTransactionExecutor, ordoProcessDefinitionRepository, ordoProcessInstanceRepository,
|
||||
ordoApprovalTaskRepository);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
+23
@@ -1,5 +1,6 @@
|
||||
package com.jetlumen.ordo.spring;
|
||||
|
||||
import com.jetlumen.ordo.api.ActionHandler;
|
||||
import com.jetlumen.ordo.api.ApprovalStep;
|
||||
import com.jetlumen.ordo.api.ApprovalTask;
|
||||
import com.jetlumen.ordo.api.AssigneeResolver;
|
||||
@@ -20,6 +21,7 @@ import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
class OrdoJdbcAutoConfigurationTest {
|
||||
|
||||
@@ -138,6 +140,17 @@ class OrdoJdbcAutoConfigurationTest {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void honoursUserDefinedActionHandler() {
|
||||
withDataSourceRunner.withUserConfiguration(CustomActionHandlerConfig.class)
|
||||
.run(context -> {
|
||||
assertThat(context).hasSingleBean(OrdoEngine.class);
|
||||
assertThatThrownBy(() -> context.getBean(ActionHandler.class).execute("any", null))
|
||||
.isInstanceOf(IllegalStateException.class)
|
||||
.hasMessage("custom-action");
|
||||
});
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class CustomAssigneeResolverConfig {
|
||||
@Bean
|
||||
@@ -153,4 +166,14 @@ class OrdoJdbcAutoConfigurationTest {
|
||||
return (key, context) -> true;
|
||||
}
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class CustomActionHandlerConfig {
|
||||
@Bean
|
||||
ActionHandler ordoActionHandler() {
|
||||
return (key, context) -> {
|
||||
throw new IllegalStateException("custom-action");
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user