feat: cancel running instances as CANCELLED without initiator checks
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+22
@@ -266,6 +266,28 @@ class JdbcOrdoEngineIntegrationTest {
|
||||
assertThrows(InstanceAlreadyCompletedException.class, () -> engine.withdraw(instance.id(), "alice"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void adminCanCancelARunningInstance() {
|
||||
ProcessInstance instance = engine.start("leave", "alice");
|
||||
engine.approve(engine.findPendingTasksByInstanceId(instance.id()).get(0).id(), "maria");
|
||||
|
||||
ProcessInstance cancelled = engine.cancel(instance.id(), "admin", "policy");
|
||||
|
||||
assertEquals(ProcessStatus.CANCELLED, cancelled.status());
|
||||
assertEquals(NOW, cancelled.finishedAt());
|
||||
assertTrue(engine.findPendingTasksByInstanceId(instance.id()).isEmpty());
|
||||
ApprovalTask hrTask = engine.findTasks(instance.id()).stream()
|
||||
.filter(task -> task.stepId().equals("hr"))
|
||||
.findFirst()
|
||||
.orElseThrow();
|
||||
assertEquals(TaskStatus.SKIPPED, hrTask.status());
|
||||
assertEquals("admin", hrTask.action().actor());
|
||||
assertEquals("policy", hrTask.action().comment());
|
||||
assertTrue(engine.queryHistory(instance.id(), new PageRequest(0, 20)).content().stream()
|
||||
.anyMatch(event -> event.type() == ProcessEventType.INSTANCE_CANCELLED));
|
||||
assertThrows(InstanceAlreadyCompletedException.class, () -> engine.withdraw(instance.id(), "alice"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void persistHistoryAndActionExecutions() {
|
||||
OrdoEngine actionEngine = new DefaultOrdoEngine(Clock.fixed(NOW, ZoneOffset.UTC), AssigneeResolver.direct(),
|
||||
|
||||
Reference in New Issue
Block a user