- Issue39 MVEL is not enough to discriminate transitions
- Issue40 java.util.NoSuchElementException unregistering a TransitionEndListener
- Issue41 POM creates some problem when building
- Issue42 Javadoc errors prevented the javadoc jar file to be created
- [Breaking Change] Correct typo in StateMachineData
- Save start context with state machine data
- Issue 31 - Crash on starting FSM with action attached to entering initial state
- Issue 33 - Deep History Improvement
- Fix crash on creating state machine builder on Android
- Fix hierarchical state machine transition incorrectly
state D, state E and its child state E1, when state D->E1, the expected behavior would be "leftD.transitD2E1.enterE.enterE1" - Fix serval typos and add a test case about nested hierarchy state transition issue
- Remove deprecated class StringConverter, StateMachineProvider
- Simplify state machine builder fluent API - support multiple transition build
- StateMachineBuilder.defineNoInitSequentialStatesOn allows to define sequential states without initial state
- Issue 18 - Add sample code for how to implement decision state
- Issue 20 - Add OSGI support
- Support remote monitor and configure state machine instance
- Rename state machine configuration methods
- Update project dependency Guava version 16.0.1
- Fixed Issue 16 - timed state behaves strangely when timeInterval = 0
- Fixed Issue 17 - nested states and internal transitions do not work together well
- Fixed Issue 14 - Event fired against wrong state machine when FSMs collaborate
- Fix action execution position bug
- Support custom listener order and fix listener order caused issue
- Support fire event immediately, StateMachine.fireImmediate
- Fix state machine initial get current state issue
- Support method extension from fluent API and annotation
- Remove deprecated state machine intercepter classes
- Deprecate StateMachineProvider
- Support postConstruct after state machine initialized
- Remove deprecated exception handling method in AbstractStateMachine
- Add API StateMachine.canAccept(E event)
- Improve state machine create exception handling
- Breaking Change: Reimplement StateMachinConfiguration to simplify its usage
- More easy way to enable state machine logger by set state machine debug configure to true
- Allow configuration to be set on state machine builder
- Make both StateMachineData.Reader and StateMachineData.Writer serializable
- Support state machine behavior configuration
- Breaking Change: Removed tedious state machine constructor from AbstractStateMachine. Please remove extended constructor in your state machine implementation class.
- Action execution bug fixed. State exit actions(both sync/async) should be all executed successfully then begin transition actions, so as the state entry actions.
- Add debug loggings while action execution.
- Remove deprecated StateMachineWithoutContext Class and related artifacts
- Remove deprecated OnActionExecute annotation
- Support state machine data serialize/deserialize by ObjectSerializableSupport
- Add API StateMachine.getLastException
- Deprecate AbstractStateMachine.afterTransitionCausedException(TransitionException e, ...)
- Fix bugs around linked state feature
- Support timeout for asynchronized action
- Improve state transition performance [Issue 11][11] (Thanks to Jeremy)
- Add StateMachinePerformanceMonitor to help analysing performance issue
- Fix data correctness issues including test event, data isolation during transition and so on
- Implement State Machine Importer feature
- Add API ImmutableState.getAcceptableEvents()
- Add API StateMachine.exportXMLDefinition(boolean) to simplify state machine export usage
- Remove UntypedStateMachineBuilder.newUntypedStateMachine(Object, Class) method
- Deprecate AbstractCondition, replaced with AnonymousCondition
- Deprecate AnonymousUntypedAction, replaced with UntypedAnonymousAction
- Support asynchronized method call execution
- Support asynchronized declarative event dispatch
- Support timed state
- Allow to log per action method call execution time
- Add Before/After action executed event listener(@OnBeforeActionExecuted/@OnAfterActionExecuted)
- Deprecate OnActionExecute annotation
- Deprecate UntypedStateMachineBuilder.newUntypedStateMachine(Object, Class) method
- Breaking Change: Fix a typo StateMachineParamters -> StateMachineParameters
- Support weighted action
- Breaking Change: Add name() and weight() to Action interface(use AnonymousAction instead)
- Update SCXML export content
- Improve exception handling logic including error message
- Deprecate StateMachineIntercepter and StateMachineWithoutContext
- Support prioritized transition
- Provide thread-safe implementation of StateMachine
- Update current states of state machine after actions all executed successfully
- Support transition condition and action defined in MVEL script
- Breaking Change: Add name() to Condition interface
- Add UntypedStateMachine to simplify usage
- Support build method call action through transition builder API
- Add debug log when method call cannot find
- Support add declarative event listener
- Add StateMachineLogger to easy monitor state machine execution status
- Update documentation
- Support test State machine transition result
- Add StateMachineWithoutContext class to simplify state machine usage without need of context
- Bug fixed for state machine data dump
- Support save/load state machine data
- Add to StateMachineBuilderFactory simplify StateMachineBuilder creation
- Deprecate StateMachineBuilderImpl.newStateMachineBuilder(...) methods
- Support linked state which also called substatemachine state
- Rename addListener/removeListener of StateMachine to more specific name add*Listener/remove*Listener
- Simplify converter registration for String and Enumeration type