planner
Class Planner

java.lang.Object
  |
  +--java.lang.Thread
        |
        +--planner.Planner
Direct Known Subclasses:
PlannerTypeA, PlannerTypeC

public abstract class Planner
extends java.lang.Thread

Die Planner-Klasse ist die abstrakte Superklasse f?r alle Planner-Auspr?gungen, die der Shellbenutzer implementieren kann. Innerhalb der entwickelten Agenten-Shell sind zwei konkrete Planner-Auspr?gungen implementiert worden, der PlannerTypeA und der PlannerTypeC.

Thread-Funktionalit?t:
Planner werden von der Systemkontrolle als eigene Threads gestartet. Allerdings werden zur Thread-Steuerung nicht die Thread-Methoden suspend(), resume() und destroy() benutzt -- diese sind inh?rent deadlock gef?hrlich und deshalb in java 1.2 deprecated. Statt ?ber die genannten Methoden l?uft die Steuerung ?ber die Ersatzmethoden mySuspend(), myResume() und myDestroy(). Diese Methoden umgehen die inh?rente deadlock Gefahr der originalen Thread-Methoden, geben aber die Verantwortung, wann und wie auf ihren Aufruf reagiert wird, an den Programmierer weiter.

Event-Handling:
Planner informieren die Systemkontrolle via events ?ber Planungsergebnisse. Die folgende Gesamt?bersicht listet alle events auf, sowohl diejenigen, die f?r alle Planner g?ltig sind, als auch die, welche speziell fuer den PlannerTypeA bzw. den PlannerTypeC hinzukommen.

Wert int-Variable             Klasse 
---- ------------             ------
0 planReadyAborted         Planner
1 planReadyUnfinishedEvent PlannerTypeA
2 planExecuteFinishedEvent PlannerTypeA
3 planReadyFinishedEvent   PlannerTypeC

Version:
1.3 [1999-11-26]
Author:
Christian Fischbach (Oliver Geppert)
See Also:
PlannerTypeA, PlannerTypeC, PlanExecution

Field Summary
protected  boolean alreadyCalledEval
          Zeigt an, ob eval fuer dieses Objekt schon mal aufgerufen wurde (true) oder nicht (false).
protected  boolean destroyThread
          Zeigt an, ob diese Planner-Thread beendet werden soll (true) oder nicht (false).
private  PlanInformation planInfo
          Das PlanInformation-Objekt, das vom Konstruktor ?bergeben wird.
private  long plannerID
          Diese ID identifiziert den Planner eindeutig.
protected static int planReadyAborted
          int Konstante fuer Event planReadyAborted Fuer Gesamtuebersicht siehe Planner.
private  long searchID
          Diese ID identfiziert die Suche in der der Planner mitarbeitet.
protected  boolean suspended
          Zeigt an, ob dieser Planner-Thread via wait() "suspendiert" werden soll (true) oder nicht (false).
 
Fields inherited from class java.lang.Thread
contextClassLoader, daemon, eetop, group, inheritedAccessControlContext, initial_stack_memory, MAX_PRIORITY, MIN_PRIORITY, name, NORM_PRIORITY, priority, PrivateInfo, single_step, stillborn, stopThreadPermission, target, threadInitNumber, threadQ, values
 
Constructor Summary
Planner(PlanInformation planInfo)
          Konstruktor, der im Regelfall von anderen Klassen zur Instanzierung eines Planers genutzt werden sollte.
 
Method Summary
protected  boolean alreadyUsedAction(Operator op)
           
 PlanInformation eval()
          Diese Methode veranla?t den Planner zu planen anzufangen.
 PlanInformation getPlanInfo()
          liefert den Wert des Attributes PlanInformation planInfo
 long getPlannerID()
          Diese Methode wird von der Systemkontrolle benutzt, um die ID des Planers abzufragen.
 void myDestroy()
          Setzt destroyThread auf true -- Thread soll terminieren.
 void myResume()
          Setzt suspendend auf false -- Thread soll "resumed" werden.
 void mySuspend()
          Setzt suspended auf true -- Thread soll "suspendiert" werden.
 void run()
          Diese Methode ruft einfach nur eval() auf, damit der Planner ueber Thread-Methoden steuerbar ist.
 PlanInformation setPlanInfo(PlanInformation pInfo)
          setzt das Attribut PlanInformation planInfo
 long setPlannerID(long plannerID)
          Diese Methode wird von der Systemkontrolle benutzt, um die ID des Planers zu setzen.
 
Methods inherited from class java.lang.Thread
, activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, exit, getContextClassLoader, getName, getPriority, getThreadGroup, init, interrupt, interrupt0, interrupted, isAlive, isDaemon, isInterrupted, isInterrupted, join, join, join, nextThreadNum, registerNatives, resume, resume0, setContextClassLoader, setDaemon, setName, setPriority, setPriority0, sleep, sleep, start, stop, stop, stop0, suspend, suspend0, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

alreadyCalledEval

protected boolean alreadyCalledEval
Zeigt an, ob eval fuer dieses Objekt schon mal aufgerufen wurde (true) oder nicht (false).
Since:
version 1.4

plannerID

private long plannerID
Diese ID identifiziert den Planner eindeutig. Die ID wird von der Systemkontrolle vergeben.

searchID

private long searchID
Diese ID identfiziert die Suche in der der Planner mitarbeitet. Sie wird nur zur Flexibilisierung mitgespeichert.
Since:
Version 1.0

planInfo

private PlanInformation planInfo
Das PlanInformation-Objekt, das vom Konstruktor ?bergeben wird.
Since:
Version 1.0

suspended

protected boolean suspended
Zeigt an, ob dieser Planner-Thread via wait() "suspendiert" werden soll (true) oder nicht (false). Wird von aussen gesetzt mit mySuspend() (true) bzw. myResume() (false).
Since:
version 1.3

destroyThread

protected boolean destroyThread
Zeigt an, ob diese Planner-Thread beendet werden soll (true) oder nicht (false). Wird von aussen gesetzt via myDestroy().
Since:
version 1.3

planReadyAborted

protected static final int planReadyAborted
int Konstante fuer Event planReadyAborted Fuer Gesamtuebersicht siehe Planner.
Since:
version 1.4
Constructor Detail

Planner

public Planner(PlanInformation planInfo)
Konstruktor, der im Regelfall von anderen Klassen zur Instanzierung eines Planers genutzt werden sollte.
Parameters:
planInfo - Das PlanInformation-Objekt, mit dem geplant werden soll.
Since:
Version 1.0
Method Detail

eval

public PlanInformation eval()
Diese Methode veranla?t den Planner zu planen anzufangen.
Returns:
PlanInformation Das mit einem Plan gef?llte PlanInformation-Objekt.
Since:
Version 1.0
See Also:
PlanInformation

run

public void run()
Diese Methode ruft einfach nur eval() auf, damit der Planner ueber Thread-Methoden steuerbar ist.
Overrides:
run in class java.lang.Thread
Since:
Version 1.1

getPlannerID

public long getPlannerID()
Diese Methode wird von der Systemkontrolle benutzt, um die ID des Planers abzufragen.
Returns:
long plannerID
Since:
Version 1.0

setPlannerID

public long setPlannerID(long plannerID)
Diese Methode wird von der Systemkontrolle benutzt, um die ID des Planers zu setzen.
Parameters:
long - plannerID
Since:
Version 1.0

getPlanInfo

public PlanInformation getPlanInfo()
liefert den Wert des Attributes PlanInformation planInfo
Returns:
PlanInformation
Since:
Version 1.2

setPlanInfo

public PlanInformation setPlanInfo(PlanInformation pInfo)
setzt das Attribut PlanInformation planInfo
Parameters:
pInfo - Das zu setzende PlanInformation-Objekt
Returns:
PlanInformation das gesetzte PlanInformation-Objekt
Since:
Version 1.2

mySuspend

public void mySuspend()
Setzt suspended auf true -- Thread soll "suspendiert" werden.
Since:
version 1.3

myResume

public void myResume()
Setzt suspendend auf false -- Thread soll "resumed" werden.
Since:
version 1.3

myDestroy

public void myDestroy()
Setzt destroyThread auf true -- Thread soll terminieren.
Since:
version 1.3

alreadyUsedAction

protected boolean alreadyUsedAction(Operator op)