From a3789ceb3c3542bfc8e9af8949337ab3708d04da Mon Sep 17 00:00:00 2001 From: Kamil Patryk Kozakowski Date: Tue, 14 Jul 2026 17:42:09 +0200 Subject: [PATCH] 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 --- .../DocumentStateMachineConfiguration.json | 12 +++++++++++- .../OrderStateMachineConfiguration.json | 12 +++++++++++- .../UserStateMachineConfiguration.json | 12 +++++++++++- .../EnterpriseDedicatedEndpointHtmlTest.java | 4 ++++ ...tandardDocumentStateMachineConfiguration.java | 2 +- .../StandardOrderStateMachineConfiguration.java | 2 +- .../src/main/resources/flows.json | 16 ++++++++++++++++ 7 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 state_machines/state_machine_enterprise/src/main/resources/flows.json diff --git a/state_machine_exporter/src/test/resources/golden/DocumentStateMachineConfiguration/DocumentStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/DocumentStateMachineConfiguration/DocumentStateMachineConfiguration.json index 14cce82..dee3d84 100644 --- a/state_machine_exporter/src/test/resources/golden/DocumentStateMachineConfiguration/DocumentStateMachineConfiguration.json +++ b/state_machine_exporter/src/test/resources/golden/DocumentStateMachineConfiguration/DocumentStateMachineConfiguration.json @@ -65,7 +65,17 @@ "startStates" : [ "click.kamil.enterprise.machines.document.DocumentState.DRAFT" ], "endStates" : [ "click.kamil.enterprise.machines.document.DocumentState.APPROVED" ], "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", "eventTypeFqn" : "click.kamil.enterprise.machines.document.DocumentEvent", "metadata" : { diff --git a/state_machine_exporter/src/test/resources/golden/OrderStateMachineConfiguration/OrderStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/OrderStateMachineConfiguration/OrderStateMachineConfiguration.json index 92c0001..d0ceab5 100644 --- a/state_machine_exporter/src/test/resources/golden/OrderStateMachineConfiguration/OrderStateMachineConfiguration.json +++ b/state_machine_exporter/src/test/resources/golden/OrderStateMachineConfiguration/OrderStateMachineConfiguration.json @@ -55,7 +55,17 @@ "startStates" : [ "click.kamil.enterprise.machines.order.OrderState.NEW" ], "endStates" : [ "click.kamil.enterprise.machines.order.OrderState.SHIPPED" ], "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", "eventTypeFqn" : "click.kamil.enterprise.machines.order.OrderEvent", "metadata" : { diff --git a/state_machine_exporter/src/test/resources/golden/UserStateMachineConfiguration/UserStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/UserStateMachineConfiguration/UserStateMachineConfiguration.json index cf4dfed..927d21e 100644 --- a/state_machine_exporter/src/test/resources/golden/UserStateMachineConfiguration/UserStateMachineConfiguration.json +++ b/state_machine_exporter/src/test/resources/golden/UserStateMachineConfiguration/UserStateMachineConfiguration.json @@ -48,7 +48,17 @@ "startStates" : [ "click.kamil.enterprise.machines.user.UserState.GUEST" ], "endStates" : [ "click.kamil.enterprise.machines.user.UserState.VERIFIED" ], "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", "eventTypeFqn" : "click.kamil.enterprise.machines.user.UserEvent", "metadata" : { diff --git a/state_machine_exporter_html/src/test/java/click/kamil/springstatemachineexporter/html/EnterpriseDedicatedEndpointHtmlTest.java b/state_machine_exporter_html/src/test/java/click/kamil/springstatemachineexporter/html/EnterpriseDedicatedEndpointHtmlTest.java index 2509007..ee11db2 100644 --- a/state_machine_exporter_html/src/test/java/click/kamil/springstatemachineexporter/html/EnterpriseDedicatedEndpointHtmlTest.java +++ b/state_machine_exporter_html/src/test/java/click/kamil/springstatemachineexporter/html/EnterpriseDedicatedEndpointHtmlTest.java @@ -41,6 +41,10 @@ class EnterpriseDedicatedEndpointHtmlTest { assertThat(html).contains("#link_OrderState_PENDING__OrderEvent_SHIP"); assertThat(html).contains("\"linkKey\" : \"OrderState_NEW__OrderEvent_PAY\""); 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 { diff --git a/state_machines/layered_dispatcher_sample/src/main/java/click/kamil/examples/statemachine/layered/document/config/StandardDocumentStateMachineConfiguration.java b/state_machines/layered_dispatcher_sample/src/main/java/click/kamil/examples/statemachine/layered/document/config/StandardDocumentStateMachineConfiguration.java index 94cd73c..b96a1d1 100644 --- a/state_machines/layered_dispatcher_sample/src/main/java/click/kamil/examples/statemachine/layered/document/config/StandardDocumentStateMachineConfiguration.java +++ b/state_machines/layered_dispatcher_sample/src/main/java/click/kamil/examples/statemachine/layered/document/config/StandardDocumentStateMachineConfiguration.java @@ -14,7 +14,7 @@ public class StandardDocumentStateMachineConfiguration extends AbstractDocumentS @Override protected void configureAdditionalStates(StateMachineStateConfigurer states) throws Exception { - states.state(DocumentState.REJECTED); + states.withStates().state(DocumentState.REJECTED); } @Override diff --git a/state_machines/layered_dispatcher_sample/src/main/java/click/kamil/examples/statemachine/layered/order/config/StandardOrderStateMachineConfiguration.java b/state_machines/layered_dispatcher_sample/src/main/java/click/kamil/examples/statemachine/layered/order/config/StandardOrderStateMachineConfiguration.java index ae75a4a..6f0a1db 100644 --- a/state_machines/layered_dispatcher_sample/src/main/java/click/kamil/examples/statemachine/layered/order/config/StandardOrderStateMachineConfiguration.java +++ b/state_machines/layered_dispatcher_sample/src/main/java/click/kamil/examples/statemachine/layered/order/config/StandardOrderStateMachineConfiguration.java @@ -14,7 +14,7 @@ public class StandardOrderStateMachineConfiguration extends AbstractOrderStateMa @Override protected void configureAdditionalStates(StateMachineStateConfigurer states) throws Exception { - states.state(OrderState.CANCELLED); + states.withStates().state(OrderState.CANCELLED); } @Override diff --git a/state_machines/state_machine_enterprise/src/main/resources/flows.json b/state_machines/state_machine_enterprise/src/main/resources/flows.json new file mode 100644 index 0000000..10a5363 --- /dev/null +++ b/state_machines/state_machine_enterprise/src/main/resources/flows.json @@ -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" + } + ] + } +]