org.jbpt.petri.wftree.IWFTree Maven / Gradle / Ivy
Show all versions of jbpt-petri Show documentation
package org.jbpt.petri.wftree;
import java.util.Set;
import org.jbpt.algo.tree.rpst.IRPST;
import org.jbpt.algo.tree.rpst.IRPSTNode;
import org.jbpt.petri.IFlow;
import org.jbpt.petri.INode;
import org.jbpt.petri.IPlace;
import org.jbpt.petri.ITransition;
/**
* Interface to a WF-tree.
*
* WF-tree was proposed in:
* Matthias Weidlich, Artem Polyvyanyy, Jan Mendling, and Mathias Weske.
* Causal Behavioural Profiles - Efficient Computation, Applications, and Evaluation.
* Fundamenta Informaticae (FUIN) 113(3-4): 399-435 (2011)
*
* @param Flow template.
* @param Node template.
* @param Place template.
* @param Transition template.
*
* @author Artem Polyvyanyy
*/
public interface IWFTree, N extends INode, P extends IPlace, T extends ITransition> extends IRPST {
/**
* Get refined type of a WF-tree bond node.
*
* WFTreeBondType.TRANSITION_BORDERED if entry and exit are transitions.
* WFTreeBondType.PLACE_BORDERED if entry and exit are places.
* WFTreeBondType.LOOP if entry and exit are places and entry of some child is an exit of another child.
* WFTreeBondType.UNDEFINED none of the above.
*
* @param node Node of this WF-tree.
* @return Refined type of this WF-tree bond node; WFTreeBondType.UNDEFINED if the type cannot be determined.
*/
public WFTreeBondType getRefinedBondType(IRPSTNode node);
/**
* Get loop orientation type of a WF-tree node.
* Loop orientation type is defined if parent of the given node is of type loop.
*
* WFTreeLoopOrientationType.FORWAD if entry of the given node is equal to the entry of the parent loop node.
* WFTreeLoopOrientationType.BACKWARD if if entry of the given node is equal to the exit of the parent loop node.
*
* @param node Node of this WF-tree.
* @return Loop orientation type of the given node; WFTreeLoopOrientationType.UNDEFINED if the type cannot be determined.
*/
public WFTreeLoopOrientationType getLoopOrientationType(IRPSTNode node);
/**
* Get RPST nodes of a given {@link WFTreeBondType} type.
*
* @param type WF-tree bond type.
* @return Set of RPST nodes of the given {@link WFTreeBondType} type.
*/
public Set> getRPSTNodes(WFTreeBondType type);
}