Back to Sagegmbh

Erstellung einer Erfassung

wiki-spaces-s1-pages-582975551-erstellung-plus-einer-plus-erfassung.md

latest7.0 KB
Original Source

Erstellung einer Erfassung

By Andreas Langmaack (Unlicensed)

Feb 18, 2019

3 min

Add a reaction

Es wurde an anderer Stelle bereits erwähnt, dass das Beispiel Schritt für Schritt erweitert wird. Daher können sich auch Datenbankänderungen ergeben. Die Änderungen sind mit jeden neuen Abschnitt gewachsen. Die beiden Updateskripte aus der Wissensdatenbank wurden zusammengefasst. Auch die Datei ConfigUpdate wurde angepasst. Passen Sie bitte Ihre Config-Datei an. Legen Sie bitte einen neuen Demomandanten an und lassen Sie das neue Updateskript über diese Datenbank laufen, oder führen Sie die Skripte anhand des Kapitels Vorbereitung der Datenbank aus.

Um einen Erfassungsdialog erstellen zu können, benötigen Sie mindestens diese Metadatenobjekte:

  • Datenstruktur

  • Daten-Info-Element

  • Kontextmenü

Da man auch Erfassungen, bzw. Bewegungsdaten nachträglich ändern möchte, müssen gespeicherte "Erfassungen" gesucht werden können. Dafür werden diese Metadatenobjekte benötigt.

  • Datenquelle

  • Listen-Element

  • Daten-Such-Element

Möglich wäre aber auch, wie bereits in den Stammdaten gezeigt, ein Navigationselement. Dann würde das Daten-Such-Element entfallen.

Bei der Anlage der Stammdaten "Projektthemen" und "Projektsteuerungen" konnten wir nur durch Anlage von Metadaten einen funktionalen Stammdatendialog erstellen. Nur durch benötigte Validierungen mussten wir zusätzlich auch codieren. Das gesamt Handling von Laden, Speichern und Sperren übernimmt das System. Bei einem Daten-Edit-Element mit "Verwendungszweck" = "Erfassung" wird davon ausgegangen, dass Geschäftslogik vorliegt, die auch die CRUD-Methoden beinhalten und nach der Bearbeitung von Daten (also vor dem Speichern) Berechnungen, Prüfungen etc. durchführen muss. Daher stellt das System in diesem Fall (Daten-Edit-Element = Erfassung) folgendes zur Verfügung:

  • Rendern des UI

  • Behandlung der Ereignisse

  • Transfer der Daten auf Basis einer definierten Struktur gegen eine definierte Schnittstelle

  • Request Neuanlage (Create)

  • Request Laden (Read)

  • Request Aktualisieren (Update)

  • Request Löschen (Delete)

  • Request Service

  • Behandlung der Responses

Die "definierte Struktur" ist eine Datenstruktur, die die Eigenschaften des Geschäftsobjektes abbildet. Dazu gehören natürlich auch alle Beziehungen. In der Regel hat man also eine Hauptstruktur und N-Detailstrukturen. Die "definierte Schnittstelle" leitet von der Daten-Service-Basisklasse "DataServiceBase" ab.

Hinweis für Developer Partner

WDB-Eintrag 203334:

Dokument "Zusatzdokumentation zum Wiki für Developer Partner", DataServiceBase

Es gibt Bereiche, die durch Anlage von Metadaten fertiggestellt werden können (z.B. Bildschirmauskünfte). Dann gibt es Bereiche, die durch Anlage von Metadaten plus zusätzlicher Programmierung fertiggestellt werden können. Dabei können diese Anwendungen aber durchaus auch ohne Programmierung zumindest vorbereitet werden (z.B. Stammdaten ohne serverseitige Validierung). Für diese Fälle haben wir hier im Wiki die Anlage der Metadaten beschrieben. Der Fortschritt konnte dabei durch Freischaltung im Regiezentrum ständig kontrolliert werden. Bei der Erstellung einer Erfassung ist es allerdings so, dass ein fehlerfreies Öffnen des Dialoges bereits Codierung bedingt. Daher werden wir in diesem Kapitel keine detaillierte Beschreibung der Anlage der Metadaten hinterlegen. Der grobe Ablauf und die Besonderheiten gegenüber einen Daten-Edit-Element mit Datensatz sollen hier aber anhand des Beispiel Terminerfassung aufgeführt werden.

Da man eine Datenstruktur auch auf Basis eines Geschäftsobjektes erstellen kann, wäre ein sinnvoller Ablauf wie folgt:

  • Erstellen der Klasse, die die CRUD-Methoden implementiert (Hauptklasse), die Propertyklassen und 1:N-Beziehungen

  • Erstellen der Datenstrukturen mit Hilfe des Assistenten "Geschäftsobjekt importieren" auf Basis der Hauptklasse (sind 1:N-Beziehungen vorhanden, aktivieren Sie die Option Unterobjekte erstellen)

  • Bei 1:N-Beziehungen die Option "Neue Datenstruktur anlegen" aktivieren

Die Eigenschaften der Felder werden analog der Stammdaten "Projektsteuerungen" gesetzt (z.B. boolsche Felder als Indizierter String, Zuordnung von Datenklassen etc.). Sind Steuerungsflags vorhanden und der Wert dieser Flags wird unabhängig von gespeicherte/nicht gespeicherte Erfassung gesetzt, dann aktiviert man "Schreibschutz?", um dadurch nicht den "Dirty-Status" des Dialoges zu beeinflussen. In unserem Beispiel gibt es das Flag "HatUngespeichertePositionen", welches aber nur beim Speichern (Dialog ist danach nicht Dirty) oder Hinzufügen eines Themas (Dialog ist danach Dirty) gesetzt wird.

  • Erstellen eines VB oder c# Daten-Service durch Erzeugung auf der Hauptstruktur ("Daten-Service-VB/c#-Klasse erstellen")

  • Definition der Keys in der Daten-Service-Klasse

  • Anlage des Multi-Daten-Elementes "mdeTermine"

  • Anlage des Daten-Edit-Elementes "ediTerminerfassung"

Bei einem Daten-Edit-Element mit dem Verwendungszweck "Erfassung" kann man Felder in einen besonderen Bereich platzieren. Dieser Bereich wird "Details" genannt und kann vom Anwender auf- und zugeklappt werden. Das gilt für die Felder der Hauptstruktur, wie auch für Felder der 1:N-Beziehungen.

Steuerung für die Hauptstruktur:

  • In der Feldgruppe des Daten-Edit-Elementes die Eigenschaft "Ebene" = "1" setzen

Steuerung für die 1:N-Beziehungen

  • In der Feldgruppe des Daten-Edit-Elementes die Eigenschaft "Ebene" = "1" setzen

  • In der Feldgruppe des Daten-Edit-Elementes die Eigenschaft "Ebene basiert auf" = "<virtueller Feldname>" der 1:N-Beziehung setzen

  • Im Multi-Daten-Edit-Element bei den Felder, die in den Details angezeigt werden sollen, die Eigenschaft "Spaltennummer" = "0" und "Zeilennummer" = "1" setzen

Ein weiterer Unterschied zu einem Daten-Edit-Element mit dem "Verwendungszweck" = "Stammdatendialog für einen Datensatz" ist, dass die Schaltflächen "Speichern" und "Verwerfen" nicht vom System bereitgestellt werden, sondern selber definiert werden müssen. Schaltflächen im unteren Bereich des Dialoges können mit Aktivierung der Eigenschaft "Primäre Schaltfläche?" platziert werden. Dabei können Schaltflächen auch gruppiert werden. Die Aktivierung der Eigenschaft "Gruppe beginnen?" verbreitert den Abstand zwischen den Schaltflächen. Die Position wird mit der Eigenschaft "Schaltflächenposition" definiert. Die Eigenschaft "Position in Sortierung" ist gleich "0" zu setzen. Die "Funktionsaufrufe" sind "DatensatzNeu" und "DatensatzSpeichern".

Der größte Unterschied ist, das die Behandlung der CRUD-Methoden nicht das System übernimmt, sondern selbst codiert werden muss.

Hinweis für Developer Partner

WDB-Eintrag 203334:

Dokument "Zusatzdokumentation zum Wiki für Developer Partner", DataServiceBase

Anhang ADID.Projektsteuerung.rar

Dateien/Klassen Sagede.ADID.Projektsteuerung.Erfassung, TerminerfassungProvider in RealTimeData

Collapse action bar

View all comments

Open Details Panel

Create page

Open Rovo Chat

Add a comment

Add a reaction