- Change so that machine id used in StateMachineFactory
can use same id in StateMachineModelFactory which now
extended with method build(String machineId).
- Polish repo and jpa classes.
- Fixes#255
- When StateMachineModelFactory is passed into config
it is now used everytime when machine is build which
allows model factory to get a fresh model from its
own storage if needed.
- Shuffled stuff around in machine factory base classes
to call StateMachineModelFactory only once during a machine
build operation.
- Other tweaks and a polish.
- Fixes#254
- Add missing creating of a local transition
- Fix logic how entry/exit is not called with local
- Add tests comparing functionality with external
- Fixes#248
- Fixes#249
- Squash commits with below entries
- Add factory with a given uuid
- Fix compile error, replace spaces by tabs and clean imports
- Make more sense to swap uuid and stringId
- Fixes#241
- Add classes directory to be ignored by git
- Doesn't yet handle actions defined for entry,
exit or do behariour.
- Docs to come when features around error actions
are fully implemented.
- Fixes#240
- AbstractState now extends LifecycleObjectSupport getting
access to TaskScheduler.
- Modify all configs so that we can have a cancellable Action
which is executed after state is entered and which is
cancelled(if running) when state is exited.
- Fixes#239
- Enhance config model so that a state can be
configured as a submachine or a factory.
- With uml it's possible to put multiple machines
into one xml(one needs to be a root machine) and
in a same way, define state as a separate machine.
- JavaConfig vs. uml config differs in a bit where
latter is passing raw model data into pojo config and
JavaConfig either full machine or machine factory.
- Fixes#121
- Refactor how join is handled
- Add new StateListener for listening entry/exit per State.
- Transition is now passed to next guy from a join state.
- A lot of changes in core machine/factory/executor to support
this new join handling.
- Fixes#235
- Fixes#237
- Fix a case where region is entered directly. Essentially
now trying to see if entry into a RegionState needs to
start a region as otherwise we assume direct entry will
do a start anyway.
- Fix some tests which kinda tested wrong scenarios.
- Fixes#221
- Add mechanism for transition into a default
state vertex in cases where i.e. substate has
never been entered, thus meaning there is no
history. Without default vertex, submachine now
does default entry logic to that region.
- Fixes#204
- With linked choices a machine got stuck in a pseudostate
while it should automatically follow the links till
non-pseudostate reached.
- Add ChoicePseudoState to use holder as state references
may not be known at a time of its instantiation.
- Fixes#195
- First stage to add support for UI modeling via
eclipse uml2 and papyrus frameworks.
- Add new interface StateMachineModelFactory which is
a central point of building machines models outside
of a normal annotation/build classes. What this mean is
a hook to config model so that machine can be defined
via a model factory, instead of writing config based on
normal adapter callbacks.
- Integrate model config into an annotation model so that
you can still use normal adapters but point those to
model factory classes, which then allows external hooks
for machine configuration.
- New spring-statemachine-uml package which supports
eclipse uml2/emf frameworks to define a machine config.
- Relates to #193
- New module spring-statemachine-cluster which is
based on spring-cloud-cluster to provide leader
election.
- Ensemble now has a concept of a leader if implementation
supports it.
- New DistributedLeaderAction can use leader info to execute
action only on a leader.
- Tweak web sample with these new concepts.
- Fixes#176
- State is now properly reported even if
state machine is stopped due to it terminating
via end state.
- Submachine is now explicitly stopped when parent
is moving its state into end state.
- Fixed some persistense issues handling along these fixes.
- Fixes#190
- change original id to uuid.
- This new id is now for user disposal.
- Currently only meant for a top-level machine.
- Can be set via annotation config, model classes or via
new StateMachineFactory.getStateMachine(String).
- Is persisted with DefaultStateMachinePersister and
StateMachineContext.
- Related new tests in ConfigurationTests and StateMachinePersistTests3.
- Fixes#186
- Fixing a persist/restore bug which failed to properly
reset history state via StateMachineContext history mappings.
- Effectively caused by too early `break` from a loop resetting
states where history reset needs to check all states to find
substate machines.
- Ported test given with a #188.
- Relates to #188
- Make model data classes easier to use for
simple use cases.
- Start adding dev docs.
- Generic docs changes.
- Relates to #172
- Relates to #158
- Relates to #185
- Added new `withVerifier()` which can be used to
set a custom one or disable verifier usage.
- Tuned default verifier.
- Disabled verifier for some tests which don't
exactly use correct model.
- Relates to #103
- Enhance StateMachineContext to contain possible
history state mappings for substates.
- Add persist support for AbstractStateMachinePersister.
- Modify some AbstractStateMachine functionality
for history handling which then allows to also
reset history state.
- Relates to #182
- New concepts easing persisting operations.
- Base implementation of a persister which user can
use instead of doing things manually to build a state
machine context. Supports basic sm model but doesn't yet
'understand' deep and complex mixed models.
- Fixed some features in sm reset functionality if root machine
only have regions.
- Relates to #184
- Add new features around Trigger to arm/disarm
it so that state entry/exit can stop firing
TimerTrigger. Default functionality for timer(long)
still stays same, however timerOnce(long) will
kick this new functionality where trigger will fire
once after state has been entered.
- Fixes#165
- Move into a generic fail fast configuration error
model with better exception messages.
- Initial move into a public SPI for state machine
configuration pojo classes.
- new StateMachineModelVerifier interface for generic model verifying.
- Relates #103
- Relates #172
- Work is done together for above issues mostly because they
relate to each others for config error handling. Meaning
we can't really verify configuration if we don't have
a proper model describing actual config model.