- Add new repository model for storing StateMachineContext
via a new StateMachineRepository.
- New StateMachineRuntimePersister interface to abstract needed
functionality to do a runtime machine persistence.
- As runtime persistence, as of now, is done via interceptors, define
JpaRepositoryStateMachinePersist and JpaPersistingStateMachineInterceptor
to define StateMachineRuntimePersister logic.
- Add new datajpapersist sample demonstrating new concepts.
- Keep tests related to jpa as there's not redis/mongo integration
implemented in this first iteration.
- As this is going to be WIP until features around this issues
are completed, docs, etc are not yet added. Also, interfaces and impls
are subject to change during a process.
- Relates to #423
- Relates to #426
- Relates to #427
- Makes things less chatty if BeanFactory is null in
StateMachineHandlerCallHelper as this is usually a case
with manual builders outside of app context.
- Backport #412
- Relates #307
- Quick fix to get something out from
new boot 2.x metrics.
- Change source to java 8 compat
- Add new micrometer deps to build
- Docs and further changes will get done
when new boot metric system completes.
- Fixes#410
- As passing in null context don't have any
meaning other than doing reset with pre-defined
behaviour which currently just resets back to
initial state and clears extended state variables.
Now Also clearing machine id back to null which is
anyway a default value.
- Backport #381
- Relates #307
- Fixing machine lifecycle logic when machine
is restored which effectively should not touch
any lifecycle methods as start/stop is
user level action.
- Remove start/stop from restore and attempt to
do same when root machine is started. This also
needed some further changes as some functionality
for restore was essentially broken
- Backport #386
- Relates #307
- Fix case where method was annotated with
@OnExtendedStateChanged(key = "V1"), V1 was
changed which didn't result call to that method.
- Backport #387
- Relates #307
- Change processor registration so that if @WithStateMachine is
used with 'id', 'name' is skipped because it defaults to 'stateMachine'
and would cause extra registration.
- Relates #307
- Backport #370
- Adding null check for current state
- Remove synchronization from scheduleEventQueueProcessing
method in executor. Looks like this sync is not really needed
and indeed may cause jvm level deadlocks if threads are used
for execution.
- Change how some internals in
AbstractStateMachine are synchronized
to limit changes for deadlock.
- Relates to #307
- Backport of #359#360
- Adding support for javaconfig/uml to define
actions for transitions leading out from a
choice or junction states.
- Support for action for incoming transition is
already implemented as it is defined as normal
transition.
- Backport #108
- Relates #307
- Executor is following anonymous transitions in a loop
and if there is an exception in actions with this transition,
effectively executor ended into infinite loop.
- No bailing out from this loop if we cannot continue.
- Backport #344
- Relates #307
- Temporary add build to depend on bootJar
so that samples get created as fatjars.
- Required as boot's plugin is currently being
re-implemented and this feature is a bit broken.
- Relates to #342
- 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