Read- und WriteContainer
Read- und WriteContainer bilden eine Abstraktionsschicht, mit der auf den Seiten einer Applikation definiert werden kann, welche Daten gelesen bzw. wohin sie geschrieben werden. Mit ReadContainern werden Daten gelesen, mit WriteContainern werden Daten geschrieben.
Die Bereiche "ReadContainer" und "WriteContainer" können über das Hauptmenü "Ansicht" ein- bzw. ausgeblendet werden. Wenn Sie eine Applikationsseite in der Applikationsstruktur auswählen, zeigt der Read- bzw. WriteContainer-Bereich an, welche Container für diese Seite definiert sind.
Mit einem ReadContainer werden die Daten aus der Datengruppe gelesen, in der sich die jeweilige Applikationsseite befindet. Mit WriteContainern können Daten in beliebige Datengruppen aus derselben Applikation geschrieben werden. Es ist auch möglich, mit benutzerdefinierten Read- bzw. WriteContainern eigene Java-Klassen einzubinden. Informationen zu diesem Thema erhalten Sie in unseren Academy-Seminaren.
ReadContainer
Jede Applikationsseite hat für die Datengruppe, in der sie liegt, genau einen ReadContainer. Ausnahme sind die Ansichtsseiten auf der ersten Ebene in der Applikationsstruktur (direkt unterhalb des Applikationsknotens) und Seiten einer Systemdatengruppe. Hier gibt es keine ReadContainer, es können auch keine erstellt werden.
Zusätzlich zu dem bereits definierten ReadContainer von Applikationsseiten, die sich in einer Datengruppe befinden, können benutzerdefinierte ReadContainer erzeugt werden, die das Einbinden von eigenen Java-Klassen ermöglichen.
ReadContainer hinzufügen
Öffnet einen Dialog, in dem ein neuer benutzerdefinierter ReadContainer erstellt werden kann.
Name
Der Name eines ReadContainers ist in der Regel der Name der Datengruppe, deren Daten er liest. Der Name kann beliebig geändert werden, sollte jedoch eindeutig sein. Ist dies nicht der Fall, wird eine entsprechende Meldung ausgegeben.
Typ
Bei einem ReadContainer kann hier der Typ "Benutzerdefiniert" ausgewählt werden. Es kann eine beliebige Anzahl von ReadContainern mit diesem Typ erstellt werden.
Benutzerdefinierte Klasse
Hier können für den Typ "Benutzerdefiniert" eigene Java-Klassen eingebunden werden, z.B. um Daten aus einer bestimmten Datenbanktabelle zu lesen. Weitere Informationen zu diesem Thema erhalten Sie in unseren Academy-Seminaren.
Klicken Sie auf "OK", um einen neuen ReadContainer zu erstellen und den Dialog wieder zu schließen.
ReadContainer bearbeiten
Alle Informationen dazu finden Sie hier.
ReadContainer löschen
Löscht den aktuell ausgewählten ReadContainer.
Bindings
Bindings verknüpfen die per ReadContainer gelesenen Daten mit den Applikationselementen auf der Seite. Hier werden alle Applikationselemente aufgelistet, die ein Binding besitzen.
Binding löschen
Löscht das aktuell markierte Binding.
Eigenschaften
Bei jedem ReadContainer erreichen Sie die Eigenschaften mit Klick auf "Bearbeiten".
Neben dem Namen des ReadContainers finden Sie hier auch den Typ. Dabei gibt es die folgenden Typen:
-
Datengruppe
Dieser Typ wird für den Standard-ReadContainer verwendet, der automatisch für jede Applikationsseite angelegt wird, die sich in einer Datengruppe befindet. Der Name eines solchen ReadContainers wird aus dem Präfix "READ_" und dem Namen der Datengruppe gebildet. Grundsätzlich wird der Datengruppen-Typ für Container verwendet, die die Daten einer Datengruppe bereitstellen.
-
Multi-Input
Dieser Typ wird für Frei gestaltete Tabellen, die sich auf der Seite befinden, verwendet. Für jede Frei gestaltete Tabelle wird bei der Erstellung der Tabelle automatisch genau ein ReadContainer mit dem Typ "Multi-Input" auf der Seite angelegt, auf der sich die Tabelle befindet. Der Name wird aus dem Präfix "READ_" und der GUID der Frei gestalteten Tabelle gebildet. Dies gilt auch für WriteContainer.
-
Benutzerdefiniert
Dieser Typ wird für ReadContainer verwendet, die eigene Java-Klassen einbinden.
Befindet sich die Seite in einer Datengruppe, so finden Sie hier in den ReadContainer-Eigenschaften auch die Applikation und Datengruppe, aus der die Daten gelesen werden.
Filterkriterien
Im unteren Bereich der Eigenschaften wird die Quelle und das Ziel des ReadContainers angegeben. Mit Klick auf "Filterkriterium bearbeiten" erreichen Sie bei den Typen "Datengruppe" und "Benutzerdefiniert" die Filtereinstellungen.
Beim Typ "Datengruppe" sind diese Kriterien in der Regel bereits sinnvoll vorbelegt. Mit den Filterkriterien wird der Seite mitgeteilt, welcher Datensatz angezeigt werden soll. Die Einschränkung der Daten mit Filterkriterien entspricht der WHERE-Klausel im SELECT-Statement bei der Datenbankabfrage. Da eine Seite in einer Datengruppe nur einen einzigen Datensatz anzeigen soll, sind hier bei der Bearbeitung der Filterkriterien nicht in jeder Situation alle Kombinationen von Quell- und Zielwerten wählbar. Damit wird vermieden, dass eine Abfrage mehr als einen Datensatz liefert, was einen Fehler beim Laden der Seite verursachen würde. Beim Typ "Multi-Input" sind die Filterkriterien deaktiviert, da die Anzeige der Daten in einer Frei gestalteten Tabelle von den in ihr eingebundenen Seiten geregelt wird.
Die GUID des Selektors kann mit Klick auf die rechts nebenstehende Schaltfläche in die Zwischenablage kopiert werden.
Quelle
Hier ist definiert, woher der Wert stammt, der mit den Ziel-Werten verglichen werden soll. Folgende Quellen kommen in Frage:
-
Kontrolle - hier kann ein Applikationselement der Seite ausgewählt werden.
-
Datenfeld - dabei kann auch der gewünschte ReadContainer ausgewählt werden
-
Session / Request / Verarbeitungskontext
-
Statischer Wert
-
Velocity-Skript
-
Aktueller Benutzer - dabei können die gewünschten Benutzerdaten ausgewählt werden
-
Weitere - hier können Sie den Namen Ihres Parameters hinterlegen
Ziel
Zeigt das Ziel an, mit dem die in der Quelle definierten Werte verglichen werden. Bei Übereinstimmung wird der entsprechende Datensatz angezeigt.
WriteContainer
Für jede Applikationsseite wird automatisch für die Datengruppe, in der sie sich befindet, ein WriteContainer erzeugt. WriteContainer können auf allen Seiten außer auf Ansichtsseiten auf der ersten Ebene in der Applikationsstruktur (direkt unterhalb des Applikationsknotens) angelegt werden. Ohne WriteContainer auf einer Seite kann ein Datensatz nicht gelöscht werden.
Zusätzlich zu dem bereits definierten WriteContainer von Applikationsseiten, die sich in einer Datengruppe befinden, kann eine beliebige Anzahl von WriteContainern erzeugt werden.
WriteContainer hinzufügen / WriteContainer bearbeiten
Öffnet einen Dialog, in dem ein neuer WriteContainer erstellt oder ein bestehender WriteContainer bearbeitet werden kann.
Name
Hier kann der Name des WriteContainers eingetragen werden, der eindeutig sein sollte. Ist dies nicht der Fall, wird eine entsprechende Meldung ausgegeben.
Typ
Wählen Sie hier den gewünschten Typ aus. Mit dem Typ "Datengruppe" können Daten in beliebige Datengruppen aus der aktuellen Applikationen geschrieben werden. Wenn Sie den Typ "Benutzerdefiniert" auswählen, ändert sich das Aussehen des Dialogs.
Benutzerdefinierte Klasse
Hier können eigene Java-Klassen eingebunden werden. Zur Auswahl stehen auch Session und SharedState, sowie Mandanten (SelectedTenants). Weitere Informationen zu diesem Thema erhalten Sie in unseren Academy-Seminaren.
Klicken Sie auf "OK", um den neuen WriteContainer zu erstellen und den Dialog wieder zu schließen.
WriteContainer löschen
Löscht den aktuell ausgewählten WriteContainer.
Bindings
Hier können alle Applikationselemente hinzugefügt oder bearbeitet werden, die ein Binding besitzen. Elemente können von der Arbeitsfläche aus auch per Drag & Drop in den Bindings-Bereich bewegt werden.
Binding hinzufügen / Binding bearbeiten
Alle Informationen dazu finden Sie hier.
Binding löschen
Löscht das aktuell markierte Binding.
Nach oben / Nach unten verschieben
Mit den Pfeilschaltflächen kann die Reihenfolge der Abarbeitung der Bindings geändert werden.
Eigenschaften
Die Eigenschaften des WriteContainers entsprechen den Eigenschaften des ReadContainers.
Zusätzlich gibt es beim WriteContainer die Einstellung "Prozess auslösen". Die Einstellung ist bereits aktiviert, wenn ein WriteContainer angelegt wird. Sie bewirkt, dass Datengruppen-Ereignisbehandler, die auf die gleiche Datengruppe hören wie der WriteContainer, automatisch gestartet werden, wenn im Browser die Aktionen "Datensatz hinzufügen", "Speichern" oder "Löschen" auf der Seite, die den WriteContainer enthält, ausgeführt werden. Ist die Einstellung nicht gesetzt, reagiert der Ereignisbehandler nicht und löst auch die folgenden Prozessschritte nicht aus. Die Einstellung ist z.B. hilfreich bei Assistenten, die den Benutzer im Browser durch mehrere Eingabeseiten führen. Mit ihr kann geregelt werden, dass der Ereignisbehandler erst mit dem Speichern der letzten Seite des Assistenten ausgelöst wird.
Im unteren Bereich der Eigenschaften wird die Quelle und das Ziel des ReadContainers angegeben. Mit Klick auf "Filterkriterium bearbeiten" erreichen Sie bei den Typen "Datengruppe" und "Benutzerdefiniert" die Filtereinstellungen.
Filterkriterien / Binding
Dieser Dialog wird sowohl für das Bearbeiten von Filterkriterien als auch für das Bearbeiten von Bindings verwendet.
Mit den Filterkriterien wird der Seite mitgeteilt, welcher Datensatz gespeichert werden soll. Die Einschränkung der Daten mit Filterkriterien entspricht der WHERE-Klausel im UPDATE-Statement bei der Datenbankabfrage. Da eine Seite in einer Datengruppe nur einen einzigen Datensatz schreiben soll, sind hier bei der Bearbeitung der Filterkriterien nicht in jeder Situation alle Kombinationen von Quell- und Zielwerten wählbar. Damit wird vermieden, dass eine Anfrage mehr als einen Datensatz bearbeitet, was einen Fehler beim Speichern der Seite verursachen würde. Beim Typ "Multi-Input" sind die Filterkriterien deaktiviert, da das Schreiben der Daten in einer Frei gestalteten Tabelle von den in ihr eingebundenen Seiten geregelt wird.
Quelle
Zeigt die Quelle des Filterkriteriums an. Die Quelle entspricht dem Wert, auf den die Daten der Datengruppe gefiltert werden sollen. Alle Informationen zu den verschiedenen Quellen finden Sie hier.
Ziel
Zeigt das Ziel an, mit dem die in der Quelle definierten Werte verglichen werden. Bei Übereinstimmung wird der entsprechende Datensatz für das Schreiben der Daten ausgewählt.
Mit "Verwenden bei" kann der gewünschte Modus - "Datensatz ändern und hinzufügen", "Datensätz ändern" oder "Datensatz hinzufügen" ausgewählt werden.
Dateien kopieren - Bindings
Über einen WriteContainer können Dateien kopiert werden. Eine ausführliche Anleitung dazu finden Sie in unserem Tipps & Tricks-Beitrag "Dateien per WriteContainer kopieren".
Container / Datenfeld
Hier wird die Quelle der zu kopierenden Datei(en) festgelegt.
Zieldatenfeld
Wählen Sie hier das Datei-Datenfeld aus, in dem die Kopie abgelegt werden soll.
Verwenden bei
Hier kann der gewünschte Modus - "Datensatz ändern und hinzufügen", "Datensätz ändern" oder "Datensatz hinzufügen" ausgewählt werden.
Anzahl zu kopierender Quelldateien
Geben Sie hier die Anzahl an. Mit dem Wert "-1" werden alle Dateien, die im Datensatz enthalten sind, kopiert.
Quelldateinamen Filter
Hier können die Quelldateien über ihren Namen gefiltert werden. Mit "*" werden alle Dateien ausgewählt.
Anzahl / Filter anwenden vom
Ist eine Anzahl bzw. ein Filter festgelegt, so kann hier bestimmt werden, ob die der Kopiervorgang vom Anfang der Quelldateien oder vom Ende der Quelldateien aus startet.
Kopiermodus Zieldatei(en)
Wählen Sie hier den gewünschten Kopiermodus aus.