Skip to main content
Skip table of contents

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:

PHP
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 $text como contenido y los botones Sí, No.

void dialogPrintNo(string $text)

Crea un cuadro de diálogo con $text como contenido e Imprimir, sin botones.

void dialogYesNoCancel(string $text)

Crea un cuadro de diálogo con el $text como el contenido y los botones Sí, No y Cancelar.

void dialog(string $text, Field[] $fields)

Crea un cuadro de diálogo con $text como el contenido y una serie de campos personalizados. Un campo puede ser un botón o cualquier otro tipo de campo, como una lista, por ejemplo. Los botones siempre se muestran debajo de otros campos.

FieldButton button(string $title, string $id)

Crea un botón personalizado que se puede usar en la función dialog(). $title es un texto que se muestra en el botón. El botón $id se usa cuando se ejecuta el controlador de botón. MyQ busca un controlador onXXX donde XXX es el $id.

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 dialog(). $items es una matriz asociativa donde la clave es la referencia de un elemento y el valor es el nombre para mostrar de un elemento visible en la interfaz de usuario.

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 dialog(). $items es una matriz asociativa donde la clave es la referencia de un elemento y el valor es el nombre para mostrar de un elemento visible en la interfaz de usuario.

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 pause. El usuario debe ejecutar el script nuevamente.

mixed getField(string $name)

Obtiene el valor del campo con $name después de que el usuario haya interactuado con el cuadro de diálogo. El campo debe haber sido creado por los métodos singleSelectList (el resultado es un valor escalar) o multiSelectList (el resultado es una matriz de valores, que puede ser una matriz vacía).

 

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.