Zum Inhalt

Erzeugung von Subtabellen mit Scripting Aktivität

Erzeugung von Parameter-Objekten vom Typ USERDEFINED subtable

Die Möglichkeit, ein Parameterobjekt vom Typ USERDEFINED subtable als Ausgabeparameter vom WebFormular erzeugen zu lassen, haben wir bereits kennen gelernt (siehe z.B. Abschnitt Realisierung von Output Subtabellen. Man kann ein solches Objekt aber auch selbst erzeugen. In Class WebFormSubtable wird beschrieben, wie man

  • mittels Konstruktor ein neues Objekt erzeugt (new WebFormSubtable())
  • Spalten hinzufügt (addColumn(…)) und löscht (removeColumn(…))
  • Zeilen einfügt (addRow()) und löscht ( removeRow(…))
  • einzelne Zellen oder eine gesamte Zeile mit Werten versorgt (setValue(…), setValues(…))

Ein solches Objekt könnte z.B. von einer Scripting-Aktivität executeScript oder einem anderen Java-Programm erzeugt und als Ausgabeparameter ausgegeben werden.
Der in der folgenden Abbildung dargestellte Beispielprozess erzeugt im ersten Prozessschritt per Ausgabeparameter ein Ausgabeobjekt vom Typ UDT: subtable, das dem zweiten Schritt als Eingabeparameter dient und dort angezeigt wird.

Die Formulardeklaration ist im Folgenden dargestellt. Wie man dort sieht, ist die SubtableView sowohl mit dem Eingabeparameter names subtable verknüpft und als auch intern mit der Subtable-Datenstruktur namens test assoziiert. Die Datentypen der test-Struktur sind – wie die Namen schon andeuten – vom Typ Boolean, Integer, Float und String.

SubtableView und subtable-Datenstruktur des Schrittes Anzeigen Tabelle:

Das Script in der folgenden Abbildung erzeugt ein passend strukturiertes Subtable-Objekt für seinen Ausgabeparameter „subtable“ und demonstriert die beiden alternativen Möglichkeiten, diesem Objekt mit Werten versehene Zeilen hinzuzufügen.
Das Script des Schrittes Erzeugen Tabelle:


import de.aristaflow.adept2.extensions.datatypes.WebFormSubtable; 
import de.aristaflow.adept2.model.globals.ProcessConstants.AdeptDataType; 
WebFormSubtable s = new WebFormSubtable(); 
s.addColumn("booleanCol", AdeptDataType.BOOLEAN); 
s.addColumn("integerCol", AdeptDataType.INTEGER); 
s.addColumn("floatCol", AdeptDataType.FLOAT); 
s.addColumn("stringCol", AdeptDataType.STRING); 
s.addRow(); 
s.setValue("booleanCol", 0, true); 
s.setValue("integerCol", 0, 123L); // Ganzzahlenwerte müssen vom Java-Typ Long sein 
s.setValue("floatCol", 0, 123.456D); // Fließkommawerte müssen vom Java-Typ Double sein 
s.setValue("stringCol", 0, "string"); 
s.addRow(new Object[]{false, 456L, 456.789D, "string2"}); 

$subtable = s.saveToUDTValue();

Die resultierende Tabelle, die im zweiten Prozessschritt ausgegeben wird, sieht wie folgt aus: