class="java"> @StateMachine static interface OrderLifecycle { @StateSet static interface States { @Initial @Function(transition = Transitions.Start.class, value = Started.class) static interface Created {} @CompositeState @Function(transition = Transitions.Cancel.class, value = Canceled.class) static interface Started { @StateSet static interface SubStates { @Initial @Function(transition = OrderLifecycle.States.Started.SubTransitions.DoProduce.class, value = Producing.class) static interface OrderCreated {} @Function(transition = OrderLifecycle.States.Started.SubTransitions.DoDeliver.class, value = Delivering.class) static interface Producing {} @Function(transition = OrderLifecycle.States.Started.SubTransitions.ConfirmComplete.class, value = Done.class) static interface Delivering {} @End @ShortCut(OrderLifecycle.States.Finished.class) static interface Done {} } @TransitionSet static interface SubTransitions { static interface DoProduce {} static interface DoDeliver {} static interface ConfirmComplete {} } } @End static interface Finished {} @End static interface Canceled {} } @TransitionSet static interface Transitions { static interface Start {} static interface Cancel {} } } public abstract static class ProductBase extends ReactiveObject {} @LifecycleMeta(OrderLifecycle.class) public static class ProductOrder extends ProductBase { public ProductOrder() { initialState(OrderLifecycle.States.Created.class.getSimpleName()); } @Transition public void start() {} @Transition public void cancel() {} @Transition public void doProduce() {} @Transition public void doDeliver() {} @Transition public void confirmComplete() {} }
?