Script d'interaction utilisateur
Un script d'interaction utilisateur permet de programmer une interaction avec le propriétaire du travail et de modifier le travail 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 d'interface utilisateur avec des questions et des boutons d'action (OUI/NON, IMPRIMER/NON, OUI/NON/ANNULER). Selon la sélection de l'utilisateur, d'autres boîtes de dialogue peuvent être affichées et des actions peuvent être entreprises. Enfin, lorsque la dernière boîte de dialogue est traitée, le script est terminé et le travail est défini comme ready
et peut être publié.
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é. Le travail est forcé à l'état de pause
jusque-là.
Les fonctions PHP de base peuvent être utilisées, et presque toutes celles décrites dans Job Scripting Reference. Les deux seules méthodes non prises en charge par la fonctionnalité sont $this->job->setPrinted()
et $this->job->pause()
. Outre les classes, méthodes et propriétés communes, vous pouvez utiliser plusieurs fonctions supplémentaires pour communiquer avec l'application MyQ Desktop Client.
Comment écrire un script d'interaction utilisateur
Sur l'onglet MyQ Desktop Client d'une file d'attente, dans la section Interaction utilisateur, ajoutez le script dans le champ, puis cliquez sur Enregistrer.
Tout d'abord, vous devez définir le main()
. fonction. Cette fonction décide si la boîte de dialogue doit être ouverte (dans quelles conditions) et quelle boîte de dialogue doit être affichée.
Ensuite, vous pouvez définir des fonctions au clic avec des réactions à l'option sélectionnée: onYes(), onNo(), onPrint(), onCancel()
.
Les propriétés publiques sont conservées entre les appels. En fait, ils sont envoyés au client et retournés.
Structure du script
Voir 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.
}
En utilisant le script ci-dessus, cette boîte de dialogue s'affiche dans MDC:
Si vous êtes familier avec le langage PHP, le script est en fait un corps de l'instruction de class UserScript {...}
.
Vous pouvez définir des propriétés comme $hasMoreThan10pages
. Les propriétés sont persistantes entre plusieurs appels de script pour le même travail. Utilisez-les pour stocker un état entre plusieurs boîtes de dialogue.
Il y a la fonction main
. Il est appelé une fois au démarrage du script. Utilisez-le pour afficher la première boîte de dialogue.
Ensuite, il y a les fonctions onXXX
. Il s'agit du gestionnaire d'action appelé lorsqu'un bouton XXX
est enfoncé. 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 API
Voir Job Scripting Reference pour savoir comment modifier la tâche et également pour de 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 en tant que $this->job
.
Les objets de toutes les classes, à l'exception de la classe Session, sont accessibles via l'objet job, par exemple le propriétaire owner $this->job->owner
. Les objets de la classe Session sont accessibles via la fonctionnalité globale MyQ()
; par exemple: MyQ()->logInfo("This message appears in the MyQ log.");
.
Classe UserScript
Le script d'interaction utilisateur est le corps de la classe UserScript comme décrit ci-dessus. MyQ fournit également plusieurs méthodes intégrées de la classe User en plus de vos propres méthodes.
Méthodes de création de dialogue
Fonction | Description |
---|---|
void dialogYesNo(string $text) | Crée une boîte de dialogue avec le |
void dialogPrintNo(string $text) | Crée une boîte de dialogue avec le |
void dialogYesNoCancel(string $text) | Crée une boîte de dialogue avec le |
void dialog(string $text, Field[] $fields) | Crée une boîte de dialogue avec le |
FieldButton button(string $title, string $id) | Crée un bouton personnalisé qui peut ê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 (groupe radio). Il peut être utilisé dans la fonction |
FieldMultiSelectList multiSelectList(string $name, array $items) | Crée une liste d'options à partir de laquelle l'utilisateur peut en choisir plusieurs (cases à cocher). Il peut être utilisé dans la fonction |
Méthode onCancel
onCancel
gère le bouton Annuler et est fourni par défaut. Il appelle terminate()
. Vous pouvez fournir votre propre implémentation pour modifier le comportement.
Autres méthodes
Fonction | Description |
---|---|
void terminate() | Termine le traitement du script. Le script n'a pas été exécuté avec succès et le travail reste à l'état de |
mixed getField(string $name) | Obtient la valeur du champ avec le |