- 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.
- 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
- new StateMachineListener method for listening all
StateContext changes in a various stages.
- StateContext now has a stage enum field telling at
which stage it is.
- Polish some classes and docs.
- Prepare tests for StateContext.
- Relates to #126, #138 and #150
- This is stage 2 for these changes. Relates to
#126 and #138.
- Better support for other stuff available from
a state context.
- Started to add docs.
- Polish.
- This is state 1 for these changes.
- This is a stage one of fixes for #126 and #138, thus
not giving full support not complete features.
- Add new annotations in a side of OnTransition
reflecting stuff from a StateMachineListener.
- Prepare and modify call chains so that we have
preliminary support(not feature ready) for these
so that existing tests pass.
- Add new helper to handle some annotation and spel
call caching.
- Enhance StateContext to better suit these needs.
- 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
- Remove passing extended state into DefaultStateMachineExecutor as
after machine is reseted and extended state object changed, transitions
from executor would get wrong object. Just get it from state machine
itself for StateContext.
- Fixes#146
- This seem to relate with machine build from an annotation
config which is then used as a session scoped bean.
- Fix autostart usage where appropriate and also fix some
test which were using wrong logic to determine autostart
usage(tests were wrong).
- Fixes#141
- Modify state structure so that nested states and orthogonal
regions can work with deferred events.
- Change executor to work better with deferred events and try
to provide better model for run-to-completion when execution
happens in a threads.
- Add new event defer section in ref docs.
- Fixes#131
- Add tweaks to DisposableBean.destroy() which integrates
into a lifecycle and properly closes a machine if only
destroy() is called which is a case when `session` scoped
bean is destroyed when http session is invalidated.
- Tests in SessionScopedAnnotationTests and
SessionScopedManualTests for both builder and
annotation config.
- Fixes#112
- Guard LifecycleObjectSupport.afterPropertiesSet() so that
it's not called twice where other call would be initiated
by app context if machine is returned as @Bean but still
normally build via a builder.
- Tune internal handling of BeanFactory and TaskExecutor so that
we play nice with machine and its executor.
- Fixes#130
- 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