Alle Daten in einer Komponente werden als <Kontext>-Variable
gespeichert. Variablen können im Workflow- oder Schrittbereich der Komponente deklariert und initialisiert werden, je nachdem, wo Sie sie benötigen:
<context>
<param name="Title" type="string">Please choose one</param>
</context>
Verfügbare Datentypen: string
, bool
, double
, long
und object
(Standardtyp).
Beispiel Komponente
Verwenden Sie die setvar-Aktion, um Daten zu manipulieren. Diese Aktion kann auch verwendet werden, um nicht deklarierte Variablen zu deklarieren und zu setzen.
<setvar id="next_step">
<context_of>workflow</context_of>
<!-- possible values: step, workflow, root, user_session,global -->
<context_update>
<param name="current_step_index" type="long">#{current_step} + 1</param>
<param name="string_concat" type="string">Step #{step_name} with description: #{step_description}</param>
</context_update>
</setvar>
- Mit dem Element <context_of> können Sie den Bereich festlegen, in dem die Variable gespeichert wird. Diese Aktion wird immer dann verwendet, wenn Sie Daten im Bereich "root", "user_session" oder "global" speichern wollen. Wenn Sie diese Bereiche verwenden, sollten Sie bei der Benennung Ihrer Variablen vorsichtig sein. Stellen Sie sicher, dass andere Komponenten/Workflows, die dieselben Variablennamen verwenden, keine Seiteneffekte verursachen (insbesondere, wenn Sie Komponenten wiederverwenden, die auf diese Bereiche zugreifen)
Tipps und Tricks: Wenn Sie Daten zwischen Komponenten übergeben, sollten Sie normalerweise einen Ausgabeparameter in Ihrer finish_workflow-Aktion
verwenden. In diesem Fall wird die Ausgabe im Schrittbereich des Startschritts Ihrer nachfolgenden Komponente verfügbar sein. Verwenden Sie den Wurzelbereich nur dann, wenn Ihnen dies nicht ausreicht und die Verwaltung der Ausgabeparameter zu kompliziert wird.
Das obige Beispiel zeigt auch, wie auf Datenvariablen zugegriffen werden kann:
Im context_update-Tag
werden zwei Variablen mit der gleichen setvar-Aktion gesetzt.
- Der erste Parameter
current_step_index
wird durch Zugriff auf die Kontextvariable #{current_step}
und deren Inkrementierung um 1 gesetzt. - Die zweite Variable
string_concat zeigt
ein Beispiel für eine String-Verkettung mit bestehenden Kontextvariablen.
Der Zugriff auf Datenvariablen erfolgt durch Einschließen ihres Namens, der mit '#{' beginnt und mit '}' endet .
- Schließlich speichert der spezielle Bereich
user_session
den Wert global, bis sich der Benutzer abmeldet. Auf ihn kann auch dann noch zugegriffen werden, wenn der Benutzer den Workflow verlässt und denselben oder einen anderen Workflow betritt. Er kann mit #{user_session::my_value}
aufgerufen werden.
Zuweisung
Aufgabe 1: Testen wir, wie der Wurzelkontext funktioniert:
- Verwenden Sie die Aktion
setvar
, um die Wahl des Benutzers in einer Stammvariablen zu
speichern. - Fügen Sie eine Komponente "Codevergleich" in Ihren Arbeitsablauf ein.
- Geben Sie
#{Auswahl}
in das Eingabefeld der Komponentenkonfiguration "Labels -> Komponententitel" ein. Wenn Sie den Workflow ausführen, sollte der von Ihnen gewählte Wert in der Kopfzeile der Codevergleichskomponente angezeigt werden. - Probieren Sie es aus und vergewissern Sie sich, dass die Auswahl in der Komponente "Codevergleich" korrekt angezeigt wird.
Aufgabe 2: Wie beschrieben, sollte der Root-Kontext sparsam verwendet werden und birgt Risiken, insbesondere bei der Wiederverwendung der Komponente im selben Workflow. Machen Sie die Änderungen, die Sie zuvor vorgenommen haben, rückgängig (Sie können eine ältere Version im Workflow-Panel neben der Option "Workflow veröffentlichen" auswählen) oder ändern Sie den vorhandenen Code.
- Speichern Sie stattdessen die Auswahl im Workflow-Bereich.
- Geben Sie den Inhalt dieser Variablen als Ausgabeparameter der Aktion
finish_workflow
weiter. - Geben Sie Ihren Ausgabeparameter in das Konfigurationsfeld der Komponente "Codevergleich" ein und testen Sie, ob er funktioniert.
Download-Komponente (Pre-Assignment)
Hilfe und Ressourcen
- Dokumentation für die Aktion
setvar
. - Dokumentation für die Aktion
finish_workflow
.
Hinweise zur Lösung
Wie Sie gesehen haben, können Sie im Konfigurationsbereich sogar Kontextvariablen verwenden. Dies kann Ihnen helfen, Komponenten auf der Grundlage früherer Benutzeraktionen zu konfigurieren.
Download Lösung mit Wurzelvariable
Lösung mit Ausgabeparametern herunterladen
FAQ
Frage: Ich habe versucht, eine andere Komponente als "Code Comparison" einzufügen, aber der Titel zeigt jetzt #{initialChoice}
(oder einen anderen Variablennamen) anstelle des tatsächlichen Inhalts der Variablen. Warum ist das so?
Antwort: Nicht alle unsere Standardkomponenten sind so geschrieben, dass die Variable sofort im Layout ausgewertet werden kann. Sie könnten jede Komponente so ändern, dass es funktioniert, aber das berührt das Wissen über die Benutzeroberfläche und die Komponentenkonfiguration, das wir in späteren Lektionen besprechen werden. Der Unterschied zwischen der Komponente "Codevergleich" und einigen anderen besteht darin, dass die Komponente "Codevergleich" den Konfigurationswert direkt in das Mapping einfügt, während die anderen Komponenten eine Kontextvariable mit der Konfiguration initialisieren. Eine einfache Möglichkeit, dies auch für andere Komponenten zu erreichen, ist, den Konfigurationswert direkt in das Mapping oder Layout einzufügen, z.B:
<mapping>
<ui_element name="Topic">
<param name="content">§{configuration.labels.value.title.value}§</param>
</ui_element>
</mapping>
Damit haben Sie die dritte Lektion abgeschlossen. In der nächsten Lektion werden wir uns eingehend mit Regelausdrücken beschäftigen.