/** * Create decision state decision state. * * @param flow the flow * @param id the id * @param testExpression the test expression * @param thenStateId the then state id * @param elseStateId the else state id * @return the decision state */ protected DecisionState createDecisionState(final Flow flow, final String id, final String testExpression, final String thenStateId, final String elseStateId) { final DecisionState decisionState = new DecisionState(flow, id); final Expression expression = createExpression(flow, testExpression, Boolean.class); final Transition thenTransition = createTransition(expression, thenStateId); decisionState.getTransitionSet().add(thenTransition); final Transition elseTransition = createTransition("*", elseStateId); decisionState.getTransitionSet().add(elseTransition); return decisionState; }
@Override public DecisionState createDecisionState(final Flow flow, final String id, final String testExpression, final String thenStateId, final String elseStateId) { if (containsFlowState(flow, id)) { LOGGER.trace("Flow [{}] already contains a definition for state id [{}]", flow.getId(), id); return getTransitionableState(flow, id, DecisionState.class); } val decisionState = new DecisionState(flow, id); val expression = createExpression(testExpression, Boolean.class); val thenTransition = createTransition(expression, thenStateId); decisionState.getTransitionSet().add(thenTransition); val elseTransition = createTransition("*", elseStateId); decisionState.getTransitionSet().add(elseTransition); return decisionState; }
public void testElseDecision() { Flow flow = new Flow("flow"); DecisionState state = new DecisionState(flow, "decisionState"); state.getTransitionSet().add(new Transition(new MockTransitionCriteria("foo"), to("invalid"))); state.getTransitionSet().add(new Transition(to("target"))); new EndState(flow, "target"); MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentEvent(new Event(this, "bogus")); state.enter(context); assertFalse(context.getFlowExecutionContext().isActive()); }
public void testCannotDecide() { Flow flow = new Flow("flow"); DecisionState state = new DecisionState(flow, "decisionState"); state.getTransitionSet().add(new Transition(new MockTransitionCriteria("foo"), to("invalid"))); state.getTransitionSet().add(new Transition(new MockTransitionCriteria("bar"), to("invalid"))); MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentEvent(new Event(this, "bogus")); try { state.enter(context); fail("Expected no matching"); } catch (NoMatchingTransitionException e) { } }
public void testIfDecision() { Flow flow = new Flow("flow"); DecisionState state = new DecisionState(flow, "decisionState"); state.getTransitionSet().add(new Transition(new MockTransitionCriteria("foo"), to("target"))); new EndState(flow, "target"); MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentEvent(new Event(this, "foo")); state.enter(context); assertFalse(context.getFlowExecutionContext().isActive()); }