- Focus of this commit is to have modern gradle build.
- Migrate most of a plugin configurations from dsl
into buildSrc.
- This fixes issues with existing docs build.
- Allows to sign files so that we have that part
done for central in a build.
- We can skip publishing samples.
- We're able to share similar logic for modules
which are meant for publish or just being samples.
- It's easier to upgrade gradle versions without
getting various build issues.
- Relates #1143
- Switch propdeps-plugin to custom OptionalDependenciesPlugin
- Switch io.spring.dependency-management with custom
spring-statemachine-platform project
- Use proper gradle publication system
- Switch to testfixtures from a custom tests jar
- Migrate to spring-asciidoctor-backends
- Generic changes to bom/starter create as we now use publications
- Just a migration
- Replace RedisRule with EnabledOnRedis
- Replace MongoDbRule with EnabledOnMongoDb
- spring-statemachine-test and some docs contains refs to junit4
but those are support packages and will stay in place.
- Fixes#779
- Relates #771
- remove junit4 dependecies
- refactor the unit tests by junit5
- enhance the spring-statemachine-test and spring-statemachine-build-tests so they can work together with junit4/junit5
- relates #779
- This commit changes a way how triggerless transitions are executed by
going via new doOnComplete method in StateListener which returns
Mono<Void>. This used to be a simple fire and forget subscribe via listener
and now fully handled via reactive chain when state is complete. Rest of
a changes are to tweak state actions to run parallel to be able to cancel
those and then follow and track when triggerless transitions need to be
executed.
- AbstractState still have some work to do for disposing things around
submachines which currently seem to break thins if handleStateDoOnComplete
is disposed when submachine state is exited. We'll leave this to get
fixed later.
- Add tag handling for junit5 which can be set via gradle build properties
statemachineIncludeTags and statemachineExcludeTags.
- Add BlockHound to build which can be activated via gradle build
property statemachineBlockHound.
- Add org.awaitility:awaitility to various test deps.
- Mostly relates to #734
- Change to Boot 2.2.x to pick upcoming series.
- Introduce Awaitility to tests
- Introduce new StateMachineEventResult concept in favor of boolean
when sending events. This result interface will have richer information
what happens when event is processed as previously we simply had boolean
flag telling if even was accepted. With StateMachineEventResult we can
can provide more information like if event was deferred and which region
provided this message.
- Deprecate old event methods and add new reactive event methods which now
return a Flux of StateMachineEventResult's. This concept then allows
to send Flux of events to a machine.
- State exit/entry now return Mono<Void>
- Refactor component lifecycle to be reactive as old start/stop would
not work anymore in a reactive statemachine simply because start may
cause changes and execute flow's.
- To ease testing add internal assertj assertions for some classes. This
work is kept in a test classes for time being to get move to public
spring-statemachine-test when things are more mature.
- Overhaul StateMachineExecutor interface and replace DefaultStateMachineExecutor
with ReactiveStateMachineExecutor.
- New ReactiveLifecycleManager which is kinda reactive replacement of some internals
of a LifecycleObjectSupport. Needed as components are reactively started and
stopped during a machine execution.
- New RegionExecutionPolicy concept which is an attempt to introduce parallel config
idea to a regions. Previously this was just naively handled with TaskExecutor which
never worked perfectly while working through reactor now seem to provide more
consistent results.
- Some test has been changed to reflect changes in a StateMachineExecutor. Also execution
using reactor made some changes to state notifications which now seem to be
more consistent(aka. previously parallel execution might have given notifications
in wrong order and in some cases kinda bogus changes).
- New turnstile reactive sample which is just start of a reactive sample to show
concept with webflux.
- Don't yet really add any docs as things are in-flight.
- Fixes#740
- 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
- Currently into as internal new feature, add state
completed concecept and use it in various places.
- Main focus for this commit is to add support using
anonymous transitions with state do actions which
requires proper completion schematics.
- Internal functionality here will probably expose to
user level in future releases using various other
concepts.
- Backport #466
- Relates #504
- 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
- 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