Commit Graph

548 Commits

Author SHA1 Message Date
Janne Valkealahti
cb3bb87d8b Change JPA deferred events constraint
- Define fk in @CollectionTable instead trying
  to wrongly use @JoinTable
- Fixes #468
2018-01-17 16:52:13 +00:00
Janne Valkealahti
0f7624adeb JPA entity changes
- Modify existing JPA entity classes to
  have a fixed names for constraints and
  foreign key. Also name used tables so that
  we don't get crazy long names which are
  causing issues with some DB's
- Fixes #468
- Fixes #469
2018-01-17 16:14:13 +00:00
Janne Valkealahti
66174adde3 Add configuration tests for StateMachineModelFactory
- While original issue is already fixed in 1.2.x, adding
  specific tests for checking if config is coming from model
  or adapter.
- Fixes #459
2017-12-22 09:23:10 +00:00
Janne Valkealahti
2cd3b94662 Conflicting transitions cause undefined order behaviour
- Add new TransitionConflightPolicy and allow to configure
  it via an adapter interfaces.
- For now, use it in TransitionComparator which sorts transitions
  based on source states. This gives PARENT and CHILD sorting
  and allows to choose conflicting transitions either from parent
  or child.
- Add new sync thread used in submachines so that one thread is used
  in a whole call stach per machine(regions still get their own as well
  as a root machine).
- Fixes #456
2017-12-19 13:09:41 +00:00
Janne Valkealahti
11ef0e279b Find correct super type generics for configurer adapter
- Naively with StateMachineConfigurerAdapter or EnumStateMachineConfigurerAdapter
  only immediate super type were checked to find user level generics to
  instruct IOC for proper resolvable types. This worked with almost all cases
  except if user created new base type out from StateMachineConfigurerAdapter and
  bean id didn't match what what was trying to get autowired if multiple adapters
  were in use.
- Correctly find resolvable type as StateMachineConfigurerAdapter in ResolvableType
  which finds an exact correct type to get generics.
- Fixes #454
2017-12-15 08:54:32 +00:00
Janne Valkealahti
fdae9f7f48 Allow to define extended state variables during persist
- Now in AbstractPersistingStateMachineInterceptor it is possible
  to use a Function to define which variables are persisted. This
  is for cases where it is not desirable to persist some variables
  for variours reasons.
- Relates to #423
2017-12-10 11:39:41 +00:00
Janne Valkealahti
0a9273ef0b Add redis/mongo for machine persistence
- Add similar implementations as done for JPA
  which uses redis and mongo.
- Relates #428
2017-11-29 20:29:24 +00:00
Janne Valkealahti
afcd587c08 Fix extended state handling during reset
- Instead of changing extended state object, use existing one
  by clearing it and setting new values from context.
- Fixes #447
2017-11-29 13:33:12 +00:00
Janne Valkealahti
d49d52b2d3 Add stop logic to DefaultStateMachineService
- Now implementing DisposableBean and clearing/stopping
  machines if service is destroyed.
- Relates to #432
2017-11-28 10:05:29 +00:00
Janne Valkealahti
594505bce3 Add start/stop feature to DefaultStateMachineService
- Add new interface methods to StateMachineService to ease
  starting and stopping when acquiring or releasing machines.
- Relates to #432
2017-11-26 15:19:26 +00:00
Janne Valkealahti
aa6c927a6c Fix threading issues
- In AbstractStateMachine and DefaultStateMachineExecutor
  do a little more synchronisation so that submachine is allowed
  to do its run-to-completion before parent machine can do its
  own transitions. This should fix use cases, when submachine
  starts, does its transitions and actions, parent wont try to
  do its own triggerless transtions.
- Adding some new tests and fixing one other sync issue with end state.
- Relates to #442
2017-11-26 13:54:11 +00:00
Janne Valkealahti
de6d00e6c8 Make use of kryo more configurable
- Move away from thread local in favour of using
  kryo pooling.
- New interface StateMachineSerialisationService
  with KryoStateMachineSerialisationService.
- Try to work via constructors for instead of full blown
  configuration as it looks like this may give enough
  for users to customise.
- Relates to #437
2017-11-23 13:11:39 +00:00
Janne Valkealahti
6c9b349b52 Fix datajpapersist sample
- Fix sample per changed release logic
  in DefaultStateMachineService.
- Relates to #432
2017-11-23 09:52:17 +00:00
Janne Valkealahti
ca71380f9f Change persistence model structure
- 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
2017-11-23 08:04:15 +00:00
Janne Valkealahti
8f7c9310fe Add base DefaultStateMachineService implementation
- First take on new interface StateMachineService with
  its default impl.
- Modify datajpapersist sample to use it.
- Relates to #432
2017-11-21 10:46:49 +00:00
Janne Valkealahti
33a5370d01 Preliminary support for Spring Data persist
- 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
2017-11-18 16:38:49 +00:00
Spring Buildmaster
d82bca1280 Next development version 2017-11-15 08:42:48 +00:00
Janne Valkealahti
6c98da6b7f Update changelog 2017-11-15 08:05:42 +00:00
Janne Valkealahti
c8062e6c61 Handle null BeanFactory in StateMachineHandlerCallHelper
- Makes things less chatty if BeanFactory is null in
  StateMachineHandlerCallHelper as this is usually a case
  with manual builders outside of app context.
- Fixes #412
2017-11-12 11:44:18 +00:00
Janne Valkealahti
42ffc19df9 Fix event processing threading
- Add one extra step to schedule event processing to
  recude risks that machine doesn't do full
  run-to-completion.
- Backport #419
- Relates #420
2017-11-05 17:14:48 +00:00
Hazim
f8b7c0dae0 Fix method description typo
Fixed typing mistake in the method description
2017-10-28 15:19:03 +01:00
Janne Valkealahti
ab31c942fe Fix state holder usage
- In AbstractStateMachineFactory change used holder map
  to list so that same states don't get lost because of
  used key.
- Fixes #416
2017-10-28 15:10:46 +01:00
Pinguet62
5630769f04 Fix logging message when transition action throws exception 2017-09-17 22:31:26 +02:00
Spring Buildmaster
0f41e76ed9 Next development version 2017-07-09 08:32:38 +00:00
Janne Valkealahti
3b79825ec5 Update changelog 2017-07-09 08:14:17 +01:00
Janne Valkealahti
609035acea Fix timer after restore
- Previously timer were only armed when state
  were entered, thus failing for timer to work if
  machine were restored. Now changing logic so that
  that state have a lifecycle which is called during
  machine reset.
- Fixes #381
2017-07-08 18:50:18 +01:00
Janne Valkealahti
a9cf3e1acc Clean machine id when restored with null context
- Resetting a machine with null context currently
  just resets to initial state and clear extended
  state variables. Enhance also to clear machine id
  which as a user level variable may cause some other
  trouble. There are no internal functionality for this
  id as it's meant for user consumption.
- Fixes #390
2017-07-08 18:00:02 +01:00
Janne Valkealahti
8c18dc86de Change machine lifecycle with restore
- 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
- Fixes #386
2017-07-08 17:34:31 +01:00
Janne Valkealahti
38977bef71 Add recursive context build
- Fix AbstractStateMachinePersister to handle
  recursive machines and regions.
- Fixes #391
2017-07-08 10:18:47 +01:00
Janne Valkealahti
4cc3dd705d Fix OnExtendedStateChanged with key
- Fix case where method was annotated with
  @OnExtendedStateChanged(key = "V1"), V1 was
  changed which didn't result call to that method.
- Fixes #387
2017-07-01 15:18:29 +01:00
Janne Valkealahti
04f77664b8 Fix terminal state for persist
- Now calling post state interceptors at end
  of state change which gives machine a change
  to stop if state is terminal.
- Fixes #379
2017-06-29 10:17:55 +01:00
Janne Valkealahti
c15bd99d7f Prevent npe on accept
- Taking local copy of current state
  to prevent npe without sync block.
- Relates to #364
2017-06-10 15:24:23 +01:00
Janne Valkealahti
bec44751d9 Backport ci test changes from master
- Relates to #343
- Relates to #376
2017-06-10 14:33:55 +01:00
Janne Valkealahti
bbca0ea504 Fix possible deadlock
- Removing some sync blocks which imho
  are not needed anymore.
- Adding some smoke tests.
- Relates to #364
2017-06-10 09:11:35 +01:00
Janne Valkealahti
78e3e479a7 Add support for multiple end states with javaconfig
- Add missing support for defining more than one
  end states and as it's just missing from javaconfig.
- Fixes #368
2017-06-09 10:06:39 +01:00
Janne Valkealahti
1dd3790e4a @WithStateMachine may register too many processors
- Change processor registration so that if @WithStateMachine is
  used with 'id', 'name' is skipped because it defaults to 'stateMachine'
  and would cause extra registration.
- Fixes #370
2017-06-08 09:52:49 +01:00
Janne Valkealahti
7fccb6db94 Fix PreStateChange interceptors being called twice for END states
- Backport #367
- Relates to #372
2017-06-08 09:40:09 +01:00
Spring Buildmaster
3eec94fe0c Next development version 2017-05-19 07:45:40 +00:00
Janne Valkealahti
222c405682 Update changelog 2017-05-19 08:05:01 +01:00
Janne Valkealahti
ca02c2cecb Add additinal sync
- Change how some internals in
  AbstractStateMachine are synchronized
  to limit changes for deadlock.
- Relates #359
2017-05-18 08:53:52 +01:00
Janne Valkealahti
4d98b80358 Handle possible deadlock
- 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.
- Fixes #360
2017-05-15 11:39:27 +01:00
Janne Valkealahti
faae270b4b NPE on sendEvent
- Adding null check for current state
- Fixes #359
2017-05-15 11:37:58 +01:00
Janne Valkealahti
cec0d24035 Support actions with transition via choice/junction pseudostate
- 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.
- Fixes #108
2017-05-05 14:40:00 +01:00
Spring Buildmaster
c0cb4dee44 Next development version 2017-05-03 12:36:28 +00:00
Janne Valkealahti
ecbc1eaf49 Update docs copyright year 2017-05-03 10:46:05 +01:00
Janne Valkealahti
48d860fbb3 Update changelog 2017-05-03 10:35:26 +01:00
Janne Valkealahti
37642b1270 Fix post interceptor call
- Now calling post state interceptor with
  correct/same state as pre.
- Fixes #353
2017-05-03 10:27:40 +01:00
Janne Valkealahti
e25c5c6814 Fix action error in anonymous transition
- 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.
- Fixes #344
2017-04-20 09:55:44 +01:00
Janne Valkealahti
33a9c59f39 Prevent debug calls
- Polish to do checks for debug/trace logs
- Fixes #329
2017-03-22 15:52:10 +00:00
Janne Valkealahti
f7a93a7a00 StateMachineContextSerializer handles history and id
- Add missing serialisation for history map and machine id
- Fix possible NPE with extended state
- Fixes #331
- Fixes #333
2017-03-21 11:08:40 +00:00