List of usage examples for org.springframework.statemachine StateMachine getState
State<S, E> getState();
From source file:demo.web.StateMachineController.java
@PostConstruct public void setup() { stateMachine.addStateListener(new StateMachineListenerAdapter<States, Events>() { @Override/* w ww. j a v a 2s .com*/ public void stateEntered(State<States, Events> state) { StateMachineMessage message = new StateMachineMessage(); message.setMessage("Enter state " + state.getId().toString()); simpMessagingTemplate.convertAndSend("/topic/sm.message", message); } @Override public void stateExited(State<States, Events> state) { StateMachineMessage message = new StateMachineMessage(); message.setMessage("Exit state " + state.getId().toString()); simpMessagingTemplate.convertAndSend("/topic/sm.message", message); } @Override public void stateChanged(State<States, Events> from, State<States, Events> to) { Map<Object, Object> variables = stateMachine.getExtendedState().getVariables(); ArrayList<StateMachineEvent> list = new ArrayList<StateMachineEvent>(); for (States state : stateMachine.getState().getIds()) { list.add(new StateMachineEvent(state.toString())); } simpMessagingTemplate.convertAndSend("/topic/sm.states", list); simpMessagingTemplate.convertAndSend("/topic/sm.variables", variables); } @Override public void transitionEnded(Transition<States, Events> transition) { if (transition != null && transition.getKind() == TransitionKind.INTERNAL) { Map<Object, Object> variables = stateMachine.getExtendedState().getVariables(); simpMessagingTemplate.convertAndSend("/topic/sm.variables", variables); } } @Override public void stateMachineError(StateMachine<States, Events> stateMachine, Exception exception) { handleStateMachineError(new StateMachineException("Received error from machine", exception)); } }); stateMachineEnsemble.addEnsembleListener(new EnsembleListenerAdapter<States, Events>() { @Override public void ensembleLeaderGranted(StateMachine<States, Events> stateMachine) { StateMachineMessage message = new StateMachineMessage(); message.setMessage("Leader granted " + stateMachine.getUuid().toString()); simpMessagingTemplate.convertAndSend("/topic/sm.message", message); } @Override public void ensembleLeaderRevoked(StateMachine<States, Events> stateMachine) { StateMachineMessage message = new StateMachineMessage(); message.setMessage("Leader revoked " + stateMachine.getUuid().toString()); simpMessagingTemplate.convertAndSend("/topic/sm.message", message); } }); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testRunOnceSimpleNoFailures() throws InterruptedException { TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable()) .task("3", sleepRunnable()).build(); TestListener listener = new TestListener(); listener.reset(9, 0, 0);/*from w w w . ja v a 2s.c om*/ StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); handler.runTasks(); assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(9)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY)); Map<Object, Object> variables = machine.getExtendedState().getVariables(); assertThat(variables.size(), is(3)); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testRunFail() throws InterruptedException { TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable()) .task("3", failRunnable()).build(); TestListener listener = new TestListener(); listener.reset(11, 0, 0);//ww w .j a v a 2 s . c om StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); handler.runTasks(); assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(11)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_ERROR, TasksHandler.STATE_MANUAL)); Map<Object, Object> variables = machine.getExtendedState().getVariables(); assertThat(variables.size(), is(3)); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testRunFailAndFixAndContinue() throws InterruptedException { TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable()) .task("3", failRunnable()).build(); TestListener listener = new TestListener(); listener.reset(11, 0, 0);//from w w w. j a va 2 s . c o m StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); handler.runTasks(); assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(11)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_ERROR, TasksHandler.STATE_MANUAL)); listener.reset(0, 0, 0, 0, 1); handler.fixCurrentProblems(); assertThat(listener.extendedStateChangedLatch.await(1, TimeUnit.SECONDS), is(true)); listener.reset(1, 0, 0); handler.continueFromError(); assertThat(listener.stateChangedLatch.await(1, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(1)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY)); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testRunFailAndAutomaticFix() throws InterruptedException { TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable()) .task("3", failRunnable()).build(); TestTasksListener tasksListener = new TestTasksListener(); tasksListener.fix = true;/*from w w w. j a v a 2 s .c o m*/ handler.addTasksListener(tasksListener); TestListener listener = new TestListener(); listener.reset(1, 0, 0); StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(1)); listener.reset(10, 0, 0); handler.runTasks(); assertThat(listener.stateChangedLatch.await(4, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(10)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY)); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testDagSingleRoot() throws InterruptedException { TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("1", "12", sleepRunnable()) .task("1", "13", sleepRunnable()).build(); TestListener listener = new TestListener(); listener.reset(9, 0, 0);/*w w w . j a v a 2s . co m*/ StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); handler.runTasks(); assertThat(listener.stateChangedLatch.await(12, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(9)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY)); Map<Object, Object> variables = machine.getExtendedState().getVariables(); assertThat(variables.size(), is(3)); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testDagMultiRoot() throws InterruptedException { TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("1", "12", sleepRunnable()) .task("1", "13", sleepRunnable()).task("2", sleepRunnable()).task("2", "22", sleepRunnable()) .task("2", "23", sleepRunnable()).task("3", sleepRunnable()).task("3", "32", sleepRunnable()) .task("3", "33", sleepRunnable()).build(); TestListener listener = new TestListener(); StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener);/* ww w.ja v a 2 s.c o m*/ listener.reset(1, 0, 0); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(1)); listener.reset(20, 0, 0); handler.runTasks(); assertThat(listener.stateChangedLatch.await(10, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(20)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY)); Map<Object, Object> variables = machine.getExtendedState().getVariables(); assertThat(variables.size(), is(9)); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testEvents1() throws InterruptedException { TestTasksListener tasksListener = new TestTasksListener(); TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable()) .task("3", sleepRunnable()).listener(tasksListener).build(); TestListener listener = new TestListener(); listener.reset(9, 0, 0);/*from w w w .j a v a 2 s .c o m*/ StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); tasksListener.reset(1, 0, 3, 3, 0, 3, 1, 0); handler.runTasks(); assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(9)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY)); assertThat(tasksListener.onTasksStartedLatch.await(1, TimeUnit.SECONDS), is(true)); assertThat(tasksListener.onTasksStarted, is(1)); assertThat(tasksListener.onTaskPreExecuteLatch.await(3, TimeUnit.SECONDS), is(true)); assertThat(tasksListener.onTaskPreExecute, is(3)); assertThat(tasksListener.onTaskPostExecuteLatch.await(3, TimeUnit.SECONDS), is(true)); assertThat(tasksListener.onTaskPostExecute, is(3)); assertThat(tasksListener.onTaskFailed, is(0)); assertThat(tasksListener.onTaskSuccessLatch.await(3, TimeUnit.SECONDS), is(true)); assertThat(tasksListener.onTaskSuccess, is(3)); assertThat(tasksListener.onTasksSuccessLatch.await(1, TimeUnit.SECONDS), is(true)); assertThat(tasksListener.onTasksSuccess, is(1)); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testEvents3() throws InterruptedException { TestTasksListener tasksListener = new TestTasksListener(); TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable()) .task("3", failRunnable()).listener(tasksListener).build(); TestListener listener = new TestListener(); listener.reset(11, 0, 0);/* w w w . j av a2 s.co m*/ StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); tasksListener.reset(0, 1, 0, 0, 0, 0, 0, 0); handler.runTasks(); assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(11)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_ERROR, TasksHandler.STATE_MANUAL)); listener.reset(1, 0, 0); handler.fixCurrentProblems(); handler.continueFromError(); assertThat(listener.stateChangedLatch.await(1, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(1)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY)); assertThat(tasksListener.onTasksContinueLatch.await(1, TimeUnit.SECONDS), is(true)); assertThat(tasksListener.onTasksContinue, is(1)); }
From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java
@Test public void testPersist1() throws InterruptedException { TestStateMachinePersist persist = new TestStateMachinePersist(); TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable()) .task("3", sleepRunnable()).persist(persist).build(); TestListener listener = new TestListener(); listener.reset(9, 0, 0);/*from ww w . ja va 2 s .com*/ StateMachine<String, String> machine = handler.getStateMachine(); machine.addStateListener(listener); machine.start(); assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true)); persist.reset(5); handler.runTasks(); assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true)); assertThat(listener.stateChangedCount, is(9)); assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY)); Map<Object, Object> variables = machine.getExtendedState().getVariables(); assertThat(variables.size(), is(3)); assertThat(persist.writeLatch.await(4, TimeUnit.SECONDS), is(true)); assertThat(persist.contexts.size(), is(5)); for (StateMachineContext<String, String> context : persist.getContexts()) { if (context.getState() == "TASKS") { assertThat(context.getChilds().size(), is(3)); } else { assertThat(context.getChilds().size(), is(0)); } } }