Das „name“-Attribut

Auf eine Besonderheit des Systems muss dringend und auch ausführlich hingewiesen werden. Wenn in der Oberfläche ein Objekt angezeigt werden soll (z.B. im Rahmen des Anzeigens einer Referenz) so nutzt das System immer eine Eigenschaft mit dem technischen Identifier „name“ vom Typ String. Instanzen eines Objekttyps, der nicht über eine solche Eigenschaft verfügt, können nicht sinnvoll angezeigt werden. Im Kapitel Neue Option Produkt hinzufügen werden wir bei der Definition des Objekttyps „Produkt“ eine solche Eigenschaft mit anlegen. Danach können wir im Instanzeneditor des „Tickets“ direkt auf die Produkte verweisen. Auch im ersten Formular werden die Produkte als Auswahlfeld angeboten.

Es besteht allerdings keinerlei Zwang, eine Eigenschaft „name“ mit zu modellieren. Wenn man im Rahmen einer App auf die Anzeige eines Objektes per Verweis verzichten kann, benötigt man es nicht unbedingt. Aber man sollte hier den Blick über eine isolierte App hinausgehen lassen und unternehmensweit denken: Selbst, wenn ich heute keine Verweise implementiere, kann es doch sein, dass ich morgen im Rahmen einer anderen Applikationsentwicklung genau diesen Verweis anzeigen möchte. Deshalb empfiehlt es sich, die Eigenschaft „name“ immer zu modellieren.

Obwohl bei vielen Objekttypen ein dem Sinn nach passendes Attribut „name“ vorhanden sein wird, kann es insbesondere im Zusammenspiel mit Legacy-Anwendungen vorkommen, dass man keine direkt passende Eigenschaft findet (z.B. wenn reine Zahlen angezeigt werden). In diesem Fall kann man die Eigenschaft „name“ auch als berechnetes Attribut vom Typ String implementieren.

Als Beispiel betrachten wir unseren Objekttyp „Ticket“. Zunächst sortieren wir im Anzeigefenster die Spalten so um, dass die Eigenschaft „Nummer“, die Ticket von der Prozessinstanz erbt, oben steht:

Das Ticket wurde zunächst ohne die Eigenschaft „name“ modelliert. Betrachten wir diesen Objekttypen im Instanzenbrowser, finden wir folgendes Bild:

Es erscheint sinnvoll, dem Benutzer in Auswahlfeldern eine Konkatenation der beiden Attribute „Nummer“ (geerbt von der übergeordneten Klasse „Prozessinstanz“) und „Titel des Tickets“ anzuzeigen. Da es sich um eine errechnete Eigenschaft handelt, muss eine Berechnungsvorschrift definiert und angelegt werden. Dies geschieht im Rahmen der Attributdefinition unter „Anpassungen, Speichervorschrift“

Wir definieren das Attribut „name“ wie folgt:

Unter der Option Speichervorschrift geben wir folgende Code ein: x->$x.get(`MyEntities:Ticket#executionNumber`)+' - '+$x.get(`MyEntities:Ticket#ticketTitle`)

Die Berechnung des Attributs folgt denselben Regeln wie in TopLogic Skript beschrieben. Ergänzend kommt nun hinzu, dass wir zwei String-Ausdrücke mittels +-Zeichen konkatenieren und einen weitere Konstante (das –Zeichen) in Hochkommata einschließen.

Im Instanzeneditor sehen wir nun die neue, berechnete Spalte Anzeigenamen:

Dieses Feld könnte man nun z.B. ab dem 2. Formular anstelle des Ticket Titels verwenden, da die Verwendung der Nummer die Tickets nun tatsächlich eindeutig macht, was bei einem reinen Texttitel nicht immer gegeben ist.

Infos zum „name“-Attribut siehe auch unter: https://dev.top-logic.com/documentation/servlet/LayoutServlet?page=Attributes&uuid=d36fecb2-4542-4692-ac30-86fa631e580a