Öffne View (Aktion)
Siehe auch: Öffne View (Formulardesigner) (Verhaltensweise), Öffne Portal (Aktion)
Ereignisaktion - Kurzfassung
Zweck: Öffnet eine View, an die Formulardaten bzw. eine Suche oder geeignete Sucheinschränkung übergeben werden können, und wartet optional auf die Rückgabe eines Datenobjekts bzw. das Schließen der View.
Die Ereignisaktion Öffne View (Aktion) öffnet eine View, an die Formulardaten übergeben werden können, und wartet optional auf die Rückgabe eines Datenobjekts bzw. das Schließen der View.
Views sind Erfassungsmasken, Übersichten (inkl. Eigene Übersichten), Portale, Dashboards oder andere vom System bereitgestellte Ansichten (z. B. im Menüpunkt Verwaltung).
►HINWEISE◄
Views können im Kontext von Formularen auch direkt per Verhalten Öffne View (Formulardesigner) geöffnet werden.
Spezifische Konfigurationsmöglichkeiten für Portale unterstützt die ansonsten analog strukturierte Ereignisaktion Öffne Portal (Aktion).
Wird die Option Nach dem Commit öffnen aktiviert, wird sichergestellt, dass die View erst nach erfolgreichem abschließen der Datenbanktransaktion geöffnet wird. So lässt sich sicherstellen, dass etwaig getätigte Änderungen auch wirklich vollständig getätigt wurden bevor die View geöffnet wird. Wartezeit und Rückgabewert sind dabei hinfällig.
Konfiguration
Die Konfiguration der Ereignisaktion Öffne View (Aktion) deckt vielfältige Anwendungsszenarien ab und bietet deshalb zahlreiche Parameter an. Diese werden nachfolgend tabellarisch und gruppiert nach Schwerpunkten vorgestellt. Dabei zeigt die rechte Spalte der Tabelle immer den betreffenden Abschnitt des Konfigurationsdialogs.
Auswahl der zu öffnenden View |
|
Die zu öffnende View kann entweder per direkte Texteingabe oder über einen Wertauslöser adressiert werden. Eine View wird nur geöffnet, wenn ...
Ob die folgenden Beispielwerte für den Parameter Zu öffnende View funktionieren, hängt teilweise zusätzlich davon ab, welche Module von Lobster Data Platform / Orchestration lizenziert sind:
|
|
Wenn eine View nicht geöffnet werden kann, tritt keine Exception auf. Die Ereignisbehandlung wird dann in der Regel sofort fortgesetzt, also auch ohne eine ggf. parametrierte Wartezeit Wertrückgabe (s. u.) abzuwarten. Wie kann man den Viewnamen und den Menüknotennamen ermitteln? Viewname und Menüknotenname einer bereits geöffneten View können per Klick auf das ?-Symbol rechts oben im Fenstertitel ermittelt werden, was am Beispiel einer Erfassungsmaske für Bestellungen folgende Meldung ergibt (Textmarkierung nachträglich hinzugefügt): Die erste markierte Zeile definiert den Viewnamen einer Detailsicht (detailsWindow), adressiert also eine Erfassungsmaske für Bestellungen. ►WICHTIG◄ Zum Öffnen einer View darf nicht die Kurzschreibweise aus der Zeile oberhalb verwendet werden, in der anstelle des vollständigen Klassennamens das zugehörige Namespace-Präfix erscheint. Auch die Kontexteinträge mit dem Wildcard-Symbol * sind nicht geeignet, um die View zu adressieren. Die zweite markierte Zeile definiert den Menüknotennamen (order/orderDetails) für dieselbe View, der dem Menüpfad im Hauptmenü ("Bestellungen/Bestelldetails") entspricht. ►HINWEIS◄ Der Menüknotennamen erscheint hier nicht, wenn eine View nicht über die Hauptmenüleiste geöffnet wurde, sondern z. B. per Öffne View (Aktion) oder per Klick auf eine Funktion im Ribbon ("Neu" oder "Bearbeiten") einer Übersicht. Dann besteht auch kein Zugriff auf Hilfethemen (s. Online Hilfen), die mit dem Menüknotennamen verknüpft sind. |
|
Datenzuweisung für die zu öffnende View |
|
Die Wert-Konfiguration für den Parameter Formulardaten kann auf unterschiedliche Weise genutzt werden, dynamisch ermittelte Informationen an die Zu öffnende View zu übergeben, sofern diese das überhaupt vorsieht. Entscheidend ist dabei der Datentyp, der vom Wertauflöser zurückgegeben wird in Kombination mit dem Typ der zu öffnenden View. |
|
Öffnen einer View vom Typ Erfassungsmaske (detailsWindow):
Öffnen einer View vom Typ Übersicht (listSearchView):
►WICHTIG◄ Im Kontext einer der Suche (erster Fall oben) können Joins verwendet werden, um die Suche direkt (als INNER JOIN) oder über Bedingungen, die sich über Projektionen auf Joins beziehen, da diese in die erzeugte Sub-Suche-Einschränkung übernommen werden können. Wird stattdessen eine "Sucheinschränkung" bereitgestellt, ist die Verwendung von Joins potenziell heikel, wenn diese nicht über eine Verkettete Projektion abgebildet werden. Sofern die "Sucheinschränkung" Projektionen verwendet, die sich auf einen "Join Alias" beziehen, kann die Einschränkung zur Laufzeit nur fehlerfrei funktionieren, wenn die beim Öffnen der View über Zuordnungskriterien dynamisch zugewiesene Datengrid-Definition in jedem Fall einen "passenden" Join mit diesem "Join Alias" beinhaltet. Ist der Join nicht vorhanden, tritt beim Öffnen eine Datenbank-Fehlermeldung auf und die Übersicht wird ohne Daten geöffnet.
|
|
Datenrückgabe aus der View (optional) |
|
Der optionale Parameter Variablenname des Rückgabeobjekts kann verwendet werden, um den Namen einer Variablen anzugeben, über die auf Rückgabedaten aus der geöffneten View zugegriffen werden kann, sofern ...
Verstreicht eine Wartezeit Wertrückgabe (>0 Sekunden) ohne dass Schließen anfordern ausgeführt wird, wird die View automatisch geschlossen und die Rückgabedaten sind leer. Ist dagegen als Wartezeit Wertrückgabe der Wert 0 (Standard) eingestellt, wird die Ereignisverarbeitung sofort nach dem Öffnen der View und ohne Rückgabedaten abzuwarten fortgesetzt. ►HINWEIS◄ Der Parameter Wartezeit Wertrückgabe kann auch ohne Angaben für Variablenname des Rückgabeobjekts genutzt werden, um eine bestimmte View für begrenzte Zeit anzuzeigen.
|
Wird das Portal geschlossen, ohne dass dabei die Schließen anfordern-Aktion mit den zurückzugebenden Daten als Eingabewert ($input) ausgeführt wird, bleibt die Rückgabeobjekt-Variable leer. (s. a. Option Schließbar unten). |
Anzeigeverhalten der View |
|
Wenn die Option Modal nicht ausgewählt ist (Standard), soll die View als eigenständige View geöffnet werden. Dann entscheidet die Option Darf nur einmal geöffnet sein?, ob die View auch dann geöffnet wird, wenn schon (mindestens) eine Instanz der View nicht-modal - also als eigenständige View - geöffnet ist. Ist die Option Modal ausgewählt, wird die View beim Öffnen innerhalb der aktuellen View angezeigt. Die Option Darf nur einmal geöffnet sein? wird dann nicht beachtet. In der Konfiguration erscheinen außerdem zusätzliche Optionen:
|
|
►HINWEIS◄ Der Zurück Button kann als Ribbon-Makro beeinflusst werden, indem die Unterkategorie modal (nicht im Dropdown enthalten!) mit dem Makro-Namen back kombiniert wird. Per Makrobefehl ("Immer deaktiviert" bzw. "Immer ausgeblendet") kann dann auch das Schließen einer modalen View auch per Zurück gezielt verhindert werden. |
|
Ist keine dieser Optionen anwendbar, kann eine modal geöffnete View, die nicht Schließbar ist, nur noch geschlossen werden, indem die übergeordnete View geschlossen wird. |
|
Die Option Nach dem Commit öffnen ist per Standard abgewählt, sodass die Zu öffnende View beim Ausführen von Öffne View (Aktion) unverzüglich ausgeführt wird.
►ANMERKUNG◄ Um "nach dem Commit" eine View mit Datenrückgabe zu öffnen, sollte eine Eigenes Aktionsevent auslösen (Aktion) mit der entsprechenden Option ausgeführt werden. In der Ereignisbehandlung für das ausgelöste Ereignis kann dann Öffne View (Aktion) ohne die Option Nach dem Commit öffnen aber dafür mit "Datenrückgabe" ausgeführt werden. |
|
Beispiel
Anforderungen:
Wenn beim Anmelden einer Lobster Data Platform / Orchestration-Sitzung der URL-Parameter (s. URL-Parameter) myOrder die (interne) ID einer Bestellung (s. Bestellungen) als Wert enthält, soll unmittelbar nach der Anmeldung eine Erfassungsmaske für Bestellungen mit den Details der in der URL adressierten Bestellung erscheinen.
Drückt der Benutzer für eine der in dieser Erfassungsmaske angezeigten Positionen den Button "Auswahl", soll die Erfassungsmaske geschlossen und eine Übersicht mit allen Bestellungen geöffnet werden, die eine Position mit demselben Artikel beinhalten.
Laufzeitbeispiel:
Im Beispiel wird der URL zum Aufrufen des Clients der Parameter myOrder mit dem Wert 4351 angehängt:
Noch bevor die eigentliche Sitzung beginnt, erscheint eine Erfassungsmaske mit Details zu der Bestellung mit der ID 4351 in einer kompakten, modal geöffneten Erfassungsmaske. Diese URL könnte z. B. durch das Scannen eines Barcodes aufgerufen werden. ►ANMERKUNG◄ Das Feld "ID" wurde im Beispiel zur Verdeutlichung sichtbar im Formularlayout eingebunden, was in der Praxis weder üblich noch erforderlich ist. |
|
►ANMERKUNG◄ Das Auswahlkriterium (übereinstimmende "Warenbeschreibung") für die anzuzeigenden Bestellungen wurde im Beispiel zur Vereinfachung bewusst oberflächlich gewählt. In einer praktischen Anwendung wären komplexere Kriterien (z. B. eine Kombination von Zeitraum der Erstellung, Arbeitsstatus, Artikelnummer, EAN usw.) typisch. |
|
Konfiguration:
Der Screenshot rechts zeigt die zu erstellende Ereignisbehandlung zunächst im Überblick. Anschließend werden Konfigurationsdetails abschnittweise beschrieben.
►ANMERKUNG◄ Hier wird weder explizit geprüft, ob der übergebene String als Long-Wert interpretierbar ist, noch ob innerhalb der angemeldeten Sitzung Lesezugriff auf eine Bestellung mit einer passenden ID besteht. Entsprechende Prüfungen könnten innerhalb der Regel oder in einer Wenn Dann Sonst-Ereignisaktion ergänzt werden, wenn verhindert werden soll, dass eine leere Erfassungsmaske für Bestellungen erscheint.
►ANMERKUNG◄ Auf eine Kontrolle, ob in der Erfassungsmaske überhaupt eine Position ausgewählt wurde wird hier verzichtet. In der Praxis wäre eine Wenn Dann Sonst-Ereignisaktion zu empfehlen, die die Ausführen mit-Ereignisaktion nur ausführt, wenn die Variable selectedLineItem "nicht leer" ist. |
|
Die folgenden Abschnitte beschreiben Details der oben im Überblick gezeigten Konfiguration.
Zum Öffnen der Erfassungsmaske mit den Details der per URL-Parameter bestimmten Bestellung wird die erste Öffne View (Aktion)-Ereignisaktion wie rechts abgebildet parametriert:
|
|
Die nachfolgende Ausführen mit-Ereignisaktion wird wie rechts abgebildet konfiguriert, um ausgehend von der als Rückgabewert in der Variablen selectedLineItem übergebenen Bestellposition ("Bestellung > Position") das Suchkriterium für die zu öffnende Bestellübersicht maßzuschneidern.
►HINWEIS◄ Der statische XML-String für das search-Objekt wurde für dieses Beispiel in den folgenden Schritten mit dem Abfragekonfigurator erstellt:
►HINWEIS◄ Alternativ kann ein Search-Objekt bzw. der zugehörige XML-String auch zur Laufzeit aus einer bestehenden Konfiguration (z. B. Externe Suche oder Eigene Übersichten) gelesen und danach angepasst, über ein Lobster_data-Profil (per Lobster_pro Vorlagen) generiert oder sogar per Erzeuge Instanz innerhalb der Ereignisbehandlung erzeugt und dann "passend" und Schritt für Schritt aufgebaut werden. |
|
|