In dieser Lektion werden wir über Scopes und Referenzen sprechen. Das Wissen darüber wird Ihnen helfen, Regeln und Aktionen wiederverwendbar zu machen, um auf Daten in Ihrer gesamten Komponente zuzugreifen und diese zu verwalten.
Es gibt zwei Bereiche, in denen Sie Regeln, Aktionen und Daten deklarieren können:
- Schritt: Jeder Schritt einer Komponente hat seinen eigenen Geltungsbereich. Die hier definierten Regeln, Aktionen und Daten sind an anderer Stelle nicht verfügbar.
- Arbeitsablauf: Alle Schritte einer Komponente haben Zugriff auf die Regeln, Aktionen und Daten, die dem Workflow-Bereich hinzugefügt wurden.
Außerdem stehen drei Bereiche zum Speichern von Daten zur Verfügung:
- Wurzel: Alle Komponenten eines Workflows haben Zugriff auf den Wurzelbereich. Dieser kann verwendet werden, um Daten zwischen Komponenten zu übertragen.
- user_session: Solange sich der Benutzer nicht abmeldet, sind die im Bereich user_session gespeicherten Daten auch nach Beendigung der Workflow-Ausführung zugänglich (z. B. aus einem anderen Workflow heraus oder bei mehrfacher Ausführung desselben Workflows).
- global: Solange die Frontline Workplace-Anwendung nicht geschlossen ist, sind die im globalen Bereich gespeicherten Daten zugänglich, auch wenn sich ein Benutzer abmeldet und ein anderer Benutzer anmeldet.
Beispielkomponente
<workflow [ATTRIBUTES]>
<context> [...] </context> \
<rules> -\
<rule id="menu_button_selection"> --\
<expression>[..]</expression> ---\
<actions> ----\
[...] -----|--> Workflow scope
</actions> ----/
</rule> ---/
</rules> --/
<actions> [...] </actions> -/
<steps>
<step id="stepA" [ATTRIBUTES]>
<context> [...] </context> ----\
<rules> [...] </rules> -----|--> Step scope
<actions> [...] </actions> ----/
<states>
<onevent>
<rule ref="menu_button_selection"/> -------> Referencing a rule from the workflow scope
<rule id="show_notification"> --\
<expression>[..]</expression> ---\
<actions> ----\
[...] -----|--> Direct definition (could still reference a pre-defined action)
</actions> ----/
</rule> ---/
</onevent>
</states>
</step>
<step id="stepB" [ATTRIBUTES]>
<states>
<onevent>
<rule ref="menu_button_selection"/> -------> Referencing a rule from the workflow scope
</onevent>
</states>
</step>
</steps>
</workflow>
In diesem Beispiel:
- Eine Regel mit
id="menu_button_selection"
wird im Workflow-Bereich definiert und dann sowohl im Schritt id="stepA"
als auch im Schritt id="stepB"
mit dem Attribut ref
referenziert.
Hinweis: Durch die Wiederverwendung von Regeln und Aktionen wird das Verhalten Ihrer Komponente konsistent, die Wartbarkeit verbessert und die Menge an Code minimiert.
- Die IDs innerhalb eines Bereichs müssen eindeutig sein. Sie können identische IDs in anderen Bereichen verwenden, aber wenn Sie keinen sehr guten Grund haben, empfehlen wir, dies nicht zu tun, um Verwirrung zu vermeiden. Wenn Sie identische IDs verwenden, gilt die Rangfolge von unten nach oben: Wenn eine Regel mit
id="menu_button_selection"
direkt im Schrittbereich definiert ist, wird sie anstelle aller vordefinierten Regeln mit derselben ID im Workflow-Bereich ausgeführt. - Möglicherweise haben Sie auch Regeln/Aktionen, die nur in einem Ihrer Schritte, aber in mehreren Zuständen/Regeln dieses bestimmten Schrittes benötigt werden. In diesem Fall können Sie die Regel/Aktion im Schrittbereich definieren und sie auf dieselbe Weise referenzieren.
- Schließlich können Sie auch Regeln und Aktionen direkt dort definieren, wo sie benötigt werden. Eine solche Regel/Aktion wird nirgendwo anders verfügbar sein. Wenn Sie wissen, dass Ihre Regel/Aktion nicht wiederverwendet wird, kann eine direkte Definition die Komponente besser lesbar machen, da Sie nicht herumspringen müssen, um die Implementierung zu sehen.
Hinweis: IDs müssen innerhalb eines Bereichs eindeutig sein. Wenn Sie beim Erstellen einer neuen Regel oder Aktion eine bestehende Regel oder Aktion als Vorlage kopieren und einfügen, vergessen Sie in der Regel, das Attribut ID zu ändern. Machen Sie es sich zur Gewohnheit, zuerst die ID zu ändern.
Zuweisung
Überarbeiten Sie unsere Auswahlkomponente:
- Legen Sie die Aktion
finish_workflow
in den globalen Bereich und referenzieren Sie sie in der Regel. - Legen Sie die Regel
menu_button_selection
in den globalen Bereich und referenzieren Sie sie im Schritt. - Vergewissern Sie sich, dass das Bauteil noch wie vorgesehen funktioniert.
Download-Komponente (Pre-Assignment)
Hilfe und Ressourcen
Voraussetzungen
Bevor Sie mit diesem ersten praktischen Einsatz beginnen können, benötigen Sie Zugang zu einem Frontline Command Center (FCC).
- Ihr Benutzer sollte die Rollen "Ersteller" und "Entwickler" haben.
- Zu Testzwecken benötigen Sie ein Gerät, das mit dem FCC gebootet ist.
- Das Benutzergerät sollte auch die Rolle "Entwickler" haben.
Weitere Informationen finden Sie im Abschnitt " Voraussetzungen" der Installationsanleitung.
Hier sind einige Tipps, die die Entwicklung von Arbeitsabläufen und Komponenten etwas erleichtern:
Vorschau-Modus
Wenn Ihre Benutzer die Rolle "Entwickler" haben, können Sie die Funktion Vorschaumodus verwenden. In diesem Modus können Sie Ihre Änderungen sofort testen, ohne den Workflow veröffentlichen zu müssen. Sie können den Vorschaumodus auf zwei Arten nutzen:
- Melden Sie sich an Ihrem Gerät an und wählen Sie im Hauptmenü den Modus Vorschau. Das Gerät sollte nun "Waiting for Server" anzeigen.
- Wählen Sie im Frontline Creator Ihr Debug-Gerät aus, das rechts neben dem Symbol zum Speichern des Workflows zu finden ist, und drücken Sie dann die Schaltfläche " Play" oder "Alt + P". Sie können auch die Tastenkombination "Alt + p" im Komponenteneditor verwenden.
Der aktuelle Zustand Ihres Workflows wird gespeichert und an das Gerät gesendet. Sie können den Startübergang vorübergehend ändern, um nur eine bestimmte Komponente Ihres Workflows zu testen.
Flipper
Es ist sinnvoll, ein Debugging-Tool einzurichten, mit dem Sie während der Ausführung des Arbeitsablaufs auf die Geräteprotokolle zugreifen können. Flipper ist ein solches Tool.
Server- und Client-Protokolle
Sie können auf die FCC- und Geräteprotokolle zugreifen, indem Sie sich mit dem Benutzer sysadmin anmelden oder direkt auf den Ordner UBIMAX_HOME\logs zugreifen. Die Geräteprotokolle werden in regelmäßigen Abständen auf den Server übertragen, aber Sie können als sysadmin-Benutzer einen sofortigen Upload anfordern.
Anmerkungen zur Lösung
Wenn Sie noch nicht alles für die Entwicklung vorbereitet haben, sollte das die Hauptaufgabe für diese erste praktische Aufgabe sein.
In der Regeldefinition verweisen Sie nun auf eine vordefinierte Aktion, die im selben Bereich definiert ist. Die Reihenfolge der <actions>- und
<rules>-Tags
spielt keine Rolle, damit dies funktioniert. So sollte Ihre Komponente aussehen:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<workflow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" wfd_version="1.0" reporting="false"
id="choice" name="choice" descriptor="Choice component" startstep="choose"
xsi:noNamespaceSchemaLocation="../../../configuration/workflow.xsd">
<rules>
<rule id="menu_button_selection">
<expression>#{event:command} == 'APPLE' || #{event:command} == 'PEAR'</expression>
<actions>
<action ref="finish_workflow"/>
</actions>
</rule>
</rules>
<actions>
<finish_workflow id="finish_workflow">
<output>
<param name="selected_button" type="string">#{event:command}</param>
</output>
</finish_workflow>
</actions>
<steps>
<step id="choose" descriptor="the user selects between two options" uitemplate="ChoiceScreen">
<states>
<onevent>
<rule ref="menu_button_selection"/>
</onevent>
</states>
</step>
</steps>
</workflow>
Download-Komponente (Post-Assignment)
Damit haben Sie die zweite Lektion abgeschlossen. Die nächste Lektion wird sich mit Datenvariablen befassen.