All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.squirrelframework.foundation.fsm.TransitionResult Maven / Gradle / Ivy

Go to download

foundation module of squirrel framework which provided event driven infrastructure and a finite state machine implementation.

There is a newer version: 0.3.10
Show newest version
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  state machine type
 * @param  state type
 * @param  event type
 * @param  context type
 */
public interface TransitionResult, 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 setAccepted(boolean accepted);
	
	/**
	 * @return target state of transition
	 */
	ImmutableState getTargetState();
	
	/**
	 * Set target state of transition
	 * @param targetState
	 * @return transition result
	 */
	TransitionResult setTargetState(ImmutableState targetState);
	
	/**
	 * @return parent transition result
	 */
	TransitionResult getParentResut();
	
	/**
	 * Set parent transition result
	 * @param result
	 * @return transition result
	 */
	TransitionResult setParent(TransitionResult result);
	
	/**
	 * @return nested transition result of current transition
	 */
	List> getSubResults();
	
	/**
	 * @return all the accepted transition result of current transition
	 */
	List> getAcceptedResults();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy