- Trying to handle scenario where TimerTrigger keeps firing
even if machine is stopped or has moved away from its
hosting state.
- Explicitely handle trigger starts/stops in
DefaultStateMachineExecutor when executor itself
is started/stopped.
- Backport #321
- Relates to #307
- Add new api to Transition to expose calling
its actions.
- Modify rest of a framework to first notify before
calling transtion action.
- Backport #322
- Relates to #307
- Add new tests for DefaultStateMachineExecutor to find
possible causes for a deadlock.
- Handle lifecycle scenario little differently
if timer is fired during a executor starting phase
order to not getting into a deadlock.
- Backport #315
- Relates to #307
- Modify StateMachineConfiguration and StateMachineFactoryConfiguration
so that if you have different states and events classes with multiple
machines or factories, you can autowire by types without
adding qualifiers.
- Manually try to discover generic types from enclosing adapther class
and if succesfull pass that information into bean definition
as ResolvableType.
- Backporting #306
- Relates to #307
- Backport #292
- Backport #224
- Add support so that @WithStateMachine can be used with
machines build via @EnableStateMachineFactory or via
manual builders.
- Adding new annotation @EnableWithStateMachine to help
handling needed context configuration.
- Add tests and docs.
- Relates to #307
- Backport #298
- Factory now listens machine event if autostart
is requested which should give fully started machine
i.e. if asynch executor is used. Bails out after 30
seconds. Further tweaks like allowing user to define
this time or conditionally not wait could be added later.
- Fix typos.
- Relates to #307
- Handle new pseudostate listener registration when
machine is restored. Make sure that we have only one set
of listeners by clearing existing ones.
- Fix join issue when regions are partially ended into
join source states and machine is persisted from that
moment.
- Lot of new tests to cover possible cases where these
bugs were hidden.
- Fixes#286
- Now do behaviour and entry/error actions
can have error action callback with
a raised Exception.
- New modified added methods in a StateConfigurer.
- Fixes#277
- Modify so that interceptor `preStateChange` is not called
for transient states which would falsely try to i.e. persist
choice and other states with persist recipe.
- Added some tests to verify that `preStateChange` is called
only once.
- Relates to #266
- This is a preliminary work.
- New monitoring and tracing conceps around StateMachineMonitor.
- Adds hooks internally to better calculate transition times.
- Add new annotation configurer for monitors.
- New boot module which autoconfigures monitoring for boot's metrics
and trancing repos.
- New monitoring sample.
- Relates to #149
- Adding ApplicationListener so that we can
consult time of last ContextRefreshedEvent and
rebuild a cache of StateMachineHandler methods.
- This implementation is a bit naive as we speak but
work for #224 will need to add better concept to work
outside of app context.
- Fixes#232
- Align related spring train deps
- Modify some other deps to get correct versions
- Some testing changes as boot 1.4.1 shuffled some
test stuff around.
- Fixed deprecations with newer boot and framework
- Fixes#256
- Revert some previous changes order to define transition
error action logic in a different place. Now basically
wrapping try/catch in a dedicated action order to have
separate error action per action as is expected by a config
SPI.
- Added some tests.
- Added docs for transition error actions.
- Relates to #238
- Fixes#259
- Classic case of using == vs. equals if Strings are involved.
- In DefaultStateMachineExecutor change event comparison
from == to equals.
- Tests using enums naturally work, but some tests using Strings
had a wrong checks.
- Fixes#253
- 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