Usage et utilisation des scripts dans Iterop
Les tâches de script sont des tâches automatiques qui permettent la réalisation de calculs internes à Iterop (par opposition aux tâches de services qui sont des tâches automatiques pour aller se connecter à des systèmes d’informations tiers).
L’écriture des scripts dans Iterop se fait dans dans la configuration des tâches de scripts dans Iterop Design en cliquant sur « Editer le script ».
Nous allons pouvoir utiliser des tâches de scripts dans les cas suivants :
- Changement de valeur d’une variable dans le processus
- Modification des référentiels Iterop (listes, référentiels métiers)
- Lancer des instances multiples de processus depuis un processus maître
- Réaliser des calculs sur des variables de processus (délais entre deux dates, disjonction de cas…)
Iterop utilise un moteur JavaScript pour l’exécution des scripts. Ce moteur n’embarque que les bibliothèques natives JavaScript auxquelles ont été ajoutées des fonctions Iterop.
Cas d’utilisation très simple d’un script
Voici un processus très simple où l’on rentre le nombre d’articles que nous avons en stock ainsi que son prix unitaire. Le script aura pour but de calculer et enregistrer automatiquement la valeur marchande totale du stock afin de pouvoir, plus tard, l’afficher ou la traiter.
Etape 1 “Définir stock” (Tâche humaine) :
L’utilisateur saisit manuellement la quantité et le prix unitaire de l’article.
Etape 2 “Calculer valeur stock” (Tâche de script) :
Le script multiplie le nombre d’articles en stock par son prix unitaire.
var js_ quantite = definirStock_quantite;
var js_valeurUnitaire = definirStock_valeurUnitaire;
var js_valeurStock = js_quantite * js_valeurUnitaire;
io.set("valeurDuStock", js_valeurStock);
Etape 3 “Afficher quantité et valeur stock” (Tâche humaine) :
Le résultat est affiché dans une tâche.
Structure type d’un script
Il est conseillé de structurer son script Iterop en suivant les étapes suivantes :
- Récupération des variables du processus dans des variables locales au script
- Traitement sur les variables locales créées précédemment
- Mise à jour des variables du processus depuis des variables locales du script
Récupération des variables du processus dans des variables locales au script
Cette étape consiste à récupérer les variables du processus que le script va manipuler.
.En fonction du type de variable dans le processus (champ texte, date, booléen, nombre) le type récupéré dans le javascript sera différent. Le tableau ci-après donne la correspondance entre le type des variables dans les processus Iterop et le type qui est récupéré en JavaScript.
Type Iterop |
Type en JavaScript |
Booléen |
boolean |
Champ Texte, Bloc Texte, Texte Riche, Mot de passe, Liste de valeurs, Utilisateurs, Multi-Utilisateurs, Groupe, Multi-Groupes, Variable composée, Complexe |
string |
Fichier |
string (id du fichier) |
Date, Date et temps |
object |
Nombre entier, Nombre décimal |
number |
Pour réaliser les traitements que l’on souhaite en JavaScript il est nécessaire de transformer les variables récupérées en variables exploitables en JavaScript. Le script ci-après donne des exemples courants de récupération de variables (par convention, les variables issues du processus sont préfixées par « start_ »):
//Récupération d'une date
var js_date = new Date(start_date.getTime()*1);
//Transformation d'une liste en Array JavaScript
var js_tableauItemListe = start_liste.split("##");
//Récupération d'une variable composée en json
var js_jsonVariableComposee = JSON.parse(start_variableComposee);
//Récupération d'une variable retour de service en JSON
var js_retourService = JSON.parse(tacheService_out);
Traitement sur les variables locales créées précédemment
C’est dans cette partie que l’on va écrire notre script. L’usage des fonctions JavaScript est recommandé lors de l’écriture d’un script, ceci à des fins de réutilisation.
Le code ci-après donne un exemple d’utilisation de fonction :
var js_dateA = new Date(start_dateA.getTime());
var js_dateB = new Date(start_dateB.getTime());
//Appel de la fonction JavaScript
var js_delai = calculDelaiDates(js_dateA,js_dateB)
function calculDelaiDatesJours(dateA,dateB){
//Cette fonction renvoie le nombre de jour entre une dateB et une dateA
var delai = (dateB.getTime()-dateA.getTime())/(1000*60*60*24);
return delai;
}
Mise à jour des variables du processus depuis des variables locales du script
Lorsque les traitements du script ont été réalisés, il est nécessaire d’insérer le résultat du/des calcul(s) dans une/des variable(s) du processus.
Pour cela on utilise l’instruction io.set(« start_variableProcessus », valeur).
//Insertion d'un JSON depuis une variable de processus
io.set("variablesCible_JSON", JSON.stringify(js_scriptJSON));
//Insertion d'un booléen
io.set("variablesCible_booleen", true);
Exemple de script : Modification de l’identificateur du processus
Il est souvent utile de construire l’identificateur d’un processus à partir de données renseignées dans le formulaire de démarrage. Dans notre exemple nous allons chercher à construire l’identificateur suivant : [Date de la demande au format JJ-MM-AAAA] – [Nom du client] – Numéro de la demande [numéro Incrémental]
Le script suivant permet de faire cela.
//Exemple de script pour la modification de l'identificateur du processus
//Récupération des variables du processus
var js_numeroDeLaDemande = identificatorInstance;
var js_dateDeLaDemande = new Date(start_dateDeLaDemande.getTime()*1)
var js_nomDuClient = start_nomDuClient;
//Traitement sur les variables récupérées
var js_nouvelIdentificateur = buildDateString(js_dateDeLaDemande) + " - " + js_nomDuClient + js_numeroDeLaDemande;
//Mise à jour des variables dans le processus
io.set("identificatorInstance",js_nouvelIdentificateur)
//Fonction
function buildDateString(date){
//Prend une date en JS et la transforme en date au format DD/MM/YYYY
return ("0" + date.getDate()).slice(-2)+ "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + date.getFullYear();
}
Les méthodes JavaScript utilisables
Récapitulatif des méthodes JavaScript utilisables selon le type de la variable
JSON
Liste des méthodes JavaScript utilisables sur les JSON
Les deux méthodes JSON.parse() et JSON.stringify() fonctionnent sur Iterop.
Date
Liste des méthodes JavaScript utilisables sur des dates
Attention, les méthodes getYear(), setYear(), toGMTString() ainsi que toSource() ne fonctionnent pas sur Iterop car elles ne sont plus maintenues ou standardisées.
String (chaîne de caractères)
Liste des méthodes JavaScript utilisables sur des strings
Attention, les méthodes :
– fromCodePoint()
– codePointAt()
– includes()
– matchAll()
– normalize()
– padEnd()
– padStart()
– repeat()
– trimEnd()
– trimStart()
Ne fonctionnent pas sur Iterop.
Utiliser les fonctions Iterop (méthodes Juel)
Il est difficile, voir impossible de mémoriser tout les id des variables de notre processus. C’est pourquoi il est possible de les récupérer avec le menu accessible via le clic droit.
Il est également possible d’avoir accès :
- Aux ID des variables du processus
- Aux méthodes JUEL (également appelées « Fonctions Iterop »), des méthodes prédéfinies très utiles.
- Aux ID des tâches, listes et tables de dépendances.
- A des opérateurs (arithmétiques et logiques) ainsi qu’à des constantes.
Les méthodes JUEL
Il existe différentes familles de méthodes.
La liste des fonctions Iterop (Méthodes JUEL) sont répertoriées ici :
Les différentes fonctions Iterop
Tout ce qu’il est possible de faire :
- Manipuler des fichiers Excel
- Vérifier l’existence d’une valeur, même de lui en donner une si elle n’en a pas
- Générer des fichiers PDF / Créer des fichiers, modifier leur nom
- Manipuler vos listes (ajouter, supprimer des éléments)
- Créer et générer des historiques ou rapports d’activité
- Récupérer des date de départ ou de fin de tâche
- Récupérer des informations sur l’acteur d’une tâche (email, nom, login, …)
- Récupérer des informations sur un utilisateur (nom, email, …)
ou groupe (nom du groupe, membres, …) - Créer ou récupérer une variable
- Manipuler ou formater une date
- Utiliser et gérer vos référentiels métiers
Qu’est-ce qu’un référentiel métier ? - Affecter, gérer des rôles de superviseur dynamique
Rappel : Attention ! Les valeurs récupérées par les fonctions Iterop seront donc d’un type Iterop. Cela implique qu’un traitement préalable sera peut être nécessaire afin de pouvoir bien les manipuler.
Script en erreur
Si votre script comporte des erreurs, il ne pourra s’exécuter correctement.
Une erreur est alors générée et pourra être consultée dans l’onglet « Erreurs » de PLAY.
Une fois que vous avez cliqué sur l’une des erreurs présentes :
Vous pouvez voir l’emplacement de l’erreur et sa signification.
Pour cet exemple, on peut comprendre qu’il y a un souci à la ligne numéro 3, colonne 106.