ix.icore.process
Class PNode

java.lang.Object
  extended by ix.icore.process.TimePoint
      extended by ix.icore.process.PNode
All Implemented Interfaces:
HasStatus
Direct Known Subclasses:
AgendaItem

public abstract class PNode
extends TimePoint
implements HasStatus

A node that represents an action in a process. This class supports expansion into subactions and the propagation of status changes, thus acting as a simple process model / simulator and expansion planner.


Nested Class Summary
 class PNode.MakeVarIfUnbound
           
 
Field Summary
protected  PNodeEnd beginEnd
           
static boolean computeStatus
           
protected  PNodeEnd endEnd
           
protected  int level
           
 ProcessModelManager modelManager
           
protected  PNode parent
           
 
Fields inherited from class ix.icore.process.TimePoint
tpn_mark
 
Constructor Summary
PNode(PNode parent)
           
 
Method Summary
 void addChild(PNode child, PNode after)
           
static void allComputeStatus(java.util.List l)
           
static boolean allHaveStatus(java.util.List l, Status status)
           
 void assignStatus(Status status)
           
 void computeStatus()
          computeStatus() is used to change the status of related nodes when a node changes its status.
 void ensureChildrenLinkedToParent()
           
 java.util.Map expandOneLevel(Refinement sourceRefinement, MatchEnv env)
          Creates child nodes as specified by a refinement and installs ordering links.
 PNodeEnd getBegin()
           
 java.util.List getChildren()
           
 PNodeEnd getEnd()
           
 int getLevel()
           
 ProcessModelManager getModelManager()
           
 PNode getParentPNode()
           
abstract  LList getPattern()
           
 Refinement getRefinement()
           
abstract  Status getStatus()
           
 java.util.Map getVarTable()
           
 boolean isAncestorOf(PNode n)
           
 boolean isDescendentOf(PNode n)
           
 boolean isExpanded()
           
 boolean isSiblingOf(PNode n)
           
protected abstract  PNode makePNode(PNode parent, LList pattern)
           
 void processOrderings(java.util.List orderings, java.util.Map nameToChildMap)
           
 void setChildren(java.util.List l)
           
 void setRefinement(Refinement r)
           
 void setStatus(Status status)
          Changes the node's status and then that of related nodes.
 void setVarTable(java.util.Map vt)
           
 Status statusFromNodeEnds()
           
 void unlink()
           
 
Methods inherited from class ix.icore.process.TimePoint
addPostConstraint, addPreConstraint, getMaxTime, getMinTime, getPostConstraints, getPreConstraints, hasUnboundedMax, removePostConstraint, removePreConstraint, setMaxTime, setMinTime
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

computeStatus

public static boolean computeStatus

modelManager

public ProcessModelManager modelManager

level

protected int level

parent

protected PNode parent

beginEnd

protected PNodeEnd beginEnd

endEnd

protected PNodeEnd endEnd
Constructor Detail

PNode

public PNode(PNode parent)
Method Detail

getPattern

public abstract LList getPattern()

getLevel

public int getLevel()

getBegin

public PNodeEnd getBegin()

getEnd

public PNodeEnd getEnd()

getParentPNode

public PNode getParentPNode()

getChildren

public java.util.List getChildren()

setChildren

public void setChildren(java.util.List l)

getModelManager

public ProcessModelManager getModelManager()

getVarTable

public java.util.Map getVarTable()

setVarTable

public void setVarTable(java.util.Map vt)

getRefinement

public Refinement getRefinement()

setRefinement

public void setRefinement(Refinement r)

getStatus

public abstract Status getStatus()
Specified by:
getStatus in interface HasStatus

isSiblingOf

public boolean isSiblingOf(PNode n)

isAncestorOf

public boolean isAncestorOf(PNode n)

isDescendentOf

public boolean isDescendentOf(PNode n)

isExpanded

public boolean isExpanded()

unlink

public void unlink()

addChild

public void addChild(PNode child,
                     PNode after)

expandOneLevel

public java.util.Map expandOneLevel(Refinement sourceRefinement,
                                    MatchEnv env)
Creates child nodes as specified by a refinement and installs ordering links. The subnodes are constructed by a factory method so that they can be instances of a subclass of Node and to allow other, related objects to be constructed at the same time.

Returns:
a map from the ids of child nodes to those children. The ids are taken from the node-specs in the refinement.

makePNode

protected abstract PNode makePNode(PNode parent,
                                   LList pattern)

processOrderings

public void processOrderings(java.util.List orderings,
                             java.util.Map nameToChildMap)

ensureChildrenLinkedToParent

public void ensureChildrenLinkedToParent()

computeStatus

public void computeStatus()
computeStatus() is used to change the status of related nodes when a node changes its status.

Specified by:
computeStatus in interface HasStatus

setStatus

public void setStatus(Status status)
Changes the node's status and then that of related nodes.

Specified by:
setStatus in interface HasStatus

assignStatus

public void assignStatus(Status status)

statusFromNodeEnds

public Status statusFromNodeEnds()

allHaveStatus

public static boolean allHaveStatus(java.util.List l,
                                    Status status)

allComputeStatus

public static void allComputeStatus(java.util.List l)