|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.lang.Thread | +--planner.PlanExecution
Klasse deren Objekte die vom Planner
generierten Pl?ne
ausf?hrt. Die Ausf?hrung des Plans wird mit der run()
-Methode
gestartet.
Die Methoden mySuspend()
und myResume()
verleihen der
PlanExecution
eine gewisse Thread-Funktionalit?t.
Angehalten wird die PlanExecution
jedoch nur zwischen
der Ausf?hrung zweier Operatoren, damit eine gewisse Konsistenz
im Planbaum und der
A_Box
zu gew?hrleisten.
Der Planausführer verläßt sich darauf, dass die {knowledge.T_Box} mindestens folgende Konzepte enthält:
Planner
Field Summary | |
protected A_Box |
aBox
Das ist die Referenz auf die lokale A_Box . |
protected java.util.LinkedList |
alreadyUsed
Diese Liste ?berpr?ft, ob ein Operator
zuvor schon einmal ausgef?hrt wurde. |
private static boolean |
failed
Konstante, die den Code lesbarer machen soll. |
protected int |
maxInstances
Diese Variable gibt an, wieviele Instanzen h?chstens von einem PlanExecution f?r ein evtl. |
protected PlanTree |
plan
Das PlanTree -Objekt, auf dem gearbeitet
wird. |
protected PlanInformation |
planInfo
Das PlanInformation -Objekt auf dem
gearbeitet wird. |
protected ShellEvent |
shellEvent
Das ShellEvent , dass diese
PlanExecution ausl?st, um zu signalisieren, dass
sie fertig ist. |
protected ShellEventListener |
shellEventListener
Der ShellEventListener , der der
Flowcontrol mitteilt, dass ein Event stattfand. |
private static boolean |
success
Konstante, die den Code lesbarer machen soll. |
private boolean |
suspended
Thread-Semaphore für mySuspend() |
protected T_Box |
tBox
Referenz auf die T_Box , die der aBox
zugrunde liegt. |
private boolean |
toBeDestroyed
Thread-Semaphore für myDestroy() |
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 | |
PlanExecution(PlanInformation planInfo,
int maxInstances)
Konstruktor der PlanExecution-Klasse, durch die Systemkontrolle aufgerufen wird. |
Method Summary | |
protected boolean |
execOperator(PlanTree planNode)
Diese Methode verifiziert zun?chst den Operator im ?bergebene planNode und f?hrt ihn anschließend aus. |
protected boolean |
execVerifiedOperator(PlanTree planNode)
Diese Methode f?hrt den bereits verifizierten Operator
im PlanNode aus.Zwischen der Ausf?hrung von zwei Operatoren schaut die Methode nach, ob der Thread angehalten werden soll. |
private void |
fillABox(Operator op,
OperatorCompareKey opkey)
Diese Methode f?llt die A_Box mit den Ergebnissen
der Operatorausf?hrung auf. |
int |
getMaxInstances()
Liefert den Wert der Variablen maxInstances zur?ck. |
void |
myDestroy()
|
void |
myResume()
|
void |
mySuspend()
|
private void |
putIntoABox(PredArgument predArg,
Operator op)
Diese Methode entpackt aus einem PredArgument
die Instanz und f?gt sie der aBox hinzu. |
private void |
revertOpChanges(Operator op)
Diese Methode soll die durch den ?bergebenen Operator
verursachten ?nderungen der A_Box r?ckg?ngig machen. |
void |
run()
Diese Methode startet die Planabarbeitung. |
protected java.util.LinkedList |
selectConcreteRoles(Role r)
Diese Methode entspricht der Methode selectInstances(Concept) . |
protected java.util.LinkedList |
selectConcreteRoles(Role r,
PlanTree pn,
Predicate pred)
Deprecated. |
java.util.LinkedList |
selectInstances(Concept c)
Deprecated. |
java.util.LinkedList |
selectInstances(Concept c,
PlanTree pn,
PredArgument predArg)
Diese Methode w?hlt aus der A-Box heuristisch Instanzen eines T-Box Konzeptes aus. |
private int |
setMaxInstances(int maxcount)
Diese Methode setzt die maximale Anzahl der A-Box-Instanzen desselben Konzepts, die fuer eine Task im Plan in Frage kommen. |
PlanTree |
setPlan()
Diese Methode entpackt den PlanTree aus
planInfo . |
private boolean |
verifyPredicate(PlanTree planNode,
int depth,
Operator op)
Versucht nichtbelegte Argumente zu belegen. |
private boolean |
verifyPredicateA1(Predicate pred,
PlanTree planNode,
int depth,
Operator op)
Diese Methode belegt nicht mit Instanzen versehene PredArgument einstelliger
Predicate s. |
private boolean |
verifyPredicateA2(Predicate pred,
PlanTree planNode,
int depth,
Operator op)
Diese Methode belegt nicht mit Instanzen versehene PredArgument zweistelliger
Predicate s. |
Methods inherited from class java.lang.Thread |
|
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
Field Detail |
protected java.util.LinkedList alreadyUsed
Operator
zuvor schon einmal ausgef?hrt wurde. Wenn ja, dann
wird das Ergebnis nicht in die aBox
eingetragen.
since 1.6protected T_Box tBox
T_Box
, die der aBox
zugrunde liegt.protected A_Box aBox
A_Box
.protected int maxInstances
PlanExecution
f?r ein evtl.
Backtracking nacheinander in Betracht gezogen werden.
(Das beeinflusst evtl. das Verhalten der Heuristik in
selectInstances(Concept)
.PlannerTypeC
,
PlannerTypeA
protected PlanInformation planInfo
PlanInformation
-Objekt auf dem
gearbeitet wird.protected PlanTree plan
PlanTree
-Objekt, auf dem gearbeitet
wird.private static boolean success
private static boolean failed
protected ShellEvent shellEvent
ShellEvent
, dass diese
PlanExecution
ausl?st, um zu signalisieren, dass
sie fertig ist.protected ShellEventListener shellEventListener
ShellEventListener
, der der
Flowcontrol
mitteilt, dass ein Event stattfand.private boolean suspended
mySuspend()
private boolean toBeDestroyed
myDestroy()
Constructor Detail |
public PlanExecution(PlanInformation planInfo, int maxInstances)
PlanInformation
-Objekt.
Da der Planausf?hrer
davon ausgeht, dass die vom Planner
gelieferten Pl?ne
scheitern, setzt er das Flag
PlanInformation.planSuccess
zun?chst auf false
.planInfo
- Das PlanInformation
-Objekt
welches den auszuf?hrenden Plan enth?lt.maxInstances
- setzt die maximale Anzahl
A-Box-Instanzen, die bei der Planausf?hrung
ber?cksichtigt werden.Method Detail |
public java.util.LinkedList selectInstances(Concept c)
maxInstances
-
vielen Instanzen zur?ck. Darauf verl?sst sich
execOperator(PlanTree)
.
Diese spezielle Heuristik nimmt einfach die ersten maxInstances
-vielen Instanzen, die die
A-Box zur?ckliefert.
c
- das Konzept, dessen
Instanzen dazu benutzt werden sollen
ein PredArgument
zu f?llen.LinkedList von Instance
-Objekten,
mit LinkedList.size()<maxInstances
.
Since:
1.2
public java.util.LinkedList selectInstances(Concept c, PlanTree pn, PredArgument predArg)
maxInstances
-
vielen Instanzen zur?ck. Darauf verl?sst sich
execOperator(PlanTree)
.
Diese spezielle Heuristik nimmt einfach die ersten maxInstances
-vielen Instanzen, die die
A-Box zur?ckliefert.
c
- das Konzept, dessen
Instanzen dazu benutzt werden sollen
ein PredArgument
zu f?llen.pn
- der aktuelle PlanNode, dessen Operator belegt werden soll.predArg
- das PredArgument
f?r das die
Instanz gew?hlt werden soll.LinkedList von Instance
-Objekten,
mit LinkedList.size()<maxInstances
.
Since:
1.6
private int setMaxInstances(int maxcount)
maxcount
- Maximale Anzahl der
Instanzen.int
, der die maximale Anzahl angibt.public PlanTree setPlan()
PlanTree
aus
planInfo
.PlanTree
der den Plan repr?sentiert.protected boolean execOperator(PlanTree planNode) throws OperatorFailedException, DestroyException
planNode
- der aktuelle Knoten des
PlanTree
s, der
bearbeitet werden soll.Operator
erfolgreich durchgef?hrt werden konnte.protected boolean execVerifiedOperator(PlanTree planNode) throws DestroyException, OperatorFailedException
Operator
im PlanNode aus.planNode
- der aktuelle Knoten des
PlanTree
s, der bearbeitet werden soll.Operator
erfolgreich durchgef?hrt werden konnte.private void revertOpChanges(Operator op) throws OperatorNotEvaluatedException
Operator
verursachten ?nderungen der A_Box
r?ckg?ngig machen.
Das geschieht, indem der Operator
alle
Instanzen aus der
AddList l?scht
und alle Instanzen aus der DeleteListe wiederherstellt.op
- der Operator
, dessen Folgen r?ckg?ngig
gemacht werden sollen.public void run()
private void putIntoABox(PredArgument predArg, Operator op)
PredArgument
die Instanz und f?gt sie der aBox
hinzu. Wenn sich
herausstellt, dass das zu behandelnde PredArgument
eine Menge von Instanzen des zugeh?rigen
Konzepts enth?lt, dann werden die
Einzelinstanzen in die A_Box
eingetragen.predArg
- das PredArgument
, das bearbeitet
werden soll.op
- der Operator
aus dem das
PredArgument
stammt.private void fillABox(Operator op, OperatorCompareKey opkey) throws OperatorNotEvaluatedException
A_Box
mit den Ergebnissen
der Operatorausf?hrung auf.
Ausserdem wird hier ein {operators.Operator} ggf. in
alreadyUsed
eingetragen.op
- der Operator
dessen Ergebnis
(Nachbedingungspr?dikate) in die A_Box
gef?llt
werden sollen. Soll durch einen Operator
eine Menge von zweistelligen
Pr?dikaten in die A_Box
eingetragen
werden, dann hasolcher {operators.Operator Operatoren} daf?r Sorge
zu tragen, dass im ersten und zweiten PredArgument
genau gleich
viele Eintr?ge in PredArgument.otherInstances
stehen, da
die beiden PredArguments parallel durchlaufen
werden und zwischen beiden Instanzen
dann eine Rolleninstanz gebildet wird.opkey
- der zu diesem Operator gehörende OperatorCompareKey
Operator
zum Zeitpunkt des
Aufrufs der Methode nicht oder nicht vollst?ndig ausgewertet wurde.private boolean verifyPredicate(PlanTree planNode, int depth, Operator op) throws OperatorFailedException, DestroyException
planNode
- der den Operator enth?lt zu dem das
Predicate
geh?rt.depth
- Damit die Methode nicht endlos versucht den
Operator
aus dem
planNode zu belegen,
wird die Anzahl der Belegungsversuche in dieser Variable mitgef?hrt.
Die Anzahl entspricht der Rekursionstiefe, daher der Name.
zu belegen, weil keine Instanzkombination gefunden werden konnte,op
- der zu überprüfende Operator
.success
, wenn der Operator belegt werden konnte
und der ?bergebene planNode auf einem Weg zum Ziel liegt.
Sonst failed
.private boolean verifyPredicateA1(Predicate pred, PlanTree planNode, int depth, Operator op) throws OperatorFailedException, java.lang.CloneNotSupportedException, DestroyException
PredArgument
einstelliger
Predicate
s.pred
- das einstellige Predicate
, das noch
fertig belegt werden muss.planNode
- der planNode
wird nur durchgereicht.depth
- siehe verifyPredicate(PlanTree,int,Operator)
op
- der Operator
, dessen {operators.Predicate}
hier belegt wird.success
, wenn der Operator
belegt werden konnte und der ?bergebene
planNode auf einem Weg zum Ziel
liegt. Sonst failed
.private boolean verifyPredicateA2(Predicate pred, PlanTree planNode, int depth, Operator op) throws OperatorFailedException, java.lang.CloneNotSupportedException, DestroyException
PredArgument
zweistelliger
Predicate
s.pred
- das einstellige Predicate
, das noch
fertig belegt werden muss.planNode
- der den Operator
enth?lt, dessen
Predicate
hier belegt wird. Wird nur durchgereicht.depth
- siehe execOperator(PlanTree)
op
- der Operator
, der belegt wird.success
, wenn der Operator
belegt
werden konnte.failed
.protected java.util.LinkedList selectConcreteRoles(Role r)
selectInstances(Concept)
.
Sie w?hlt h?chstens maxInstances
viele
RollenInstanzen
nach einer durch diese Methode zu bestimmenden Heuristik aus.
Die Standardimplementation w?hlt einfach die ersten
maxInstances
Rolleninstanzen
aus der von A_Box durch A_Box.getConcreteRoles(Role)
zur?ckgelieferten Rolleninstanzliste aus.r
- die Rolle zu der die
ConcreteRole
s ausgew?hlt werden sollen.LinkedList
der
Rolleninstanzen. Es handelt sich
um h?chstens maxInstances
-viele.protected java.util.LinkedList selectConcreteRoles(Role r, PlanTree pn, Predicate pred)
selectInstances(Concept)
.
Sie w?hlt h?chstens maxInstances
viele
RollenInstanzen
nach einer durch diese Methode zu bestimmenden Heuristik aus.
Die Standardimplementation w?hlt einfach die ersten
maxInstances
Rolleninstanzen
aus der von A_Box durch A_Box.getConcreteRoles(Role)
zur?ckgelieferten Rolleninstanzliste aus.r
- die Rolle zu der die
Rolleninstanzen ausgew?hlt werden sollen.pn
- der aktuelle PlanNode, dessen Operator belegt werden soll.pred
- das Predicate
das belegt werden soll.LinkedList
der
Rolleninstanzen. Es handelt sich
um h?chstens maxInstances
-viele.public int getMaxInstances()
maxInstances
zur?ck.public void mySuspend()
public void myResume()
public void myDestroy()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |