• Keine Ergebnisse gefunden

Modellebene

Im Dokument Expertise Management System (Seite 34-40)

Die Modellebene definiert Objekte, Attribute, Ereignisse und wie sich diese zu anderen Objekten verhalten.

In Abbildung 31 sind zwei Objektdefinitionen (Fuhrpark und Fahrzeug), Attributdefinitionen (Stellplätze, Ort, Farbe, Model) und deren Verknüpfungsdefinitionen (1:N) definiert. Dadurch wird erreicht, dass ein oder mehrere Instanzen der abstrakten Klasse Fahrzeug, also auch abgeleitete Klassen davon (z.B.: PKW, LKW, etc.) zu einer Fuhrparkinstanz verknüpft werden können.

Des Weiteren ersichtlich ist ein Ereignis, auf der Objektdefinitionen „Fuhrpark“ und zwar

„BeforeCreateSubLink“. Dieses Ereignis könnte dazu dienen, um sicherzustellen das noch genügend Stellplätze vorhanden sind bevor eine neue Instanz eines Fahrzeuges zum Fuhrpark verknüpft wird.

5.3.1 Objektdefinition

Alle Objekte, die später in den verschiedenen Ansichten zu Verfügung stehen, können in einer eigenen Modellansicht (Abbildung 32) als Objektdefinitionen definiert werden.

Zu diesen Objektedefinitionen werden dann Attributdefinitionen erzeugt, mit den jeweiligen Datentypen. Zuletzt erstellt man noch Verknüpfungsdefinitionen, die Aussagen treffen, welche Objektdefinitionen miteinander verknüpft werden dürfen.

Abbildung 32: Modellansicht der Objektdefinitionen und Attribute

Objektdefinitionen können von anderen abgeleitet werden, dadurch werden alle übergeordnet erstellten Attribut- & Verknüpfungsdefinitionen vererbt, eine Mehrfachvererbung ist nicht möglich. In diesem Bild sieht man drei Objektdefinitionen

„Fahrzeug - VEHICLE“, welche als abstrakte Klasse fungiert und zwei Attributdefinitionen „Farbe & Model“ enthält. Die abgeleiteten Klassen „BIKE. LKW, und PKW“ erben diese Attributdefinitionen und enthalten selbst noch jeweils

„Radinformation, Schaltgänge, Ladekapazität und Sitzplätze“. Das UML – Diagramm dazu, ohne der Klasse „BIKE“ wurde bereits im Kapitel 5.1.2 dargestellt.

Als Eigenschaften zu Objektdefinitionen kann definiert werden, ob diese abstrakt oder auch nicht ist, was bedeuten würde, ob Instanzen in der Datenebene überhaupt erzeugbar bzw. sichtbar sind. Zu den weiteren einstellbaren Eigenschaften zählen unter anderem:

 Bezeichnung & Beschreibung

 Icon & Erzeugbar in der Symbolleiste einer Ansicht

 Methoden & Ereignisse

5.3.2 Attributdefinition

Die Attribute besitzen selbst verschiedene Eigenschaften und ein Verhalten bei Manipulationen.

Abbildung 33: Definition der Eigenschaften eines Attributes „GEARS“

In Abbildung 33 ist die Eigenschaft eines Attributes „GEARS“ der Klasse „BIKE“ zu sehen, wobei dies die interne Bezeichnung des Feldes ist. Als sprechende Bezeichnung wurde „Schaltgänge“ gewählt, der Feldtyp ist „LONG“ und 4 Byte groß. Als Steuerelement für die Bearbeitung wurde ein Eingabefeld gewählt. Es ist aber auch möglich ein Auswahlfeld daraus zu generieren, das sein Werte entweder statisch oder dynamisch lädt, wie im nächsten Bild (Abbildung 34) abgebildet ist.

Abbildung 34: Auswahlfeld des Schaltgänge Attributes

Wie bereits erwähnt ist es auch möglich, dass Attribute definiert werden, die sich ihren Inhalt aus anderen Attributen zusammenrechnen, bzw. sogar über Abfragen erzeugen.

Dazu kann in den Eigenschaften einer Attributdefinition eine Formel hinterlegt werden, diese nutzt das Prinzip von Reflection in .NET und der Programmiersprache C# um zur Laufzeit Code zu generieren, wie aus den nächsten beiden Bildern ersichtlich ist

(Abbildung 35 und Abbildung 36). Dazu wurde eine Attributdefinition

„Radinformation“ auf der abgeleiteten Klasse „BIKE“ erzeugt, die folgende Formel enthält.

Der Inhalt eines Attributes kann entweder statisch sein, die Daten werden also in der Datenbank gespeichert und beim Anzeigen ausgelesen, oder dynamisch generiert, dazu überschreibt man die Methode „GetContent()“. In diesem Beispiel werden in das Attribut „Radinformation“ drei statische Werte von „Farbe, Model und Schaltgänge“ aus der Datenbank abgefragt und als „string“ zurückgeliefert.

Abbildung 35: Formel für Attribut "Radinformation"

Die aktuellen Daten für dieses Feld werden beim Anzeigen dieses aktualisiert, wie im folgenden Bild zu sehen ist.

Abbildung 36: Auswertung für Attribut "Radinformation"

Zusammenfassend können für Attributdefinitionen unter anderem folgende Einstellungen vorgenommen werden.

 Bezeichnung & Beschreibung

 Steuerelementtypen

o Eingabefeld, Auswahlfeld, Texteditor, etc.

 Statisch oder dynamische Bindung von Daten

o Listenfelder, Abfragen, berechnete Auswahllisten, etc.

 API Framework o Intellisense

o Formeln o Abfragen

 Flags

o Muss / Soll Feld

o Standardwert, indizierbar, überschreibbar (falls berechnet), etc.

5.3.3 Verknüpfungsdefinition

Eine Verknüpfungsdefinition könnte wie folgt aussehen: Man erstellt eine Objektdefinition „Fuhrpark - VEHICLEFLEET“ unter welche man alle Objekte der Klasse

„Fahrzeug - VEHICLE“ verknüpfen kann.

Abbildung 37: Verknüpfungsdefinition

Die Abbildung 37 zeigt eine Verknüpfungsdefinition „VEHICLEFLEET_VEHICLE“, die die Objektdefinition „Fahrzeug - VEHICLE“ darunter gelistet hat. Diese bedeutet, dass auch alle abgeleiteten Objektdefinitionen von „Fahrzeug - VEHICLE“ über genau diese Verknüpfungsdefinition verbunden werden können. Dazu kommen die Eigenschaften dieser.

Abbildung 38: Eigenschaften einer Verknüpfungsdefinition

Im Bild (Abbildung 38) oben ist zu sehen, wie sich Objekte welche übergeordnet bzw.

untergeordnet bei den jeweiligen Operationen (Kopieren, Löschen, etc.) verhalten sollen.

Es kann also eingestellt werden, ob auch Objekte, die sich unter dem eigentlich zu kopierenden Objekt befinden automatisch mitkopiert bzw. vorselektiert werden. Die Kardinalität A wiederum sagt aus, ob sich ein oder mehrere „Fahrzeug – VEHICLE“ Instanzen unter der Instanz „Fuhrpark – VEHICLEFLEET“ befinden dürfen.

Kardinalität B definiert den umgekehrten Weg, in diesem Fall ob es auch möglich wäre das ein und dasselbe „Fahrzeug – VEHICLE“ Instanz zu mehreren „Fuhrpark – VEHICLEFLEET“ Instanzen verknüpft werden könnte. Die Einstellungsmöglichkeiten für die Kardinalität sind „1:1 oder 1:N“, deswegen gibt es zwei davon.

5.3.4 Ereignisdefinitionen

Auf Objektdefinitionen ist es möglich vordefinierte Methoden und Ereignisse zu programmieren. Damit kann das Verhalten bei Interaktion mit Instanzen von

Objektdefinitionen gesteuert werden. Im nächsten Bild (Abbildung 39) ist zu sehen welche Ereignisse auf jede Objektdefinition anwendbar sind.

Abbildung 39: Ereignisse auf Objektdefinitionen

Um ein besseres Verständnis dafür zu bekommen, wird das nächste Programmstück dargestellt (Abbildung 40), das als „BeforeCreateSubLink“ definiert wurde.

Abbildung 40: Beispiel Ereignis "BeforeCreateSubLink"

Dabei wurde auf der Objektdefinition „VEHICLELEET“ eine neue Attributdefinition

„SPACE“ vom Feldtyp „LONG“ erzeugt.

Bevor abgeleitete Instanzen der Objektdefinition „VEHICLE“ zu einem Objekt

„VEHICLEFLEET“ verknüpft werden, wird überprüft ob noch genug Platz vorhanden ist.

Falls ja, wird diese Operation erlaubt und wenn nicht genügend Platz im Fuhrpark verfügbar ist, eine Fehlermeldung ausgegeben.

5.3.5 Zusammenfassung

Die Modellebene erlaubt Entwickler und Administratoren nicht nur die Software um Funktionalität zu erweitern bzw. anzupassen, auch die eigentliche Benutzeroberfläche lässt sich ohne Änderungen am Programmcode vornehmen zu müssen, abändern oder sogar neue zu erstellen. Dazu mehr im Kapitel 5.4.6.

Das Paradigma sieht vor dass, angelehnt am Metamodel der Objektorientierten Programmierung Klassen, in unserem Fall Objektdefinitionen, erstellt werden. Die Klassen beinhalten Attribute, in AXAVIAseries Attributdefinitionen und Methoden welche als Ereignisdefinition erzeugt sind.

Relationen zwischen Objekten werden über Verknüpfungsdefinitionen dargestellt.

Im Dokument Expertise Management System (Seite 34-40)