CX_ITEM::ProductAllocation
Beschreibung:
Diese Klassenfunktion liefert die Allokation des gewünschten Typs. Dazu wird zunächst das Produkt gesucht (d.h. ein Abrechnungsobjekt vom Typ CX_PRODUCT), das dieser Sache zugeordnet ist (1). Wird keins gefunden, bricht diese Funktion ab und liefert NULL zurück.
Anschließend wird im Produkt nach der gewünschten Allokation gesucht (und nur dort, nicht in weiteren Objekten, wie in der Allocation-Funktion beschrieben!) (2). Die Allokation muss dem Typ, der als Parameter übergeben wird, entweder genau entsprechen (zweiter Parameter ist FALSE) oder davon abgeleitet sein (zweiter Parameter ist TRUE). Wird eine passende Allokation gefunden, liefert die Funktion die Allokation zurück. Die Suche war erfolgreich.
Wird beim Produkt keine Allokation gefunden, geht die Suche bei dem Produkt weiter, das dem Muster zugeordnet ist. Dazu wird zunächst die Sache gesucht, die dem Produkt zugeordnet ist (3). (Falls keine Sache vorhanden ist, wird ein Fehler gemeldet.) Anschließend wird für das Muster wieder die Funktion ProductAllocation aufgerufen (4, 5). (Wenn kein Muster vorhanden ist, bricht die Funktion ab und liefert NULL zurück.) Auf diese Weise hangelt sich die Funktion von Muster zu Muster immer weiter "nach oben" und betrachtet nur die Allokationen des zugeordneten Produktes.
Das folgende Bild veranschaulicht die beschriebenen Schritte nochmals:
Code-Beispiel:
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_ITEM | Eine Sache |
Top-1 | INTEGER | FALSE: Typen direkt miteinander vergleichen, TRUE: Vererbungshierarchie berücksichtigen | |
Top-2 | STRING | Typ, auf den geprüft werden soll, z.B. "CX_PHONE" | |
Stack(Out) | Top | CX_ALLOCATION | Allokation oder NULL |
Funktionsaufruf: Call(ProductAllocation)