Add enterprise business flows and fix layered sample compile.

Structured {source, event} steps in state_machine_enterprise flows.json enable HTML flow highlighting; fix additional-state configuration in layered_dispatcher_sample and refresh enterprise golden JSON.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-14 17:42:09 +02:00
parent 2e7afd6d42
commit a3789ceb3c
7 changed files with 55 additions and 5 deletions

View File

@@ -65,7 +65,17 @@
"startStates" : [ "click.kamil.enterprise.machines.document.DocumentState.DRAFT" ], "startStates" : [ "click.kamil.enterprise.machines.document.DocumentState.DRAFT" ],
"endStates" : [ "click.kamil.enterprise.machines.document.DocumentState.APPROVED" ], "endStates" : [ "click.kamil.enterprise.machines.document.DocumentState.APPROVED" ],
"renderChoicesAsDiamonds" : true, "renderChoicesAsDiamonds" : true,
"flows" : [ ], "flows" : [ {
"name" : "Order fulfillment",
"description" : "Pay a new order, then ship from pending.",
"steps" : [ {
"source" : "click.kamil.enterprise.machines.order.OrderState.NEW",
"event" : "click.kamil.enterprise.machines.order.OrderEvent.PAY"
}, {
"source" : "click.kamil.enterprise.machines.order.OrderState.PENDING",
"event" : "click.kamil.enterprise.machines.order.OrderEvent.SHIP"
} ]
} ],
"stateTypeFqn" : "click.kamil.enterprise.machines.document.DocumentState", "stateTypeFqn" : "click.kamil.enterprise.machines.document.DocumentState",
"eventTypeFqn" : "click.kamil.enterprise.machines.document.DocumentEvent", "eventTypeFqn" : "click.kamil.enterprise.machines.document.DocumentEvent",
"metadata" : { "metadata" : {

View File

@@ -55,7 +55,17 @@
"startStates" : [ "click.kamil.enterprise.machines.order.OrderState.NEW" ], "startStates" : [ "click.kamil.enterprise.machines.order.OrderState.NEW" ],
"endStates" : [ "click.kamil.enterprise.machines.order.OrderState.SHIPPED" ], "endStates" : [ "click.kamil.enterprise.machines.order.OrderState.SHIPPED" ],
"renderChoicesAsDiamonds" : true, "renderChoicesAsDiamonds" : true,
"flows" : [ ], "flows" : [ {
"name" : "Order fulfillment",
"description" : "Pay a new order, then ship from pending.",
"steps" : [ {
"source" : "click.kamil.enterprise.machines.order.OrderState.NEW",
"event" : "click.kamil.enterprise.machines.order.OrderEvent.PAY"
}, {
"source" : "click.kamil.enterprise.machines.order.OrderState.PENDING",
"event" : "click.kamil.enterprise.machines.order.OrderEvent.SHIP"
} ]
} ],
"stateTypeFqn" : "click.kamil.enterprise.machines.order.OrderState", "stateTypeFqn" : "click.kamil.enterprise.machines.order.OrderState",
"eventTypeFqn" : "click.kamil.enterprise.machines.order.OrderEvent", "eventTypeFqn" : "click.kamil.enterprise.machines.order.OrderEvent",
"metadata" : { "metadata" : {

View File

@@ -48,7 +48,17 @@
"startStates" : [ "click.kamil.enterprise.machines.user.UserState.GUEST" ], "startStates" : [ "click.kamil.enterprise.machines.user.UserState.GUEST" ],
"endStates" : [ "click.kamil.enterprise.machines.user.UserState.VERIFIED" ], "endStates" : [ "click.kamil.enterprise.machines.user.UserState.VERIFIED" ],
"renderChoicesAsDiamonds" : true, "renderChoicesAsDiamonds" : true,
"flows" : [ ], "flows" : [ {
"name" : "Order fulfillment",
"description" : "Pay a new order, then ship from pending.",
"steps" : [ {
"source" : "click.kamil.enterprise.machines.order.OrderState.NEW",
"event" : "click.kamil.enterprise.machines.order.OrderEvent.PAY"
}, {
"source" : "click.kamil.enterprise.machines.order.OrderState.PENDING",
"event" : "click.kamil.enterprise.machines.order.OrderEvent.SHIP"
} ]
} ],
"stateTypeFqn" : "click.kamil.enterprise.machines.user.UserState", "stateTypeFqn" : "click.kamil.enterprise.machines.user.UserState",
"eventTypeFqn" : "click.kamil.enterprise.machines.user.UserEvent", "eventTypeFqn" : "click.kamil.enterprise.machines.user.UserEvent",
"metadata" : { "metadata" : {

View File

@@ -41,6 +41,10 @@ class EnterpriseDedicatedEndpointHtmlTest {
assertThat(html).contains("#link_OrderState_PENDING__OrderEvent_SHIP"); assertThat(html).contains("#link_OrderState_PENDING__OrderEvent_SHIP");
assertThat(html).contains("\"linkKey\" : \"OrderState_NEW__OrderEvent_PAY\""); assertThat(html).contains("\"linkKey\" : \"OrderState_NEW__OrderEvent_PAY\"");
assertThat(html).contains("\"linkKey\" : \"OrderState_PENDING__OrderEvent_SHIP\""); assertThat(html).contains("\"linkKey\" : \"OrderState_PENDING__OrderEvent_SHIP\"");
assertThat(html).contains("Order fulfillment");
assertThat(html).contains("function highlightFlow(flow)");
assertThat(html).contains("\"source\" : \"click.kamil.enterprise.machines.order.OrderState.NEW\"");
assertThat(html).contains("\"source\" : \"click.kamil.enterprise.machines.order.OrderState.PENDING\"");
} }
private static Path findOrderMachineHtml(Path outputDir) throws Exception { private static Path findOrderMachineHtml(Path outputDir) throws Exception {

View File

@@ -14,7 +14,7 @@ public class StandardDocumentStateMachineConfiguration extends AbstractDocumentS
@Override @Override
protected void configureAdditionalStates(StateMachineStateConfigurer<DocumentState, DocumentTransitionEvent> states) protected void configureAdditionalStates(StateMachineStateConfigurer<DocumentState, DocumentTransitionEvent> states)
throws Exception { throws Exception {
states.state(DocumentState.REJECTED); states.withStates().state(DocumentState.REJECTED);
} }
@Override @Override

View File

@@ -14,7 +14,7 @@ public class StandardOrderStateMachineConfiguration extends AbstractOrderStateMa
@Override @Override
protected void configureAdditionalStates(StateMachineStateConfigurer<OrderState, OrderTransitionEvent> states) protected void configureAdditionalStates(StateMachineStateConfigurer<OrderState, OrderTransitionEvent> states)
throws Exception { throws Exception {
states.state(OrderState.CANCELLED); states.withStates().state(OrderState.CANCELLED);
} }
@Override @Override

View File

@@ -0,0 +1,16 @@
[
{
"name": "Order fulfillment",
"description": "Pay a new order, then ship from pending.",
"steps": [
{
"source": "click.kamil.enterprise.machines.order.OrderState.NEW",
"event": "click.kamil.enterprise.machines.order.OrderEvent.PAY"
},
{
"source": "click.kamil.enterprise.machines.order.OrderState.PENDING",
"event": "click.kamil.enterprise.machines.order.OrderEvent.SHIP"
}
]
}
]