From 9f9acd3567fb49badf0354345d5bfcc9f15e134c Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Sat, 24 Sep 2016 15:55:06 +0100 Subject: [PATCH] Add docs for state actions - Relates to #238 --- docs/src/reference/asciidoc/sm.adoc | 14 ++++++++++++++ .../docs/DocsConfigurationSampleTests.java | 1 + 2 files changed, 15 insertions(+) diff --git a/docs/src/reference/asciidoc/sm.adoc b/docs/src/reference/asciidoc/sm.adoc index a946ce17..6397066c 100644 --- a/docs/src/reference/asciidoc/sm.adoc +++ b/docs/src/reference/asciidoc/sm.adoc @@ -190,6 +190,7 @@ needs more clarification: * We defined action for initial state `S1`. * We defined entry action for state `S1` and left exit action empty. * We defined exit action for state `S2` and left entry action empty. +* We defined a single state action for state `S2`. * We defined entry action as well as exit action for state `S3`. * Notice how state `S1` is used twice with `initial()` and `state()` functions. This is only needed if you want to define entry or exit @@ -204,6 +205,19 @@ with `state()` is then executed if state machine is transitioning back and forward between initial and non-inital states. ==== +==== State Actions + +State actions are executed differently compared to entry and exit +actions simply because execution happens after state has been entered +and can be cancelled if state exit happens before particular action +has been completed. + +State Actions are executed using a normal Spring `TaskScheduler` +wrapped within a `Runnable` which may get cancelled via +`ScheduledFuture`. What this means is that whatever your doing in your +action, you need to be able to catch `InterruptedException` which is +raised if task is cancelled. + === Configuring Pseudo States _Pseudo state_ configuration is usually done by configuring states and diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/docs/DocsConfigurationSampleTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/docs/DocsConfigurationSampleTests.java index 943174bc..9a239745 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/docs/DocsConfigurationSampleTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/docs/DocsConfigurationSampleTests.java @@ -247,6 +247,7 @@ public class DocsConfigurationSampleTests extends AbstractStateMachineTests { .initial(States.S1, action()) .state(States.S1, action(), null) .state(States.S2, null, action()) + .state(States.S2, action()) .state(States.S3, action(), action()); }