- 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.
- Remove end state from constructors and handle
it as a pseudostate.
- When sm enters state marked with end, stop
machine.
- Added new events which are used to notify sm
start and stop which now makes sense with
a proper end pseudostate.
- Tweaking to keep correct statemachine ref around
so that StateContext passed to actions can be
used to send events within submachines.
- This was missed due to missing test and i.e. cdplayer
should transition into playing state directly via
and event sent from action which when closed is
checking if cd is inserted.
- Fixes#33