- Make kryo in AbstractKryoStateMachineSerialisationService aware of same classloader
most likely use in an app. This takes away some of those weird kryo
errors you see with a web apps.
- Add context references concept to StateMachineContext which can be used
to store reference id and then individual running machines with regions
can independently store their states. Whole machine state can then get
restored more accurately.
- Add new `region(String id)` to StateConfigurer which can be used to set region id.
This is equivalent as setting region id with json based machine structure where
you need to define region id's with orthogonal regions are in use.
- Add new datajpamultipersist sample showing running regions and how those are
persisted to a database.
- Fixes#617
- Fixes#605
- Fixes#615
- 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
- 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 test for choice exit scenario which
I thought was broken.
- Add new spring-statemachine-build-tests project to
ease testing so that we can mix everything. This
project is a topdog which can depend on all other
modules.
- Relates to #203
- 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
- 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
- Add new StateMachineContextRepository interface.
- Add new redis module having persisting support
for StateMachineContext.
- Extract kryo serializers into a new kryo module which
is then shared with zookeeper and redis modules.
- We'll add redis related tests later when we figure out
a correct pattern for integration tests.
- Fixes#110
- This is a web based distributed zookeeper state machine
sample showing how multiple Spring boot instances having
a state machine can work with a zookeeper to distribute state
handling thoughout a jvm boundaries.
- Also this example is using websocket support to have live
updates of a UI for state machine state changes.
- Relates to #49
- New project spring-statemachine-test which contains public
classes to easy generic state machine testing.
- Concepts of StateMachineTestPlan and StateMachineTestPlanBuilder.
- Replaced one zk test to use this framework.
- NOTE: not yet fully working distributed sm, this
commit is considered to be a stage 1 of further
commits on this matter.
- Preliminary concept of DistributedStateMachine,
StateMachineEnsemble and StateMachinePersist.
- New module spring-statemachine-zookeeper order to
persist state in a distributed matter.
- Refactoring concept of a state machine access to get
better internal access into a sm via functional interfaces.
- Change build to use jdk7 and change test to rely on jdk8
order to test functional lambdas.
- new zookeeper sample demonstrating distributed concepts.
- Relates t0 #35 and #34.
- No docs until things are fully implemented.