Secuencias de comandos de interacción del usuario
Un Script de interacción del usuario permite programar una interacción con el propietario del trabajo y modificar el trabajo en función de la respuesta del usuario. Específicamente, permite mostrar una serie de diálogos de IU 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 diálogo, el script finaliza y el trabajo se establece como ready
y se puede liberar.
Si hay una secuencia de comandos de interacción del usuario, primero debe ejecutarse correctamente antes de que se pueda liberar el trabajo. El trabajo se fuerza en el estado de pause
hasta entonces.
Se pueden usar las funciones básicas de PHP y casi todas las descritas en Referencia de secuencias de comandos de trabajo. Los únicos dos métodos que no admite la característica son $this->job->setPrinted()
y $this->job->pause()
. Además de las clases, métodos y propiedades comunes, puede usar varias funciones adicionales para comunicarse con la aplicación MyQ Desktop Client.
Cómo escribir un script de interacción del usuario
En la pestaña MyQ Desktop Client de una cola, en la sección Interacción del usuario, agregue el script en el campo y haga clic en Guardar.
Primero, necesitas definir el main()
función. Esta función decide si se debe abrir el cuadro de diálogo (bajo qué condiciones) y qué cuadro de diálogo se debe mostrar.
Luego puede definir funciones al hacer clic con reacciones a la opción seleccionada: onYes(), onNo(), onPrint(), onCancel()
.
Las propiedades públicas se mantienen entre llamadas. De hecho, se envían al cliente y de vuelta.
Estructura del guión
Vea el siguiente guión:
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.
}
Usando la secuencia de comandos anterior, este cuadro de diálogo se muestra en MDC:
Si está familiarizado con el lenguaje PHP, el script es en realidad un cuerpo de la declaración de class UserScript {...}
.
Puede definir propiedades como $hasMoreThan10pages
. Las propiedades son persistentes entre múltiples invocaciones de secuencias de comandos para el mismo trabajo. Úselos para almacenar un estado entre varios diálogos.
Ahí está la función main
. Se llama una vez cuando se inicia el script. Úselo para mostrar el primer diálogo.
Luego están las funciones onXXX
. Son el controlador de acción llamado cuando se presiona un botón XXX
. Por ejemplo, el botón Yes
se maneja a través de la función onYes
.
Si no muestra ningún cuadro de diálogo, el script está terminado.
Referencia de la API
Consulte la Referencia de secuencias de comandos de trabajos sobre cómo modificar el trabajo y también para muchas otras operaciones que puede realizar.
El script de interacción del usuario se ejecuta en el contexto de la clase de usuario. Se puede acceder al trabajo enviado como $this->job
.
Se puede acceder a los objetos de todas las clases, excepto a la clase Sesión, a través del objeto de trabajo, por ejemplo, el owner $this->job->owner
. Se puede acceder a los objetos de la clase Session a través de la función global MyQ()
; por ejemplo: MyQ()->logInfo("This message appears in the MyQ log.");
.
Clase de script de usuario
User Interaction Script es el cuerpo de la clase UserScript
como se describe anteriormente. MyQ también proporciona varios métodos integrados de la clase User además de sus 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 el |
void dialog(string $text, Field[] $fields) | Crea un cuadro de diálogo con |
FieldButton button(string $title, string $id) | Crea un botón personalizado que se puede usar en la función |
FieldList singleSelectList(string $name, array $items) | Crea una lista de opciones de las cuales el usuario puede elegir solo una (grupo de radio). Se puede usar en la función |
FieldMultiSelectList multiSelectList(string $name, array $items) | Crea una lista de opciones de las que el usuario puede elegir varias (casillas de verificación). Se puede usar en la función |
onCancel Método
onCancel
gestiona el botón Cancelar y se proporciona de forma predeterminada. Llama a terminate()
. Puede proporcionar su propia implementación para cambiar el comportamiento.
Otros metodos
Función | Descripción |
---|---|
void terminate() | Termina el procesamiento del script. El script no se ha ejecutado correctamente y el trabajo permanece en estado de |
mixed getField(string $name) | Obtiene el valor del campo con |