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:
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:
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 |
|
void dialogPrintNo(string $text) |
Cria uma caixa de diálogo com o |
|
void dialogYesNoCancel(string $text) |
Cria uma caixa de diálogo com o |
|
void dialog(string $text, Field[] $fields) |
Cria uma caixa de diálogo com o |
|
FieldButton button(string $title, string $id) |
Cria um botão personalizado que pode ser usado na |
|
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 |
|
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 |
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 |
|
mixed getField(string $name) |
Obtém o valor do campo com o |