1. Home
  2. Iterop Design
  3. Utiliser les scripts
  4. Généralités sur les Scripts

Généralités sur les Scripts

Information

La version de JavaScript utilisée est ECMAScript 5.1.

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).

Tâche de script

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.

Astuce

Dans une tâche de script vous pouvez utiliser le clic droit qui vous donnera un menu contextuel vous permettant d’accéder aux identifiants des variables, des tâches, des listes, des tables de dépendance et aux 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

Information

Cette partie vous propose des bonnes pratiques pour l’écriture de scripts dans Iterop. Il n’est pas obligatoire de les suivre mais vivement conseillé notamment pour assurer leur lisibilité et leur maintenabilité.

Il est conseillé de structurer son script Iterop en suivant les étapes suivantes :

  1. Récupération des variables du processus dans des variables locales au script
  2. Traitement sur les variables locales créées précédemment
  3. 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.

Bonne pratique

Pour éviter toute confusion il est préférable de préfixer les variables locales que l’on crée par le préfixe “js_”

.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

Compléments

Si une variable n’est pas renseignée dans un formulaire alors sa valeur est “null” en javascript sauf dans le cas des variables composées où la valeur est la chaîne de caractères “[]”. En revanche, si elle n’est pas affichée sur un formulaire (existence d’une condition d’affichage sur cette variable) alors son type est “undefined” en JavaScript

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;
}
Attention

Toute modification d’une variable du processus dans un script n’est pas prise en compte tant que l’instruction io.set(“variableId_process”,valeur) n’est pas appelée

Le JavaScript exécuté dans Iterop refuse de créer des constantes avec l’instruction “const”.

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).

Attention

La valeur qui correspond au second paramètre de l’instruction io.set(“start_variableProcessus”, valeur) doit être typée dans un type compréhensible par Iterop.

//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.

ERREUR COURANTE

Parmi les erreurs les plus importantes, on retrouve la “boucle infinie” qui est généralement signalée par les messages suivants :

Timeout exeption : script execution exceeded time limit. Cause could be an infinite loop

ou encore : 

Memory exeption : Script execution exceed memory limit. Variables will not be recorded. Cause could be an infinite loop

Si vous rencontrez l’un de ces deux messages, c’est que la condition de terminaison de votre boucle FOR ou WHILE n’est jamais atteinte.

Updated on 17 mai 2022

Was this article helpful?

Related Articles

Need Support?
Can't find the answer you're looking for?
Contact Support