feat(core)!: typed process navigation via reshaped Relations - #55
Open
emaarco wants to merge 1 commit into
Open
Conversation
emaarco
force-pushed
the
emaarco/analyze-scenario-test-builder
branch
from
July 22, 2026 21:45
79aa0fb to
c62b85c
Compare
emaarco
force-pushed
the
emaarco/analyze-scenario-test-builder
branch
2 times, most recently
from
July 24, 2026 06:55
58e4157 to
c072c4e
Compare
emaarco
marked this pull request as ready for review
July 24, 2026 08:33
emaarco
force-pushed
the
emaarco/analyze-scenario-test-builder
branch
10 times, most recently
from
July 25, 2026 11:30
2e9f251 to
42ad594
Compare
…cade for Java Generate a navigable process graph (FlowNode / HasSuccessors / HasInnerScope / NavigationScope supertypes) and a compile-checked ProcessPath step DSL that walks it, so tests assert token flow over the model instead of hand-maintained id string lists — model drift breaks the build at the exact edge that moved. - runtime: FlowNode/HasSuccessors/HasInnerScope/NavigationScope + AbstractFlowNode (equals/hashCode by id) - runtime: ProcessPath extension-function step DSL (then / thenMultipleTimes / onto / enter / inside / interruptedBy / nodesOf / jumpTo) - runtime: PathWalk fluent facade over the same engine, first-class from Java and Kotlin - core: emit the navigation graph from both Kotlin and Java builders; interior nodes are written directly on the subprocess object with a leaf Inner scope, so a subprocess nested in a subprocess no longer emits an Inner enclosed by another Inner (a Java compile error, JLS 8.1.3) - core: capture the non-null-id invariant once via FlowNodeWithId at the graph boundary (no !!) - core: real javac compile gate for nested subprocesses (golden tests only parse) - model the decrement-counter compensation as a service task across the shared BPMN + fixtures - docs + identical Java/Kotlin API test suites BREAKING CHANGE: the generated Relations object is reshaped from BpmnRelations metadata constants into a typed, navigable node graph; BpmnRelations and the old SCREAMING_SNAKE members are no longer generated.
emaarco
force-pushed
the
emaarco/analyze-scenario-test-builder
branch
from
July 28, 2026 13:05
42ad594 to
2eafe87
Compare
Contributor
|
Test Coverage
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements typed process navigation (issue #54) by reshaping the generated
Relationssection into a navigation graph.What
Relations→ navigation graph. Each element is a node exposingid+elementType+name; reachable elements live behindthen(). A node'sthen()= its successors; a scope'sthen()= its start event(s) (soRelations.then()enters the process,Inner.then()enters a subprocess). Terminal elements have nothen().Elementsunchanged — flatElementIdconstants (non-breaking). Raw adjacency stays in the JSON export.Innerscope (the only wrapper); boundary events + continuations are plain target-named successors; call activities stay opaque.Variants.<name>.Relations.How
New language-agnostic IR
NavGraph+NavigationGraphFactory(recursiveparentIdscoping, unified sequence-flow/boundary successors), rendered by both builders. Unit-tested; golden fixtures regenerated; Kotlin (PSI) + Java (javac) validation pass.Scope of the compile-time guarantee
Single-step structural adjacency — not token-accurate reachability (XOR = one branch at runtime; AND = concurrent + join). See #54 for details.
Status
Draft — the optional per-step hook model (P2) is still to come. This PR is the read-only navigation graph.
Refs #54