- Fix wrong acquire logic in DefaultStatemachineService.
- Overhaul StateMachineRuntimePersister
- Change StateMachineRuntimePersister to extend
StateMachinePersist which should work better on
a bean level. Also add generic type T to it and
config where needed.
- Relates to #432
- Relates to #427
- 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
- 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
- Refactor so that we can create RepositoryState in one place
and then reference to it from JpaRepositoryTransition impls.
- New common top class BaseRepositoryEntity for entities
- Change RepositoryState and RepositoryTransition to be abstract
classes instead of interfaces.
- New custom StateMachineJackson2RepositoryPopulatorFactoryBean and
StateMachineJackson2ResourceReader handling json refs.
- Relates to #262
- 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
- Initial infra for config abstraction with
Spring Data Repositories via RepositoryStateMachineModelFactory.
- Initial jpa impl.
- Initial jpa sample atop of H2 DB.
- Relates to #250
- 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
- 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
- New sample app eventservice which is used to
demonstrate how redis is used as a repository
for StateMachineContext.
- Uses pooled request scope machine instances so
that with every request a machine is reseted from
a redis.
- Provides UI to play around.
- Provides rest endpoint to send 'pageview' events
for processing. For example using curl command like:
curl http://localhost:8080/feed -H "Content-Type: application/json" --data '{"user":"joe","id":"VIEW_I"}'
- Fixes#160
- Framework to 4.2.4
- For tests, boot to 1.3.1 and embedded tomcat to 8.0.30
- Polish and re-organise gradle files
- Can now run sample boot apps in sts due to mix of
previously sts getting older tomcat version.
- Remove most of a static class modifiers from docs
to make things easier if doing copy/paste. Not
all can be removed because some spring inner
config classes has to be static.
- Fixes#123
- Add logging of internal transitions which makes things
a bit more clear with showcase sample.
- Update showcase docs with clarification of use of
nested states.
- Now using stateMachineTaskExecutor instead of taskExecutor
so that it's easier to use custom executor and not to
collide with bean created i.e. scheduling.
- Fixes#83
- This is purely for jepsen tests, though also
handy for UI for showing that variable can be changed.
Essentially we want to have a way to set extended state
variable via internal transition which takes an value from
event headers and set that to extended state. This is then
supposed to be used from jepsen to test concurrenty issues
around extended state variables.
- Synchronize JoinPseudoState's
JoinTracker.stateChanged(State<S, E>, State<S, E>) method
for playing nice with concurrent region execution.
Should fix#93.
- Tuning test which relates to #76. What comes for the
tests, there was this concurrency issue and also problem
in tests itself.
- Polish JoinPseudoState.