- Relates to #45
- Modify current annotation builder model to work via
manual StateMachineBuilder class.
- Add ConfigurationConfigurer to configure bean factory,
task executor and task scheduler via builder.
- NOTE: not yet fully working distributed sm, this
commit is considered to be a stage 1 of further
commits on this matter.
- Preliminary concept of DistributedStateMachine,
StateMachineEnsemble and StateMachinePersist.
- New module spring-statemachine-zookeeper order to
persist state in a distributed matter.
- Refactoring concept of a state machine access to get
better internal access into a sm via functional interfaces.
- Change build to use jdk7 and change test to rely on jdk8
order to test functional lambdas.
- new zookeeper sample demonstrating distributed concepts.
- Relates t0 #35 and #34.
- No docs until things are fully implemented.
- Add new StateContextExpressionMethods support class.
- Change SpelExpressionGuard to user methods class.
- Add new SpelExpressionAction which can take expression
to execute action.
- Generally fixes#68
- First attempt to externalize event execution from state machine
into its own class backed by an interface. This relates to #7
- Change of various places to have better support if execution
is done in threads.
- Not yet a central place where concurrency can be defines, thus
currently rely on global taskExecutor bean when can be overridded
from a default which is SyncTaskExecutor. Futher work for
that in separate tickets.
- Change tasks sample to use a thread pool.
- Change of concept how initial state/transition is handled, no
longer handled manually in lifecycle method, thus giving a change
for initial transition to execute its actions in a multiple threads.
- Trying to fix test `StateMachineTests.testTimerTransition`
by releasing latch after stateContexts list is updated. This
is probably reason why assert failed for that list size.
- Again, fixes#36
- Add concept of functional interface to work with
recursive machines for function access.
- This also fixes a machine relay so that every used
state context gets a correct top level machine
for correctly dispatching events into a top level handling.
- Tweak DefaultStateConfigurer so that we don't need
to define initial state as additional state. Also
fixed some other issue which caused a bit of a mess
when i.e multiple states were introduces twice.
- Fixes#29
- Adding first changes for supporting fork and join
concepts with regions.
- Change of some pseudostate concepts to have
better model for this and future work.
- Fixes#39
- Further fixes for this issue
- Fix some tests which really test wrong conditions.
- Disabled one test which is more feasible to
fix with region fork/join #39
- Fixes#54 again
- EnumStateMachineFactory didn't add created machine
which wrapped region states into a internal
machine map which is used to resolve built machines.
- Adding test which simply tests nested regions.
- Fixes#54
- Polish, cleaning, tidy up
- Split listener and context events into new StateMachineObjectSupport
- Polish pseudostate handling
- Extract isSubstate into static util function
- Remove event from State exit/entry.
Event not needed as function argument because
it's already wrapped in state context.
- Polish how StateContext is created
- Polish state exit/entry
- Fixes#50 bug which were revealed by
trying to use history state concepts.
- Fixes#38 for history features.
- Base functionality for deep and shallow
histories.
- Some housekeeping and polish before doing
more system wide spring cleaning.
- Adding choice pseudostate with first/then/last
structure which is a synonym for if/elseif/else.
- This is a first attempt to bring better pseudostate
model to a framework.
- Fixes#41
- Fixes#46
- Add some region/group info in a state configurer so that
we know which states are in a same reqion. Just a simple
uuid for now.
- Send machine started event at end of start and properly
register listener with regions.
- Fix factory not to mess things up with submachines so
correctly track if we have multiple initial states.