In dieser Übung wird eine Datentabelle und eine Teil-Datentabelle erstellt, die Anwendung wird Konfiguriert und es wird ein Event und ein Validator implementiert

XPO Wizard einrichten

Erstellen sie einen neuen Ordner “DB” und fügen Sie einen XPO Wizard hinzu.

XPO Wizard

Es wird keine Verbindung zu einer Datenbank hergestellt.

Modifizieren Sie den “Namespace” (Rechter Klick / Eigenschaften auf die Fläche), beispielsweise auf “BA.Training.DB”.

Fügen sie die Basis-Klasse OrmBABase hinzu. Dazu wählen Sie “Add Assembly”, wechseln Sie in den “bin” Ordner (Anwendung muss mindestens einmal erstellt worden sein) und wählen dort die BA.dll aus.

Neue Datentabelle

Erstellen Sie eine neue Datentabelle (Toolbox/Persistent Object), die die OrmBABase erweitert. Als Name setzen Sie “OrmEngine”.

Fügen Sie folgende Felder (Persistent Property) hinzu.

  • Name String Länge 100 (default).
    Setzen sie das Validator Attribut “BA.Core.CustomAttributes.Validations.BARequired”
  • Type Auswahlliste “Engine Types”
  • Responsible String Länge 200
  • DepreciatedCost Boolean
  • ImplementingDate Datumswert
  • MaintenanceInterval Wiederholendes Datum

Neue Teil-Datentabelle

Erstellen Sie eine Neue Teil-Datentabelle “OrmSubService”.

  • Fügen Sie die BA Tabelle OrmSubBABase dem Wizard hinzu
  • Erstellen Sie die Teil-Datentabelle und erweitern Sie OrmSubBABase
  • Fügen Sie zwei Felder hinzu
    • ServiceDate als Datumsfeld
    • Remark als String mit Länge 1.000.

Fügen Sie die neue Teil-Datentabelle als Feld “Services” zur Maschine hinzu. Die verwendete Teil-Datentabelle (Eigenschaft) erhält den Namen “OrmSubServices”.

Grundkonfiguration

Konfigurieren Sie die Anwendung

  • Belegen Sie das gemeinsame Feld “EntityTitle” mit “[Name]”
  • Legen Sie eine Ribbon bar Navigation für die “Engine” Ansicht an.
    • Aktion Ansicht aktualisieren
  • Legen Sie eine Ribbon bar Navigation für die “Engine” Maske an.
    • Aktion Bearbeiten
    • Aktion Speichern
    • Aktion Speichern und Schließen
    • Aktion Lesen
    • Aktion Datensatzprotokoll
  • Legen Sie eine Maske für “Engine” an
    • Legen Sie die Felder an
    • Legen Sie die Maske in der Datentabelle als Vorgabemaske fest.
  • Legen Sie eine Ansicht für “Engine” an
    • Legen Sie die Felder an
  • Legen Sie eine Applikationsnavigation an.
    • Mit der “Engine” Ansicht
  • Legen Sie eine Seite an.
    • Fügen Sie das Widget “Navigationsmenü” hinzu und tragen Ihre Applikationsnavigation ein.
    • Tragen Sie die Seite in den Anwendungseinstellungen unter Startseite ein.
  • Fügen sie der Ansicht- und der Maskennavigation eine Aktion Erstellen Maschine (Icon: “industrial_machine”) hinzu
  • Starten Sie die Anwendung neu

Feldvorbelegung durch Event

Erstellen Sie einen neuen Ordner “OrmEvents” und erstellen Sie eine neue Event Klasse SetDefaultEngineType

Belegen Sie das Feld Type mit einem Wert als Vorgabe.

Stellen Sie in der Event Klasse sicher das Type einen Wert hat und setzen Sie im Fehler Fall einen Validierungsfehler

Programmatischer Validator

Erstellen Sie einen Ordner “CustomAttributes” und dort drunter einen weiteren Ordner “Validations”.

Dort erstellen Sie ein eigenes Validierungsattribut, um zu prüfen ob ImplementingDate im Jahr 2021 oder Später liegt.

Werfen Sie einen Validierungsfehler, wenn dies nicht der Fall ist.

Setzen sie eine Drag & Drop Regel zwischen OrmDateTimeField und YearAndLaterValidator für EnumConfigurationType.OrmEntityConfigurationGuid

Konfigurieren Sie im Designer den Validator an dem Feld MaintenanceInterval

Validator Steuerelement

Der Validator ist schon aktiv, wird aber in der Konfiguration nicht angezeigt. Dafür wird optional ein Steuerelement benötigt.

Implementieren Sie ein Steuerelement für den Validator und lassen sie das Jahr konfigurieren. Setzen sie für das Jahr selbst einen Validator, so dass man nur Zahlen zwischen 2021 und 2100 eintragen kann.

Erstellen Sie einen Ordner “Configuration” und dort einen weiteren Ordner “Validators”. Erstellen Sie dort das Steuerelement.

Fügen Sie im Validator-Attribut die Methode CreateValidatorControl() hinzu, um das in der Datentabelle gesetzt Attribut im Designer anzuzeigen.

Lösung