package org.squirrelframework.foundation.fsm; import java.util.List; /** * This class will hold all the transition result including result of nested transitions. * * @author Henry.He * * @param <T> state machine type * @param <S> state type * @param <E> event type * @param <C> context type */ public interface TransitionResult<T extends StateMachine<T, S, E, C>, S, E, C> { /** * If any transition including all nested transitions is accepted, the parent transition is * accepted accordingly. * @return true if transition is accepted; false if transition result is declined */ boolean isAccepted(); /** * If all transitions including all nested transitions is declined, the parent transition is * declined accordingly. * @return false if transition is accepted; true if transition result is declined */ boolean isDeclined(); /** * Set transition accepted or not. * @param accepted * @return transition result */ TransitionResult<T, S, E, C> setAccepted(boolean accepted); /** * @return target state of transition */ ImmutableState<T, S, E, C> getTargetState(); /** * Set target state of transition * @param targetState * @return transition result */ TransitionResult<T, S, E, C> setTargetState(ImmutableState<T, S, E, C> targetState); /** * @return parent transition result */ TransitionResult<T, S, E, C> getParentResut(); /** * Set parent transition result * @param result * @return transition result */ TransitionResult<T, S, E, C> setParent(TransitionResult<T, S, E, C> result); /** * @return nested transition result of current transition */ List<TransitionResult<T, S, E, C>> getSubResults(); /** * @return all the accepted transition result of current transition */ List<TransitionResult<T, S, E, C>> getAcceptedResults(); }