Toutes les données d'un composant sont enregistrées sous la forme d'une variable <contexte>
. Les variables peuvent être déclarées et initialisées dans la portée du flux de travail ou de l'étape du composant, selon l'endroit où vous en avez besoin :
<context>
<param name="Title" type="string">Please choose one</param>
</context>
Types de données disponibles : string
, bool
, double
, long
et object
(type par défaut).
Exemple de composant
Utilisez l'action setvar
pour manipuler des données. Cette action peut également être utilisée pour déclarer et définir des variables non déclarées.
<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>
- L'élément <context_of> vous permet de définir la portée dans laquelle la variable est stockée. Cette action est utilisée lorsque vous souhaitez stocker des données dans la portée "root", "user_session" ou "global". Lorsque vous utilisez ces champs d'application, soyez prudent dans le nommage de vos variables. Assurez-vous que d'autres composants/flux de travail utilisant les mêmes noms de variables ne provoquent pas d'effets secondaires (en particulier si vous réutilisez des composants accédant à ces champs d'application).
Trucs et astuces: Lorsque vous transmettez des données entre des composants, vous devez normalement utiliser un paramètre de sortie dans votre action finish_workflow
. Dans ce cas, la sortie sera disponible dans la portée de l'étape de démarrage de votre composant suivant. N'utilisez la portée racine que si cela ne vous suffit pas et que la gestion des paramètres de sortie devient trop compliquée.
L'exemple ci-dessus montre également comment il est possible d'accéder aux variables de données :
Dans la balise context_update
, deux variables sont définies avec la même action setvar.
- Le premier paramètre
current_step_index
est défini en accédant à la variable de contexte #{current_step}
et en l'incrémentant de 1. - La deuxième variable
string_concatsh montre
un exemple de concaténation de chaînes avec des variables contextuelles existantes.
L'accès aux variables de données se fait en entourant leur nom, qui commence par "#{" et se termine par "}".
- Enfin, la portée spéciale
user_session
enregistre la valeur globalement jusqu'à ce que l'utilisateur se déconnecte. Il est possible d'y accéder même après que l'utilisateur a quitté le flux de travail et est entré dans le même flux de travail ou dans un autre. On peut y accéder en utilisant #{user_session::my_value}
.
Affectation
Exercice 1: testons le fonctionnement du contexte racine :
- Utilisez l'action
setvar
pour enregistrer le choix de l'utilisateur dans une variable racine choice
. - Insérez un composant "Comparaison de codes" dans votre flux de travail.
- Mettez
#{choix}
dans le champ de saisie de la configuration du composant "Etiquettes -> Titre du composant". Si vous exécutez le flux de travail, la valeur choisie devrait s'afficher dans l'en-tête du composant de comparaison de codes. - Essayez-le et assurez-vous que le choix est correctement affiché dans le composant "Comparaison des codes".
Affectation 2: Comme indiqué, le contexte racine doit être utilisé avec parcimonie et comporte des risques, en particulier lors de la réutilisation du composant dans le même flux de travail. Revenez sur les modifications que vous avez effectuées précédemment (vous pouvez sélectionner une ancienne version dans le panneau du flux de travail, à côté de l'option de publication du flux de travail) ou modifiez le code existant.
- Enregistrez plutôt le choix dans l'étendue du flux de travail.
- Transmettre le contenu de cette variable en tant que paramètre de sortie de l'action
finish_workflow
. - Placez votre paramètre de sortie dans le panneau de configuration du composant "Comparaison de codes" et testez s'il fonctionne.
Composant de téléchargement (mission préalable)
Aide et ressources
- Documentation pour l'action
setvar
. - Documentation pour l'action
finish_workflow
.
Notes de solution
Comme vous l'avez vu, vous pouvez même utiliser des variables contextuelles dans le panneau de configuration. Cela peut vous aider à configurer les composants en fonction des actions précédentes de l'utilisateur.
Télécharger la solution avec la variable racine
Télécharger la solution avec les paramètres de sortie
FAQ
Question: J'ai essayé d'insérer un composant différent de "Comparaison de codes", mais le titre affiche maintenant #{choixinitial}
(ou un autre nom de variable) au lieu du contenu réel de la variable. Pourquoi ?
Réponse : Tous nos composants standard ne sont pas écrits de manière à permettre l'évaluation immédiate de la variable dans la mise en page. Vous pouvez modifier n'importe quel composant pour qu'il fonctionne, mais cela touche à l'interface utilisateur et à la connaissance de la configuration des composants, que nous aborderons dans des leçons ultérieures. La différence entre le composant "Comparaison de code" et certains autres est que le composant de comparaison de code insère la valeur de configuration directement dans le mappage, alors que les autres composants initialisent une variable de contexte avec la configuration. Une manière simple de faire fonctionner cela pour d'autres composants est de mettre la valeur de configuration directement dans le mappage ou la disposition, par exemple :
<mapping>
<ui_element name="Topic">
<param name="content">§{configuration.labels.value.title.value}§</param>
</ui_element>
</mapping>
Vous avez maintenant terminé la troisième leçon. La prochaine leçon vous permettra d'approfondir les expressions de règles.