MyQ X Server

Scripts de interação do usuário

Um Script de Interação com o Usuário permite programar uma interação com o proprietário do trabalho e modificar o trabalho com base na resposta do usuário. Especificamente, ele permite exibir uma série de caixas de diálogo da interface do usuário com perguntas e botões de ação (SIM/NÃO, IMPRIMIR/NÃO, SIM/NÃO/CANCELAR). Dependendo da seleção do usuário, outras caixas de diálogo podem ser exibidas e ações podem ser realizadas. Por fim, quando a última caixa de diálogo for processada, o script é concluído e o trabalho é definido como ready e pode ser liberado.

Se houver um Script de Interação com o Usuário, ele deve ser executado com sucesso antes que o trabalho possa ser liberado. Até então, o trabalho permanece no pause até esse momento.

Referência de Scripts de Trabalhos: É possível usar funções básicas do PHP e quase todas as descritas na Referência de Scripts de Trabalho. Os únicos dois métodos não suportados pelo recurso são $this->job->setPrinted() e $this->job->pause(). Além das classes, métodos e propriedades comuns, você pode usar várias funções adicionais para se comunicar com o aplicativo MyQ Desktop Client.

Como escrever um script de interação com o usuário

Na guia “MyQ Desktop Client” de uma fila, na seção “Interação com o usuário”, adicione o script no campo e clique em “Salvar”.

Primeiro, você precisa definir a main(). função. Essa função determina se a caixa de diálogo deve ser aberta (em quais condições) e qual caixa de diálogo deve ser exibida.

Em seguida, você pode definir funções de clique com reações à opção selecionada: onYes(), onNo(), onPrint(), onCancel().

As propriedades públicas são mantidas entre as chamadas. Na verdade, elas são enviadas ao cliente e de volta.

Estrutura do script

Veja o script a seguir:

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 o script acima, esta caixa de diálogo é exibida no MDC:

image-20250311-104101.png

Se você estiver familiarizado com a linguagem PHP, o script é, na verdade, o corpo da instrução class UserScript {...} instrução.

Você pode definir propriedades como $hasMoreThan10pages. As propriedades são persistentes entre várias chamadas do script para o mesmo trabalho. Use-as para armazenar um estado entre várias caixas de diálogo.

Existe a main função. Ela é chamada uma vez quando o script é iniciado. Use-a para exibir a primeira caixa de diálogo.

Depois, há as onXXX funções. Elas são os manipuladores de ação chamados quando um XXX botão é pressionado. Por exemplo, o Yes botão é processado por meio da onYes função.

Se você não exibir nenhuma caixa de diálogo, o acabamento do script será realizado.


Referência da API

Referência de Scripts de Trabalhos: Consulte a Referência de Scripts de Trabalho para saber como modificar o trabalho e também para muitas outras operações que você pode realizar.

O script de interação com o usuário é executado no contexto da classe User. O trabalho enviado pode ser acessado como $this->job.

Objetos de todas as classes, exceto da classe Session, podem ser acessados por meio do objeto de trabalho, por exemplo, o owner $this->job->owner. Objetos da classe Session podem ser acessados por meio do MyQ() recurso global; por exemplo: MyQ()->logInfo("This message appears in the MyQ log.");.


Classe UserScript

O Script de Interação do Usuário é o corpo da UserScript classe, conforme descrito acima. O MyQ também oferece vários métodos integrados da classe User, além dos seus próprios métodos.

Métodos de criação de diálogos

Função

Descrição

void dialogYesNo(string $text)

Cria uma caixa de diálogo com o $text como conteúdo e os botões Sim e Não.

void dialogPrintNo(string $text)

Cria uma caixa de diálogo com o $text como conteúdo e os botões “Imprimir” e “Não”.

void dialogYesNoCancel(string $text)

Cria uma caixa de diálogo com o $text como conteúdo e os botões “Sim”, “Não” e “Cancelar”.

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

Cria uma caixa de diálogo com o $text como conteúdo e uma matriz de campos personalizados. Um campo pode ser um botão ou qualquer outro tipo de campo, como uma lista, por exemplo. Os botões são sempre exibidos abaixo dos outros campos.

FieldButton button(string $title, string $id)

Cria um botão personalizado que pode ser usado na dialog() função. $title é um texto exibido no botão. O botão $id é usado ao executar o manipulador do botão. O MyQ procura um onXXX manipulador onde XXX é a $id

FieldList singleSelectList(string $name, array $items)

Cria uma lista de opções das quais o usuário pode escolher apenas uma (grupo de botões de opção). Pode ser usado na dialog() função. O $items é um array associativo em que a chave é a referência de um item e o valor é o nome de exibição do item visível na interface do usuário.

FieldMultiSelectList multiSelectList(string $name, array $items)

Cria uma lista de opções na qual o usuário pode selecionar várias (caixas de seleção). Pode ser usada na dialog() função. O $items é um array associativo em que a chave é a referência de um item e o valor é o nome de exibição do item visível na interface do usuário.

Método onCancel

onCancel lida com o botão Cancelar e é fornecido por padrão. Ele chama terminate(). Você pode fornecer sua própria implementação para alterar o comportamento.

Outros métodos

Função

Descrição

void terminate()

Encerra o processamento do script. O script não foi executado com sucesso e o trabalho permanece no pause estado. O usuário deve executar o script novamente.

mixed getField(string $name)

Obtém o valor do campo com o $name depois que o usuário interagir com a caixa de diálogo. O campo deve ter sido criado pelos métodos singleSelectList (o resultado é um valor escalar) ou multiSelectList (o resultado é um array de valores, que pode ser um array vazio).