Keep Maven modules unchanged. Hosts import models and SPIs from the new packages; OrdoEngine stays at com.jetlumen.ordo.api.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hosts register one bean per action/condition; Spring wires the dispatcher when no facade is defined, and REST catalog projects from those beans.
Co-authored-by: Cursor <cursoragent@cursor.com>
Store transition when as JSON instead of a lookup key so designers can compose closed-set logic while hosts still supply complex refs with args. Match conditional edges before the unconditional default.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose OrdoEngine over conditionally registered HTTP endpoints in autoconfigure, keep JDBC wiring in spring.jdbc, and share definition JSON via ProcessDefinitionParser.toJson.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace register/replace with publish so new graphs can ship without rewriting old ones, and keep in-flight work on the version it started with.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
Give hosts an append-only timeline, post-commit OrdoEventListener hooks, and durable ACTION results without blocking the approval flow.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map the existing graph model from files so hosts can register flows without Java literals. Existing ids still insert-only on restart.
Co-authored-by: Cursor <cursoragent@cursor.com>
Require ProcessDefinition transitions so the engine can branch or end by conditionKey, persist them in JDBC, and pin repository text files to LF.
Co-authored-by: Cursor <cursoragent@cursor.com>
- ApprovalStep now has candidates + ApprovalPolicy (ANY/ALL) instead of a single assignee; ApprovalStep.single(...) kept as a convenience factory for the single-approver case
- AssigneeResolver resolves per-candidate; TaskStatus gains SKIPPED for auto-skipped sibling tasks
- DefaultOrdoEngine creates one task per candidate and advances per-step according to policy (ANY: first approval wins and skips the rest, only rejects once everyone rejects; ALL: fail-fast on first rejection, only advances once everyone approves)
- Added ApprovalTaskRepository.findByInstanceIdAndStepId and JDBC/in-memory implementations
- Added V2 migration: ordo_approval_step.policy column + ordo_step_candidate table
- Updated ApprovalStepMapper/ApprovalTaskMapper/JdbcProcessDefinitionRepository for the new schema, handling null action for SKIPPED tasks
- Migrated all call sites (tests, ordo-example, rhizome demo) to ApprovalStep.single(...) and the 3-arg AssigneeResolver
- Added ANY/ALL policy test coverage; fixed JdbcTestSupport to apply the V2 migration and strip SQL comments before splitting on ';'
- OrdoJdbcAutoConfiguration: use string-based @AutoConfigureAfter(name = ...)
to reference both Spring Boot 3.x and 4.x DataSource/Flyway autoconfiguration
classes, since Boot 4 relocated these to dedicated modules.
- flatten-maven-plugin: switch flattenMode from resolveCiFriendliesOnly to
defaults so inter-module dependency versions are fully resolved (not just
the project's own <version>) when installed, fixing dependency resolution
for external consumers.
- Align sibling-module dependency versions to use \ consistently.
- Ignore generated .flattened-pom.xml files.