chore: target Java 17 and document usage plus roadmap

Lower the compiler baseline to 17, rename listDefinitions to queryDefinitions, and align README/usage/roadmap with planned vs out-of-scope work.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
0264408
2026-09-15 10:55:30 +08:00
co-authored by Cursor
parent f3220fd0a0
commit 5795778112
20 changed files with 604 additions and 110 deletions
@@ -43,7 +43,7 @@ class JdbcActionExecutionRepositoryTest {
assertTrue(repository.complete("ex-1", ActionExecutionStatus.SUCCESS, null, T0.plusSeconds(2)));
Page<ActionExecution> page = repository.query("inst-1", new PageRequest(0, 10));
assertEquals(1, page.totalElements());
ActionExecution stored = page.content().getFirst();
ActionExecution stored = page.content().get(0);
assertEquals(ActionExecutionStatus.SUCCESS, stored.status());
assertEquals(T0.plusSeconds(2), stored.finishedAt());
assertFalse(repository.complete("ex-1", ActionExecutionStatus.FAILED, "nope", T0.plusSeconds(3)));
@@ -55,11 +55,11 @@ class JdbcOrdoEngineIntegrationTest {
void completesASequentialApprovalProcess() {
ProcessInstance instance = engine.start("leave", "alice",
new ProcessContext(Map.of("requestId", "LEAVE-2026-001")));
ApprovalTask managerTask = engine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask managerTask = engine.findPendingTasksByInstanceId(instance.id()).get(0);
assertEquals("maria", managerTask.assignee());
engine.approve(managerTask.id(), "maria", "ok");
ApprovalTask hrTask = engine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask hrTask = engine.findPendingTasksByInstanceId(instance.id()).get(0);
assertEquals("henry", hrTask.assignee());
assertEquals(ProcessStatus.RUNNING, engine.findInstance(instance.id()).orElseThrow().status());
@@ -74,7 +74,7 @@ class JdbcOrdoEngineIntegrationTest {
@Test
void rejectionTerminatesTheProcess() {
ProcessInstance instance = engine.start("leave", "alice");
ApprovalTask task = engine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask task = engine.findPendingTasksByInstanceId(instance.id()).get(0);
ApprovalTask rejectedTask = engine.reject(task.id(), "maria", "Insufficient leave balance");
@@ -87,14 +87,14 @@ class JdbcOrdoEngineIntegrationTest {
@Test
void rejectsRepeatedApprovalsWithoutDuplicatingTheFlow() {
ProcessInstance instance = engine.start("leave", "alice");
ApprovalTask managerTask = engine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask managerTask = engine.findPendingTasksByInstanceId(instance.id()).get(0);
engine.approve(managerTask.id(), "maria");
assertThrows(TaskAlreadyCompletedException.class, () -> engine.approve(managerTask.id(), "maria"));
assertEquals(2, engine.findTasks(instance.id()).size());
assertEquals(1, engine.findPendingTasksByInstanceId(instance.id()).size());
assertEquals("hr", engine.findPendingTasksByInstanceId(instance.id()).getFirst().stepId());
assertEquals("hr", engine.findPendingTasksByInstanceId(instance.id()).get(0).stepId());
}
@Test
@@ -110,7 +110,7 @@ class JdbcOrdoEngineIntegrationTest {
ApprovalStep.single("hr", "HR approval", "henry"))));
ProcessInstance instance = failingEngine.start("leave2", "alice");
ApprovalTask managerTask = failingEngine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask managerTask = failingEngine.findPendingTasksByInstanceId(instance.id()).get(0);
assertThrows(IllegalStateException.class, () -> failingEngine.approve(managerTask.id(), "maria"));
// the conditional task completion must have been rolled back
@@ -137,7 +137,7 @@ class JdbcOrdoEngineIntegrationTest {
List.of(StepTransition.endWhen("manager", "never", 0))));
ProcessInstance instance = failingEngine.start("leave-noroute", "alice");
ApprovalTask managerTask = failingEngine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask managerTask = failingEngine.findPendingTasksByInstanceId(instance.id()).get(0);
assertThrows(NoRouteFoundException.class, () -> failingEngine.approve(managerTask.id(), "maria"));
ApprovalTask storedTask = failingEngine.findTask(managerTask.id()).orElseThrow();
@@ -155,11 +155,11 @@ class JdbcOrdoEngineIntegrationTest {
OrdoEngine secondEngine = newEngine(AssigneeResolver.direct());
assertEquals(instance, secondEngine.findInstance(instance.id()).orElseThrow());
ApprovalTask managerTask = secondEngine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask managerTask = secondEngine.findPendingTasksByInstanceId(instance.id()).get(0);
secondEngine.approve(managerTask.id(), "maria");
assertEquals(ProcessStatus.RUNNING, engine.findInstance(instance.id()).orElseThrow().status());
assertEquals("henry", engine.findPendingTasksByInstanceId(instance.id()).getFirst().assignee());
assertEquals("henry", engine.findPendingTasksByInstanceId(instance.id()).get(0).assignee());
}
@Test
@@ -168,7 +168,7 @@ class JdbcOrdoEngineIntegrationTest {
ApprovalStep.single("director", "Director approval", "diana"))));
ProcessInstance instance = engine.start("leave", "alice");
assertEquals("diana", engine.findPendingTasksByInstanceId(instance.id()).getFirst().assignee());
assertEquals("diana", engine.findPendingTasksByInstanceId(instance.id()).get(0).assignee());
}
@Test
@@ -181,7 +181,7 @@ class JdbcOrdoEngineIntegrationTest {
@Test
void initiatorCanWithdrawWhileALaterStepIsPending() {
ProcessInstance instance = engine.start("leave", "alice");
engine.approve(engine.findPendingTasksByInstanceId(instance.id()).getFirst().id(), "maria");
engine.approve(engine.findPendingTasksByInstanceId(instance.id()).get(0).id(), "maria");
ProcessInstance withdrawn = engine.withdraw(instance.id(), "alice", "changed plans");
@@ -202,7 +202,7 @@ class JdbcOrdoEngineIntegrationTest {
ProcessInstance instance = engine.start("leave", "alice");
assertThrows(UnauthorizedInstanceOperationException.class,
() -> engine.withdraw(instance.id(), "mallory"));
engine.reject(engine.findPendingTasksByInstanceId(instance.id()).getFirst().id(), "maria");
engine.reject(engine.findPendingTasksByInstanceId(instance.id()).get(0).id(), "maria");
assertThrows(InstanceAlreadyCompletedException.class, () -> engine.withdraw(instance.id(), "alice"));
}
@@ -232,11 +232,11 @@ class JdbcOrdoEngineIntegrationTest {
StepTransition.end("fail"))));
ProcessInstance instance = actionEngine.start("leave-action", "alice");
actionEngine.approve(actionEngine.findPendingTasksByInstanceId(instance.id()).getFirst().id(), "maria");
actionEngine.approve(actionEngine.findPendingTasksByInstanceId(instance.id()).get(0).id(), "maria");
assertEquals(ProcessStatus.APPROVED, actionEngine.findInstance(instance.id()).orElseThrow().status());
assertEquals(ActionExecutionStatus.SUCCESS,
actionEngine.queryActionExecutions(instance.id(), new PageRequest(0, 10)).content().getFirst().status());
actionEngine.queryActionExecutions(instance.id(), new PageRequest(0, 10)).content().get(0).status());
assertEquals(ActionExecutionStatus.FAILED,
actionEngine.queryActionExecutions(instance.id(), new PageRequest(0, 10)).content().get(1).status());
List<ProcessEventType> types = actionEngine.queryHistory(instance.id(), new PageRequest(0, 50)).content()
@@ -110,9 +110,9 @@ class JdbcPostgresIntegrationTest {
ProcessInstance instance = engine.start("leave-pg", "alice",
new ProcessContext(Map.of("requestId", "LEAVE-2026-001", "days", 5)));
ApprovalTask managerTask = engine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask managerTask = engine.findPendingTasksByInstanceId(instance.id()).get(0);
engine.approve(managerTask.id(), "maria", "ok");
ApprovalTask hrTask = engine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask hrTask = engine.findPendingTasksByInstanceId(instance.id()).get(0);
engine.approve(hrTask.id(), "henry", "ok");
ProcessInstance finished = engine.findInstance(instance.id()).orElseThrow();
@@ -207,7 +207,7 @@ class JdbcPostgresIntegrationTest {
ApprovalStep.single("hr", "HR approval", "henry"))));
ProcessInstance instance = failingEngine.start("leave-rollback-pg", "alice");
ApprovalTask managerTask = failingEngine.findPendingTasksByInstanceId(instance.id()).getFirst();
ApprovalTask managerTask = failingEngine.findPendingTasksByInstanceId(instance.id()).get(0);
assertThrows(IllegalStateException.class, () -> failingEngine.approve(managerTask.id(), "maria"));
// the conditional task completion must have been rolled back
@@ -50,7 +50,7 @@ class JdbcProcessHistoryRepositoryTest {
Page<ProcessEvent> first = repository.query("inst-1", new PageRequest(0, 1));
assertEquals(1, first.content().size());
assertEquals("e1", first.content().getFirst().id());
assertEquals("e1", first.content().get(0).id());
assertTrue(first.hasNext());
}