Un script d’interaction utilisateur permet de programmer une interaction avec le propriétaire du travail et de modifier celui-ci en fonction de la réponse de l’utilisateur. Plus précisément, il permet d’afficher une série de boîtes de dialogue comportant des questions et des boutons d’action (OUI/NON, IMPRIMER/NON, OUI/NON/ANNULER). En fonction du choix de l’utilisateur, d’autres boîtes de dialogue peuvent s’afficher et des actions peuvent être effectuées. Enfin, une fois la dernière boîte de dialogue traitée, le script est terminé et le travail est marqué comme ready (prêt) et peut être lancé.
Si un script d’interaction utilisateur est présent, il doit d’abord être exécuté avec succès avant que le travail puisse être lancé. Jusqu’à ce moment-là, le travail est maintenu de force à pause.
Les fonctions PHP de base peuvent être utilisées, ainsi que la quasi-totalité de celles décrites dans le Guide de référence sur les scripts de tâches. Les deux seules méthodes non prises en charge par cette fonctionnalité sont $this->job->setPrinted() et $this->job->pause(). Outre les classes, méthodes et propriétés courantes, vous pouvez utiliser plusieurs fonctions supplémentaires pour communiquer avec l’application Client MyQ Desktop.
Comment rédiger un script d’interaction avec l’utilisateur
Dans l’onglet Client MyQ Desktop d’une file d’attente, dans la section Interaction avec l’utilisateur, ajoutez le script dans le champ prévu à cet effet, puis cliquez sur Enregistrer.
Vous devez tout d’abord définir la fonction `main()`. Cette fonction détermine si la boîte de dialogue doit s’ouvrir (et dans quelles conditions) ainsi que la boîte de dialogue à afficher.
Vous pouvez ensuite définir des fonctions de clic (onYes(), onNo(), onPrint(), onCancel()) associées aux différentes options sélectionnées.
Les propriétés publiques sont conservées d’un appel à l’autre. En effet, elles sont envoyées au client puis renvoyées.
Structure du script
Consultez le script suivant :
public $hasMoreThan10pages;
// script entry point
function main() {
/** Job object */
$job = $this->job;
$this->hasMoreThan10pages = $job->pageCount > 10;
// Show dialog if the job has more than 10 pages
if ($this->hasMoreThan10pages === true) {
$this->dialogYesNo("Job has more than 10 pages. Do you want to print in duplex?");
}
}
// If yes clicked
function onYes() {
// $this->hasMoreThan10pages is available also here
$this->job->duplex = 'longEdge';
}
// If no clicked
function onNo() {
// nothing. Job will be released.
}
À l’aide du script ci-dessus, cette boîte de dialogue s’affiche dans MDC :
Si vous connaissez le langage PHP, ce script correspond en réalité au corps de l’instruction class UserScript {...}.
Vous pouvez définir des propriétés telles que $hasMoreThan10pages. Les propriétés sont persistantes d’un appel de script à l’autre pour un même travail. Utilisez-les pour conserver un état entre plusieurs boîtes de dialogue.
Il existe une fonction main. Elle est appelée une seule fois au démarrage du script. Utilisez-la pour afficher la première boîte de dialogue.
Viennent ensuite les fonctions onXXX. Il s’agit des gestionnaires d’action appelés lorsqu’un bouton XXX est cliqué. Par exemple, le bouton Yes est géré via la fonction onYes.
Si vous n’affichez aucune boîte de dialogue, le script est terminé.
Référence de l’API
Consultez la référence sur les scripts de travail pour savoir comment modifier le travail et découvrir les nombreuses autres opérations que vous pouvez effectuer.
Le script d’interaction utilisateur s’exécute dans le contexte de la classe User. Le travail envoyé est accessible via $this->job.
Les objets de toutes les classes, à l’exception de la classe Session, sont accessibles via l’objet de tâche, par exemple le propriétaire $owner $this->job->owner. Les objets de la classe Session sont accessibles via la fonction globale MyQ() ; par exemple : MyQ()->logInfo("This message appears in the MyQ log.");
Classe UserScript
Le script d’interaction utilisateur correspond au corps de la classe UserScript, tel que décrit ci-dessus. MyQ fournit également plusieurs méthodes embarquées de la classe User, en plus de vos propres méthodes.
Méthodes de création de boîtes de dialogue
|
Fonction |
Description |
|---|---|
|
void dialogYesNo(string $text) |
Crée une boîte de dialogue dont le contenu est le |
|
void dialogPrintNo(string $text) |
Crée une boîte de dialogue dont le contenu est le texte |
|
void dialogYesNoCancel(string $text) |
Crée une boîte de dialogue dont le contenu est le |
|
void dialog(string $text, Field[] $fields) |
Crée une boîte de dialogue dont le contenu est le |
|
FieldButton button(string $title, string $id) |
Crée un bouton personnalisé pouvant être utilisé dans la fonction |
|
FieldList singleSelectList(string $name, array $items) |
Crée une liste d’options parmi lesquelles l’utilisateur ne peut en choisir qu’une seule (groupe de boutons radio). Elle peut être utilisée dans la fonction |
|
FieldMultiSelectList multiSelectList(string $name, array $items) |
Crée une liste d’options parmi lesquelles l’utilisateur peut en sélectionner plusieurs (cases à cocher). Elle peut être utilisée dans la fonction |
Méthode onCancel
La méthode onCancel gère le bouton Annuler et est fournie par défaut. Elle appelle la méthode terminate(). Vous pouvez fournir votre propre implémentation pour modifier ce comportement.
Autres méthodes
|
Fonction |
Description |
|---|---|
|
void terminate() |
Mette fin à l’exécution du script. Le script n’a pas été exécuté avec succès et la tâche reste à l’ |
|
mixed getField(string $name) |
Récupère la valeur du champ portant le nom |
Voir également :