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

ee.telekom.workflow.graph.Graph Maven / Gradle / Ivy

package ee.telekom.workflow.graph;

import java.util.Collection;
import java.util.List;

/**
 * A {@link Graph} corresponds to a workflow definition. It has a set of
 * {@link Node}s, which correspond to actions that need to be taken for the
 * workflow to complete. It also has a set of {@link Transition}s which define
 * the order of execution between the nodes.
 */
public interface Graph {

	/**
	 * Returns the graph's name, which should be unique. Different versions with
	 * the same name may exist, but each of them should have a unique version
	 * number.
	 * 
	 * @return the graph's name
	 */
	String getName();

	/**
	 * Returns the version number of the graph. Different versions of a graph
	 * may exists. Newer versions of the graph should have higher version
	 * numbers than older versions. A graph can be uniquely identified by name
	 * and version number.
	 * 
	 * @return the graph's version
	 */
	int getVersion();
	
	boolean getKeepHistory();

	/**
	 * Returns the graph's start node. The start node is the node where to start
	 * execution when creating a new {@link GraphInstance}. A non-empty graph must define
	 * a start node.
	 * 
	 * @return the node at which to start a workflow instance
	 */
	Node getStartNode();

	/**
	 * Returns the graph's node with the given id. Every node within a graph
	 * must be have a unique id.
	 * 
	 * @return the graph's node with the given id or null if the
	 *         graph does not contain a node with the given id.
	 */
	Node getNode(int id);

	/**
	 * Returns the list of all nodes in the graph.
	 * 
	 * @return list of all nodes in the graph
	 */
	Collection getNodes();

	/**
	 * Returns the list of all transitions in the graph.
	 * 
	 * @return list of all transitions in the graph
	 */
	List getTransitions();

	/**
	 * Returns a list of transitions which have the given node as their starting
	 * point. The list may be empty but will never be null.
	 * 
	 * @param node
	 *            A node belonging to this graph
	 * @return A list of transitions
	 */
	List getOutputTransitions(Node node);

	/**
	 * Returns the transition which has the given node as their starting point
	 * and the given name, or null if no such transition exists.
	 * 
	 * @param node
	 *            A node belonging to this graph
	 * @param name
	 *            A transition name
	 * @return A list of transitions
	 */
	Transition getOutputTransitions(Node node, String name);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy