Scripts de interacción con el usuario
Un script de interacción con el usuario permite programar una interacción con el propietario del trabajo y modificar el trabajo en función de la respuesta del usuario. En concreto, permite mostrar una serie de cuadros de diálogo de la interfaz de usuario con preguntas y botones de acción (SÍ/NO, IMPRIMIR/NO, SÍ/NO/CANCELAR). Dependiendo de la selección del usuario, se pueden mostrar más cuadros de diálogo y se pueden realizar acciones. Finalmente, cuando se procesa el último cuadro de diálogo, el script finaliza y el trabajo se establece como ready y puede liberarse.
Si hay un script de interacción con el usuario, este debe ejecutarse correctamente antes de que el trabajo pueda liberarse. Hasta entonces, el trabajo permanece en el pause estado hasta ese momento.
Se pueden utilizar funciones básicas de PHP, así como casi todas las descritas en la Referenciade scripts de trabajo. Los únicos dos métodos que no son compatibles con esta función son $this->job->setPrinted() y $this->job->pause(). Aparte de las clases, métodos y propiedades comunes, puede utilizar varias funciones adicionales para comunicarse con la aplicación MyQ Desktop Client.
Cómo escribir un script de interacción con el usuario
En la pestaña MyQ Desktop Client de una cola, en la sección Interacción con el usuario, añada el script en el campo y haga clic en Guardar.
En primer lugar, debe definir la main(). Esta función determina si debe abrirse el cuadro de diálogo (en qué condiciones) y qué cuadro de diálogo debe mostrarse.
A continuación, puede definir funciones al hacer clic con reacciones a la opción seleccionada: onYes(), onNo(), onPrint(), onCancel().
Las propiedades públicas se conservan entre llamadas. De hecho, se envían al cliente y se devuelven.
Estructura del script
Véase el siguiente script:
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.
}
Utilizando el script anterior, este cuadro de diálogo se muestra en MDC:

Si estás familiarizado con el lenguaje PHP, el script es en realidad el cuerpo de la class UserScript {...} .
Puede definir propiedades como $hasMoreThan10pages. Las propiedades son persistentes entre múltiples invocaciones del script para el mismo trabajo. Úsalas para almacenar un estado entre múltiples cuadros de diálogo.
Existe la main función. Se llama una vez cuando se inicia el script. Úsala para mostrar el primer cuadro de diálogo.
Luego están las onXXX funciones. Son los controladores de acción que se invocan cuando se XXX se pulsa un botón. Por ejemplo, el Yes se gestiona mediante la onYes función.
Si no se muestra ningún cuadro de diálogo, el script ha finalizado.
Referencia de la API
Consulte la Referencia para saber cómo modificar el trabajo y conocer muchas otras operaciones que puede realizar.
El script de interacción con el usuario se ejecuta en el contexto de la claseUser. Se puede acceder al trabajo enviado como $this->job.
Se puede acceder a los objetos de todas las clases, excepto a los de la clase Session, a través del objeto de trabajo, por ejemplo, el owner $this->job->owner. Se puede acceder a los objetos de la claseSession a través de la MyQ() característica global; por ejemplo: MyQ()->logInfo("This message appears in the MyQ log.");.
Clase UserScript
El script de interacción del usuario es el cuerpo de la UserScript clase, tal y como se ha descrito anteriormente. MyQ también proporciona varios métodos integrados de la claseUser, además de tus propios métodos.
Métodos de creación de diálogos
Función | Descripción |
|---|---|
void dialogYesNo(string $text) | Crea un cuadro de diálogo con el |
void dialogPrintNo(string $text) | Crea un cuadro de diálogo con |
void dialogYesNoCancel(string $text) | Crea un cuadro de diálogo con |
void dialog(string $text, Field[] $fields) | Crea un cuadro de diálogo con el |
FieldButton button(string $title, string $id) | Crea un botón personalizado que se puede utilizar en la |
FieldList singleSelectList(string $name, array $items) | Crea una lista de opciones de las que el usuario solo puede elegir una (grupo de botones de radio). Se puede utilizar en la |
FieldMultiSelectList multiSelectList(string $name, array $items) | Crea una lista de opciones de las que el usuario puede elegir varias (casillas de selección). Se puede utilizar en la |
Método onCancel
onCancel gestiona el botón Cancelar y se proporciona por defecto. Llama a terminate(). Puede proporcionar su propia implementación para cambiar el comportamiento.
Otros métodos
Función | Descripción |
|---|---|
void terminate() | Finaliza el procesamiento del script. El script no se ha ejecutado correctamente y el trabajo permanece en el |
mixed getField(string $name) | Obtiene el valor del campo con el |