Dans cette leçon, nous parlerons des champs d'application et des références. La connaissance de ces éléments vous aidera à rendre les règles et les actions réutilisables, ainsi qu'à accéder aux données et à les gérer dans l'ensemble de votre composant.
Il existe deux champs d'application dans lesquels vous pouvez déclarer des règles, des actions et des données :
- étape : Chaque étape d'un composant a sa propre portée. Les règles, actions et données définies ici ne sont pas disponibles ailleurs.
- flux de travail : Toutes les étapes d'un composant ont accès aux règles, actions et données ajoutées à la portée du flux de travail.
En outre, trois champs d'application sont disponibles pour stocker les données :
- la racine : Tous les composants d'un flux de travail ont accès à la portée de la racine. Cet accès peut être utilisé pour transmettre des données entre les composants.
- user_session : Tant que l'utilisateur ne se déconnecte pas, les données stockées dans l'espace user_session seront accessibles même après la fin de l'exécution du flux de travail (par exemple, à partir d'un autre flux de travail ou lors de l'exécution multiple du même flux de travail).
- global : tant que l'application Frontline Workplace n'est pas fermée, les données stockées dans le champ d'application global seront accessibles, même si un utilisateur se déconnecte et qu'un autre utilisateur se connecte.
Exemple de composant
<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>
Dans cet exemple :
- Une règle avec
id="menu_button_selection"
est définie dans l'étendue du flux de travail, puis référencée dans les étapes id="stepA"
et id="stepB"
à l'aide de l'attribut ref
.
Remarque : la réutilisation des règles et des actions rend le comportement de votre composant cohérent, améliore la maintenabilité et minimise la quantité de code.
- Les identifiants à l'intérieur d'un champ d'application doivent être uniques. Vous pouvez utiliser des ID identiques dans d'autres champs d'application, mais à moins d'avoir une très bonne raison, nous vous recommandons de ne pas le faire, afin d'éviter toute confusion. Si vous utilisez des ID identiques, l'ordre de priorité est ascendant: si une règle avec
id="menu_button_selection"
est directement définie dans l'étendue de l'étape, elle sera exécutée à la place de toute règle prédéfinie avec le même ID dans l'étendue du flux de travail. - Vous pouvez également avoir des règles/actions qui ne sont nécessaires que dans l'une de vos étapes mais qui sont nécessaires dans plusieurs états/règles de cette étape particulière. Dans ce cas, vous pouvez définir la règle/action dans la portée de l'étape et la référencer de la même manière.
- Enfin, vous pouvez également définir des règles et des actions directement là où elles sont nécessaires. Une telle règle/action ne sera disponible nulle part ailleurs. Si vous savez que votre règle/action ne sera pas réutilisée, une définition directe peut rendre le composant plus lisible puisque vous n'avez pas à sauter pour voir l'implémentation.
Remarque : les identifiants doivent être uniques au sein d'un champ d'application. Si vous copiez et collez une règle ou une action existante comme modèle lors de la création d'une nouvelle règle ou action, une erreur typique est d'oublier de changer l'attribut ID. Prenez l'habitude de modifier d'abord l'ID.
Affectation
Refondre notre composant de choix :
- Placez l'action
finish_workflow
dans le champ d'application global et faites-y référence dans la règle. - Placez la règle
menu_button_selection
dans la portée globale et faites-y référence dans l'étape. - Assurez-vous que le composant fonctionne toujours comme prévu.
Composant de téléchargement (mission préalable)
Aide et ressources
Conditions préalables
Avant de commencer cette première mission pratique, vous devez avoir accès à un centre de commandement Frontline (FCC).
- Votre utilisateur doit avoir les rôles "Créateur" et "Développeur".
- Vous avez besoin d'un dispositif bootstrap sur ce FCC à des fins de test.
- L'appareil de l'utilisateur doit également avoir le rôle de "développeur".
Pour plus d'informations, veuillez consulter la section Conditions préalables du guide d'installation.
Voici quelques conseils pour faciliter le développement de flux de travail et de composants :
Mode de prévisualisation
Si vos utilisateurs ont le rôle de "développeur", vous pouvez utiliser le mode "Aperçu". Ce mode vous permet de tester immédiatement vos modifications sans avoir à publier le flux de travail. Vous pouvez utiliser le mode aperçu de deux manières :
- Connectez-vous à votre appareil et sélectionnez le mode Aperçu dans le menu principal. L'appareil devrait maintenant afficher "Waiting for Server".
- Dans Frontline Creator, sélectionnez votre dispositif de débogage qui se trouve à droite de l'icône d'enregistrement du flux de travail, puis appuyez sur le bouton Play ou sur "Alt + P". Vous pouvez également utiliser le raccourci clavier "Alt + p" dans l'éditeur de composants.
L'état actuel de votre flux de travail sera sauvegardé et envoyé à l'appareil. Vous pouvez modifier temporairement la transition de démarrage pour ne tester qu'un composant spécifique de votre flux de travail.
Flipper
Il est utile de mettre en place un outil de débogage afin de pouvoir accéder aux journaux de l'appareil pendant l'exécution du flux de travail. Flipper est l'un de ces outils.
Journaux du serveur et du client
Vous pouvez accéder aux logs de FCC et de l'appareil en vous connectant avec l'utilisateur sysadmin ou en accédant directement à votre dossier UBIMAX_HOME\logs. Les logs de l'appareil sont poussés vers le serveur périodiquement, mais vous pouvez demander un téléchargement immédiat en tant qu'utilisateur sysadmin.
Notes de solution
Si vous n'avez pas encore tout mis en place pour le développement, cela aurait dû être la tâche principale de ce premier travail pratique.
Il convient de noter que dans la définition de la règle, vous faites désormais référence à une action prédéfinie dans le même champ d'application. L'ordre des balises <actions>et
<rules>
n'a pas d'importance pour que cela fonctionne. Voici à quoi devrait ressembler votre composant :
<?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>
Composant de téléchargement (après l'affectation)
Vous avez ainsi terminé la deuxième leçon. La prochaine leçon portera sur les variables de données.