package ee.telekom.workflow.graph; /** * A {@link Token} points to a {@link Node} in a {@link Graph}. The set of active tokens in a {@link GraphInstance} mark the graph instance's flow state. */ public interface Token { /** * Returns the token's id. The id is unique among the token's in the * containing graph instance. * * @return the token's id */ int getId(); /** * Returns the {@link Node} that this token is pointing to. * * @return the node that this token is pointing to */ Node getNode(); /** * Sets the {@link Node} that the token is pointing to. * * @param node * the new node to point to */ void setNode(Node node); /** * Returns the {@link GraphInstance} that this token belongs to. * * @return the graph instance that this token belongs to */ GraphInstance getInstance(); /** * Returns the parent token which was involved in creating this token. If * this node is a {@link GraphInstance}'s main token (the token that begins * executing at the start node), <code>null</code> will be returned. * * @return the token's parent token or <code>null</code> for a main token */ Token getParent(); /** * Marks this token as inactive, in the sense that it no longer represents * an active part of the workflow instance. Once a token is marked inactive, * it is generally only of historical interest. * * A token may be marked inactive because its execution has completed or it * has been cancelled. */ void markInactive(); /** * Returns whether the token is active. * * @return true, if the token is active */ boolean isActive(); }