Spring Statemachine - Reference Documentation

Authors

Janne Valkealahti

1.1.0.RELEASE

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.


Table of Contents

Preface
I. Introduction
1. Background
2. Usage Scenarios
II. Getting started
3. System Requirements
4. Modules
5. Using Gradle
6. Using Maven
7. Developing your first Spring Statemachine application
III. What’s New
8. In 1.1
IV. Using Spring Statemachine
9. Statemachine Configuration
9.1. Using enable annotations
9.2. Configuring States
9.3. Configuring Hierarchical States
9.4. Configuring Regions
9.5. Configuring Transitions
9.6. Configuring Guards
9.7. Configuring Actions
9.8. Configuring Pseudo States
9.8.1. Initial State
9.8.2. Terminate State
9.8.3. History State
9.8.4. Choice State
9.8.5. Junction State
9.8.6. Fork State
9.8.7. Join State
9.8.8. Exit/Entry Point States
9.9. Configuring Common Settings
9.10. Configuring Model
9.11. Things to Remember
10. State Machine Factories
10.1. Factory via Adapter
10.1.1. Adapter Factory Limitations
10.2. State Machine via Builder
11. Using Deferred Events
12. Using Scopes
13. Using Actions
13.1. SpEL Expressions with Actions
14. Using Guards
14.1. SpEL Expressions with Guards
15. Using Extended State
16. Using StateContext
16.1. Stages
17. Triggering Transitions
17.1. EventTrigger
17.2. TimerTrigger
18. Listening State Machine Events
18.1. Application Context Events
18.2. State Machine Listener
18.3. Limitations and Problems
19. Context Integration
19.1. Method Parameters
19.2. Transition Annotations
19.3. State Annotations
19.4. Event Annotation
19.5. State Machine Annotations
19.6. Extended State Annotation
20. State Machine Accessor
21. State Machine Interceptor
22. State Machine Security
22.1. Configuring Security
22.2. Securing Events
22.3. Securing Transitions
22.4. Securing Actions
22.5. Using Security Attributes and Expressions
22.5.1. Generic Attribute Usage
22.5.2. Generic Expression Usage
22.5.3. Event Attributes
22.5.4. Event Expressions
22.5.5. Transition Attributes
22.5.6. Transition Expressions
22.6. Understanding Security
23. State Machine Error Handling
24. Persisting State Machine
24.1. Using StateMachineContext
24.2. Using StateMachinePersister
24.3. Using Redis
25. Using Distributed States
25.1. ZookeeperStateMachineEnsemble
26. Testing Support
27. Eclipse Modeling Support
27.1. Using UmlStateMachineModelFactory
27.2. Creating Model
27.3. Define States
27.4. Define Events
27.5. Define Transitions
27.6. Define Timers
27.7. Define Actions
27.8. Define Guards
27.9. Define Bean Reference
27.10. Define SpEL Reference
V. Recipes
28. Persist
29. Tasks
VI. State Machine Examples
30. Turnstile
31. Showcase
32. CD Player
33. Tasks
34. Washer
35. Persist
36. Zookeeper
37. Web
38. Scope
39. Security
40. Event Service
41. Deploy
42. Order Shipping
VII. FAQ
43. State Changes
44. Extented State
VIII. Appendices
A. Support Content
A.1. Classes Used in This Document
B. State Machine Concepts
B.1. Quick Example
B.2. Glossary
B.3. A State Machines Crash Course
B.3.1. States
B.3.2. Pseudo States
Initial
End
Choice
Junction
History
Fork
Join
B.3.3. Guard Conditions
B.3.4. Events
B.3.5. Transitions
Internal Transition
External vs. Local Transition
B.3.6. Actions
B.3.7. Hierarchical State Machines
B.3.8. Regions
C. Distributed State Machine Technical Paper
C.1. Abstract
C.2. Intro
C.3. Generic Concepts
C.4. ZookeeperStateMachinePersist
C.5. ZookeeperStateMachineEnsemble
C.6. Distributed Tolerance
C.6.1. Isolated Events
C.6.2. Parallel Events
C.6.3. Concurrent Extended State Variable Changes
C.6.4. Partition Tolerance
C.6.5. Crash and Join Tolerance
45. Developer Documentation
45.1. StateMachine Config Model