Dynamisches Befüllen von Formularfeldern
Wie bereits erwähnt, kann zu jedem Quell-Knoten in der Eigenschaft Datenprofil ein Profil angegeben werden. Dieses Profil liefert die gewünschten Daten bei Anforderung dynamisch an das Portal-Hauptprofil (und damit letztendlich an das Portal-Formular). Zum Starten eines Datenprofils im Formular gibt es zwei Möglichkeiten.
Über ein Feld, dessen Eigenschaft Portalsteuerung den Wert _submitButton_ hat. Das Feld wird dann im Portal in einen Sende-Button umgewandelt.
Über ein Feld, dessen Eigenschaft Daten-Event einen der Werte Bei Änderung, Initial oder Initial&Änderung hat. Im Eingangsagenten kann die Eingabeverzögerung gesetzt werden, die bestimmt, wie schnell der eingegebene Wert übergeben wird.
Portal-Hauptprofil
Die folgende Abbildung zeigt ein Beispiel für die erste Möglichkeit. Versuchen Sie das Profil nachzubauen. Die Schritte der vorherigen Phasen haben Sie bereits kennengelernt.
Setzen Sie alle Quellstrukturfeld-Attribute In Liste anzeigen auf true (außer für Feld get_items) und verwenden Sie, um das Formular etwas übersichtlicher zu gestalten, den Wert _hAlign_ für die Eigenschaft Portalsteuerung des Knotens Order_Header.
Da wir im Formular keine Liste für den Order_Header brauchen, setzen wir das Maximum für den entsprechenden Knoten im Profil auf 1.
Machen Sie sich bei diesem Beispiel keine Gedanken über die Zielstruktur. Klicken Sie einfach auf den Button 1:1 Mapping, wenn Sie mit der Quellstruktur fertig sind.
Ziel ist es, die Kundennummer (customer_id) und die Artikel (items) für eine Bestellnummer (order_number) dynamisch auszulesen und ins Formular einzutragen. Zudem wollen wir beim initialen Laden die vorhandenen Bestellnummern in eine Auswahlliste laden.
Dem zweiten Knoten ist dazu über Eigenschaft Daten-Profil das Profil Portal_data_profile zugeordnet (1).
Die Eigenschaft Portalsteuerung des Quellstruktur-Feldes get_items (2) hat den Wert _submitButton_ und die des Feldes customer_id hat den Wert _readOnly_, d. h. es ist nicht editierbar, sondern wird nur gefüllt.
Das Formular sieht dann so aus wie in der folgenden Abbildung. Natürlich können Sie die bereits beschriebene Lokalisierung verwenden, um die Bezeichner des Formulars etwas schöner zu gestalten.
Wird das Formular geladen, dann werden initial die Bestellnummern (order_number) in die Auswahlliste geladen. Wird dort eine Bestellnummer ausgewählt, dann werden automatisch die Artikel (items) dazu geladen und die Kundennummer (customer_id). Beide Aktionen starten das Datenprofil Portal_data_profile. Der Button get_items startet ebenfalls das Datenprofil, auch wenn das hier nicht direkt nötig ist. Löschen Sie doch aber einmal einen der Artikel, dann können Sie ihn über den Button wieder laden.
Datenprofil
Erzeugen Sie ein neues Profil Portal_data_profile, wählen Sie den Eingangsagenten Man. Hochladen in Phase 1 und die Dokumentenart JSON in Phase 2.
Quellstruktur
Das Datenprofil muss in der Quellstruktur den gleichen Knoten enthalten (selber Name), dem es im Portal-Hauptprofil zugeordnet ist (hier also Order_Header). Zudem auch die benötigten Felder mit identischen Namen. Groß- und Kleinschreibung werden unterschieden. Es müssen nicht alle Felder verwendet werden. Hinweis: Hat ein Portal-Hauptprofil-Feld den Wert _keepInSession_ in Eigenschaft Portalsteuerung, wird es mit an das Datenprofil übergeben, egal an welcher Stelle es sich im Portal-Hauptprofil befindet.
Zielstruktur
Die Zielstruktur eines Datenprofils hat die beiden Knoten data und dataProvider.
Im Knoten data (muss immer so heißen und Knoten-Eigenschaft Maximum muss zwingend den Wert 1 haben!) werden alle Feldwerte an die gleichnamigen Felder des Portal-Hauptprofils zurückgeliefert. Tabellen können Sie füllen, wie das mit Knoten Order_Item gezeigt ist. In der Zielstruktur können Sie diesen Knoten über die Knoteneigenschaft Pfad und eine Integer-Variable so oft wiederholen, wie Sie möchten und damit beliebig viele Tabellen-Zeilen erzeugen. Sehen Sie sich einfach die Beispielprofile unten dazu an.
Knoten im Oberknoten dataProvider (muss immer so heißen und Knoten-Eigenschaft Maximum muss zwingend den Wert 1 haben!) versorgen eine namentlich zugeordnete Dropdown-Liste im Formular, hier order_number. Das betreffende Feld in der Quellstruktur des Portal-Hauptprofils muss den Wert * in Eigenschaft Erlaubte Werte haben.
Hierbei gibt es zwei Möglichkeiten.
Einmal kann man die Auswahlwerte in einem Knoten konkret in einer beliebigen Anzahl von Feldern angeben. Die Werte der Felder ergeben die Auswahlwerte. Siehe Knoten order_number#2 im Beispiel (der Knoten muss exakt order_number heißen, wobei das Suffix #2 nicht beachtet wird). In dieser Variante muss die Knoten-Eigenschaft Maximum zwingend den Wert 1 haben. Wichtiger Hinweis: Die Werte, die dann an das Portal-Hauptprofil geschickt werden, sind die Feldnamen! Hier im Beispiel also A oder B. Die Feldwerte dienen also lediglich als Label! Hinweis: Im Beispiel ist der Knoten order_number#2 inaktiv (Knoteneigenschaft Inaktiv auf true), da nur ein Knoten order_number (eine Methode) verwendet werden darf.
In der zweiten Variante (Knoten order_number#1 im Beispiel) verwenden Sie ein Feld value, das den Wert enthält, der an das Portal-Hauptprofil geschickt wird und ein Feld label, das den Auswahlwert liefert. Über die Eigenschaft Pfad können Sie den Knoten beliebig oft erzeugen. Verwenden Sie in dieser Variante den Wert 99999 für die Knoten-Eigenschaft Maximum.
Stellen Sie für das Datenprofil bitte abschließend die JsonCreationUnit in Phase 5 ein, erzeugen Sie einen Antwortweg vom Typ Eigene Klasse mit Klasse DefaultWebServiceResponse und stellen Sie den Inhalt auf Ausgabe von IU. Vergessen Sie zudem nicht das Profil aktiv zu setzen bevor Sie es speichern.
Genereller Ablauf
Der generelle Ablauf ist also wie folgt. Initial, bei Wertänderung (order_number hier) oder per Knopfdruck im Portal-Formular wird über den entsprechenden Knoten im Portal-Haupt-Profil das Datenprofil gestartet. Das Datenprofil erhält in der Quellstruktur (die syntaktisch der Quellstruktur des Portal-Haupt-Profils gleicht) die eingegebenen Daten aus dem Portal-Formular. Die Zielstruktur des Datenprofils erzeugt die Daten, die an das Portal-Haupt-Profil und damit letztendlich an das Portal-Formular zurückgeliefert werden. Die Kommunikation zwischen dem Portal-Haupt-Profil und dem Datenprofil läuft intern über JSON und ist im Normalfall nicht sichtbar. Hinweis: Wenn Sie die JSON-Daten betrachten möchten (evtl. zur Fehlersuche während der Entwicklung), die vom Datenprofil an das Portal-Hauptprofil zurückgeschickt werden, können Sie einen zusätzlichen Antwortweg vom Typ Datei mit gesetzter Option Ist Backup der Zieldaten im Datenprofil anlegen (stellen Sie auch hier den Inhalt auf Ausgabe von IU). Die Zieldaten-Backupdatei können Sie dann im Control Center betrachten. Hinweis: Unabhängig von den Einstellungen im Datenprofil, werden Backups der Eingangsdaten nach dem erfolgreichen Ende des jeweiligen Jobs sofort gelöscht. Das geschieht nicht, wenn die Checkbox Trace Meldungen für Phase 1 gesetzt ist (siehe Abschnitt Profil-Logging).
Beispiel-Profile
Importieren Sie einfach die folgenden zwei Profile und setzen Sie sie auf aktiv. Sie erreichen das Portal dann unter der URL http://<IP-oder-URL-des-Lobster_data-oder-DMZ>/portal (also z. B. http://localhost/portal). Hinweis: In unseren Profilen arbeiten wir nur mit Fixwerten, um das Beispiel einfach zu halten. In einer echten Anwendung würde Sie die Daten eher aus einer Datenbank lesen und dann auch wieder in eine Datenbank schreiben.