$script.call
¶
Description¶
Évalue un script externe et retourne un map contenant les objets (variables, fonctions, etc.) exportés par le script.
Syntaxe¶
$script.call( name [ , parameters [ , options ] ] )
Paramètres¶
name
string-
Nom du script à exécuter. Le nom peut être passé avec ou sans l'extension.
Le nom doit toujours être donné de façon relative par rapport au dossier dans lequel se trouve le script courant. Si tous les scripts sont présents dans le dossier de scripts de l'application, alors on pourra simplement invoquer un script par son nom (avec ou sans extension).
Si le script courant est à la racine du dossier de scripts et souhaite appeler un script
foo.ewts
présent dans un sous-dossiersubdir
, alors il faudra notersubdir/foo
, comme cela se fait pour l'instructionimport
.À l'inverse, si un script présent dans un sous-dossier souhaite appeler un script
bar.ewts
présent au niveau supérieur, il faudra noter../bar
.Il n'est pas possible d'exécuter un script présent en-dehors du dossier de scripts de l'application ou de ses sous-dossiers.
parameters
any- Paramètres à passer au script. Habituellement on passe les paramètres
sous la forme d'un map, mais en réalité n'importe quel type d'objet
est autorisé. L'objet passé via
parameters
sera disponible via la la variable$$
dans le script appelé. options
map-
Option d'exécution du script. Les options supportées sont:
context
string / map-
Contexte sur lequel évaluer le script. Si défini, le contexte doit être passé sous forme de
string
ou demap
.Si non spécifié, le script est évalué dans le contexte courant.
Le contexte courant est rétabli après l'exécution du script.
Attention, il y a une différence entre le fait de ne pas spécifier le contexte et le fait de spécifier un contexte
null
ou vide. Comme indiqué ci-dessus, le moteur se rabat sur le contexte courant lorsque la propriété n'est pas spécifiée. Par contre, si elle est définie à une valeurnull
ou vide (string vide ou map sansmodelName
) cela signifie que l'on souhaite expressément exécuter le script en-dehors de tout contexte, ou dit autrement, sur un contexte "hors dossier".L'exemple n°3 ci-dessous illustre ce comportement.
async
boolean-
Valeur
true
/false
indiquant si on souhaite exécuter le script de manière asynchrone. La valeur par défaut estfalse
.Lorsqu'un script est exécuté de manière asynchrone, la méthode retourne l'identifiant de thread. Celui-ci peut être passé à la méthode
$script.getStatus
pour obtenir un état de fonctionnement du script.Le mode asynchrone est décrit dans le chapitre Exécution asynchrone de la doc de référence.
onprogress
function-
Fonction de callback à invoquer lorsque le script annonce une progression et lorsque le traitement est terminé. Le prototype de la fonction de callback doit être
function(status)
oùstatus
va recevoir un map indiquant l'état d'avancement au moyen des propriétésloaded
,total
,progress
ettarget
.Voir également
$script.setProgress
. oncomplete
function- Fonction de callback invoquée lorsque l'exécution du script se
termine. La fonction de callback doit avoir le prototype suivant:
function(result)
oùresult
contient le résultat standard d'exécution du script (valeur équivalente au return de la fonction$script.call
)
Retour¶
Retourne un objet de type EwtTypeMap
contenant les différents objets
exportés par le script.
Exemple¶
1. Exemple de base¶
$script.call("toolboxVendeur", { action : "recherche-doublons" });
2. Fonction de callback¶
Exemple d'appel synchrone avec fonction de callback pour afficher
l'avancement. Dans l'exemple suivant, le script s'appelle sample.ewts
et il s'appelle lui-même pour déclencher le test.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Le script ci-dessus génère les traces suivantes:
progress: {"loaded": 0.0, "total": 1.0, "progress": 0.0, "target": sample}
progress: {"loaded": 0.05, "total": 1.0, "progress": 0.05, "target": sample}
progress: {"loaded": 0.1, "total": 1.0, "progress": 0.1, "target": sample}
progress: {"loaded": 0.15, "total": 1.0, "progress": 0.15, "target": sample}
progress: {"loaded": 0.2, "total": 1.0, "progress": 0.2, "target": sample}
progress: {"loaded": 0.25, "total": 1.0, "progress": 0.25, "target": sample}
progress: {"loaded": 0.3, "total": 1.0, "progress": 0.3, "target": sample}
progress: {"loaded": 0.35, "total": 1.0, "progress": 0.35, "target": sample}
progress: {"loaded": 0.4, "total": 1.0, "progress": 0.4, "target": sample}
progress: {"loaded": 0.45, "total": 1.0, "progress": 0.45, "target": sample}
progress: {"loaded": 0.5, "total": 1.0, "progress": 0.5, "target": sample}
progress: {"loaded": 0.55, "total": 1.0, "progress": 0.55, "target": sample}
progress: {"loaded": 0.6, "total": 1.0, "progress": 0.6, "target": sample}
progress: {"loaded": 0.65, "total": 1.0, "progress": 0.65, "target": sample}
progress: {"loaded": 0.7, "total": 1.0, "progress": 0.7, "target": sample}
progress: {"loaded": 0.75, "total": 1.0, "progress": 0.75, "target": sample}
progress: {"loaded": 0.8, "total": 1.0, "progress": 0.8, "target": sample}
progress: {"loaded": 0.85, "total": 1.0, "progress": 0.85, "target": sample}
progress: {"loaded": 0.9, "total": 1.0, "progress": 0.9, "target": sample}
progress: {"loaded": 0.95, "total": 1.0, "progress": 0.95, "target": sample}
progress: {"loaded": 1.0, "total": 1.0, "progress": 1.0, "target": sample}
C'est terminé !
{"res": success}
3. Invalidation de contexte¶
Cet exemple cherche à montrer le comportement de la méthode en fonction du contexte passé en option. Commençons par le cas standard où l'on ne passe pas de contexte.
1 2 3 4 5 |
|
1 |
|
L'appel du script foo
ci-dessus provoque les traces suivantes. La
ligne 3 confirme que le script bar
est exécuté dans le contexte
du dossier ouvert par foo
.
1 2 3 4 |
|
Modifions à présent la 4e ligne du script foo
pour forcer un contexte vide
lors de l'appel à la méthode $script.call
. Ici, on passe le contexte vide
sous la forme d'un string vide ""
, mais on obtient le même résultat en
passant un map vide {}
, voire n'importe quel map du moment qu'il ne
contient pas la propriété modelName
. Le script bar
reste
quant à lui inchangé.
1 2 3 4 5 |
|
L'appel du script foo.ewts
ci-dessus provoque les traces suivantes.
1 2 3 4 |
|
La 3e ligne de log confirme que le script bar
est exécuté en-dehors du
contexte du dossier ouvert par foo
.