Examples of UntypedStateMachineBuilder


Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

        }
    }
   
    @Test
    public void testIssue17() {
        final UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(Issue17StateMachine.class);
        builder.defineSequentialStatesOn(Issue17State.A, Issue17State.A1, Issue17State.A2);
        builder.internalTransition().within(Issue17State.A).on(Issue17Event.SAME).callMethod("onSameWithinA");
        builder.localTransition().from(Issue17State.A1).to(Issue17State.A2).on(Issue17Event.NEXT).callMethod("onA1ToA2");
       
        Issue17StateMachine fsm = builder.newUntypedStateMachine(Issue17State.A);
        fsm.addTransitionDeclinedListener(new TransitionDeclinedListener<UntypedStateMachine, Object, Object, Object>() {
            @Override
            public void transitionDeclined(
                    TransitionDeclinedEvent<UntypedStateMachine, Object, Object, Object> event) {
                System.out.println("Transition declined from state "+event.getSourceState()+" on event "+event.getCause());
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

    }
   
    @Test
    public void testIssue16() {
        final AtomicBoolean timedEventTriggered = new AtomicBoolean(false);
        final UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(Issue16StateMachine.class);
        builder.defineTimedState(Issue16State.A, 100, 0, Issue16Event.A2A, null);
        builder.transition().from(Issue16State.A).to(Issue16State.A).on(Issue16Event.A2A);
        builder.transition().from(Issue16State.A).to(Issue16State.B).on(Issue16Event.A2B);
       
        Issue16StateMachine fsm = builder.newUntypedStateMachine(Issue16State.A);
        fsm.addTransitionDeclinedListener(new TransitionDeclinedListener<UntypedStateMachine, Object, Object, Object>() {
            @Override
            public void transitionDeclined(TransitionDeclinedEvent<UntypedStateMachine, Object, Object, Object> event) {
                System.out.println("Transition from "+event.getSourceState()+" on event "+event.getCause()+" is declined.");
                timedEventTriggered.set(true);
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

        }
    }

    @Test
    public void testIssue18() {
        final UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(Issue18StateMachine.class);
        builder.externalTransition(10).from(Issue18State.A).to(Issue18State.B).on(Issue18Event.GO).
                when(new CounterCondition(5, "Count_5_A")).callMethod("onA2B");
        builder.internalTransition(1).within(Issue18State.A).on(Issue18Event.GO).callMethod("onA2A");

        builder.externalTransition(10).from(Issue18State.B).to(Issue18State.A).on(Issue18Event.GO).
                when(new CounterCondition(5, "Count_5_B")).callMethod("onB2A");
        builder.internalTransition(1).within(Issue18State.B).on(Issue18Event.GO).callMethod("onB2B");

        Issue18StateMachine fsm = builder.newUntypedStateMachine(Issue18State.A);
        fsm.start();
        fsm.fire(Issue18Event.GO);
        fsm.fire(Issue18Event.GO);
        fsm.fire(Issue18Event.GO);
        fsm.fire(Issue18Event.GO);
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

        assertEquals(FSMEvent.ToA, ctxBtoA.lastEvent);
        assertEquals("A", fsmBtoA.getCurrentState());
    }

    private void createFsmAtoB() {
        UntypedStateMachineBuilder fsmAtoB_builder = StateMachineBuilderFactory.create(StateMachineSample.class);

        // In transitioning from A to B trigger other FSM (fsmBtoA) to
        // transition
        // to A...
        fsmAtoB_builder.externalTransition().from("A").to("B").on(FSMEvent.ToB)
                .perform(storeEventAndFire(fsmBtoA, ctxBtoA, FSMEvent.ToA));
        fsmAtoB_builder.externalTransition().from("B").to("A").on(FSMEvent.ToA).perform(storeState());

        fsmAtoB = fsmAtoB_builder.newStateMachine("A");
    }
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

        fsmAtoB = fsmAtoB_builder.newStateMachine("A");
    }

    private void createFsmBtoA() {
        UntypedStateMachineBuilder fsmBtoA_builder = StateMachineBuilderFactory.create(StateMachineSample.class);
        fsmBtoA_builder.externalTransition().from("A").to("B").on(FSMEvent.ToB).perform(storeState());
        fsmBtoA_builder.externalTransition().from("B").to("A").on(FSMEvent.ToA).perform(storeState());

        fsmBtoA = fsmBtoA_builder.newStateMachine("B");
    }
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

public class Main {
   
    public static void main(String[] args) {
        final SnakeModel gameModel = new SnakeModel();
        UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(SnakeController.class);
        builder.setStateMachineConfiguration(StateMachineConfiguration.create().enableRemoteMonitor(true));
       
        // define timed state
        builder.defineTimedState(SnakeState.UP, 0, GameConfigure.FRAME_TIME, SnakeEvent.MOVE_AHEAD, gameModel);
        builder.defineTimedState(SnakeState.DOWN, 0, GameConfigure.FRAME_TIME, SnakeEvent.MOVE_AHEAD, gameModel);
        builder.defineTimedState(SnakeState.RIGHT, 0, GameConfigure.FRAME_TIME, SnakeEvent.MOVE_AHEAD, gameModel);
        builder.defineTimedState(SnakeState.LEFT, 0, GameConfigure.FRAME_TIME, SnakeEvent.MOVE_AHEAD, gameModel);
       
        SnakeController controller = builder.newUntypedStateMachine(SnakeState.NEW);
        final SnakeGame game = new SnakeGame(controller, gameModel);
        controller.addTransitionCompleteListener(new StateMachine.TransitionCompleteListener<UntypedStateMachine, Object, Object, Object>() {
            @Override
            public void transitionComplete(TransitionCompleteEvent<UntypedStateMachine, Object, Object, Object> event) {
                game.repaint();
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

        }
    }
   
    public static void main(String[] args) {
        // 3. Build State Transitions
        UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(StateMachineSample.class);
        builder.externalTransition().from("A").to("B").on(FSMEvent.ToB).callMethod("fromAToB");
        builder.onEntry("B").callMethod("ontoB");
       
        // 4. Use State Machine
        UntypedStateMachine fsm = builder.newStateMachine("A");
        fsm.fire(FSMEvent.ToB, 10);
       
        System.out.println("Current state is "+fsm.getCurrentState());
    }
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

        }
    }

    DecisionStateMachine buildStateMachine() {
        DecisionStateMachine fsm;
        final UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(DecisionStateMachine.class);
        final DecisionMaker decisionMaker = new DecisionMaker("DecisionMaker");

        // _A is decision state for A and it is invisible to user
        builder.defineNoInitSequentialStatesOn(DecisionState.A, DecisionState._A);
        builder.onEntry(DecisionState.A).callMethod("enterA");
        builder.onExit(DecisionState.A).callMethod("leftA");
        builder.onEntry(DecisionState._A).perform(decisionMaker);
        builder.onExit(DecisionState._A).perform(decisionMaker);

        // transition to left state A are all started with _A which means all transition cause exit state A must be router by _A
        builder.transitions().from(DecisionState._A).toAmong(DecisionState.B, DecisionState.C, DecisionState.D).
                onEach(DecisionEvent.A2B, DecisionEvent.A2C, DecisionEvent.A2D).callMethod("a2b|a2c|_");

        builder.transitions().fromAmong(DecisionState.B, DecisionState.C, DecisionState.D).
                to(DecisionState.A).on(DecisionEvent.ANY2A);

        // use local transition avoid invoking state A exit functions when entering its decision state
        builder.localTransitions().between(DecisionState.A).and(DecisionState._A).
                onMutual(DecisionEvent.A2ANY, DecisionEvent.ANY2A).
                perform(Lists.newArrayList(decisionMaker, null));

        fsm = builder.newUntypedStateMachine(DecisionState.A);
        return fsm;
    }
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

    public void exportAndImportATMStateMachine() {
        SCXMLVisitor visitor = SquirrelProvider.getInstance().newInstance(SCXMLVisitor.class);
        stateMachine.accept(visitor);
        // visitor.convertSCXMLFile("ATMStateMachine", true);
        String xmlDef = visitor.getScxml(false);
        UntypedStateMachineBuilder builder = new UntypedStateMachineImporter().importDefinition(xmlDef);
       
        ATMStateMachine stateMachine = builder.newAnyStateMachine(ATMState.Idle);
        stateMachine.start();
        assertThat(stateMachine.consumeLog(), is(equalTo("entryIdle")));
        assertThat(stateMachine.getCurrentState(), is(equalTo(ATMState.Idle)));
       
        stateMachine.fire("Connected");
View Full Code Here

Examples of org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder

import org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder;

public class DeadLockTest {
   
    private UntypedStateMachine[] getTestingFSMInstances() {
        UntypedStateMachineBuilder builder1 = StateMachineBuilderFactory.create(ConcurrentSimpleStateMachine.class);
        builder1.transition().from("A").to("B").on("FIRST").perform(
                new AnonymousAction<UntypedStateMachine, Object, Object, Object>() {
            @Override
            public void execute(Object from, Object to, Object event,
                    Object context, UntypedStateMachine stateMachine) {
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                UntypedStateMachine fsm2 = (UntypedStateMachine)context;
                System.out.println("fsm2 current state: "+fsm2.getCurrentState());
            }
        });
       
        UntypedStateMachineBuilder builder2 = StateMachineBuilderFactory.create(ConcurrentSimpleStateMachine.class);
        builder2.transition().from("C").to("D").on("SECOND").perform(
                new AnonymousAction<UntypedStateMachine, Object, Object, Object>() {
            @Override
            public void execute(Object from, Object to, Object event,
                    Object context, UntypedStateMachine stateMachine) {
                UntypedStateMachine fsm1 = (UntypedStateMachine)context;
                System.out.println("fsm1 current state: "+fsm1.getCurrentState());
            }
        });
       
        final UntypedStateMachine fsm1 = builder1.newStateMachine("A");
        fsm1.start();
        final UntypedStateMachine fsm2 = builder2.newStateMachine("C");
        fsm2.start();
       
        return new UntypedStateMachine[]{fsm1, fsm2};
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.