tim@52: /**
tim@52:  *
tim@52:  */
tim@52: package de.intevation.gnv.transition;
tim@52: 
tim@74: import java.io.Serializable;
tim@52: import java.util.Collection;
tim@52: 
tim@52: import org.w3c.dom.Document;
tim@52: import org.w3c.dom.Node;
tim@52: 
tim@117: import de.intevation.artifacts.CallMeta;
tim@57: import de.intevation.gnv.transition.exception.TransitionException;
tim@57: 
tim@52: /**
tim@52:  * @author Tim Englich <tim.englich@intevation.de>
tim@171:  * 
tim@52:  */
tim@171: public interface Transition extends Serializable {
tim@171: 
tim@52:     public void setup(Node configuration);
tim@171: 
tim@52:     public Collection<String> reachableTransitions();
tim@171: 
tim@58:     public boolean isTransitionReachable(String transitionID);
tim@171: 
tim@52:     public String getID();
tim@171: 
tim@53:     public String getDescription();
tim@171: 
tim@52:     public boolean validate();
tim@171: 
tim@207:     public void describe(Document document, Node rootNode, CallMeta callMeta, String uuid);
tim@171: 
tim@52:     public void setParent(Transition transition);
tim@171: 
tim@52:     public Transition getParent();
tim@171: 
tim@55:     public Collection<InputValue> getRequiredInputValues();
tim@171: 
tim@207:     public void putInputData(Collection<InputData> inputData, 
tim@207:                              String uuid)
tim@207:                                          throws TransitionException;
tim@171: 
tim@59:     public Collection<InputData> getInputData() throws TransitionException;
tim@171: 
tim@171:     public void advance(String uuid, CallMeta callMeta)
tim@171:                                                        throws TransitionException;
tim@171: 
tim@52: }