Uno script di interazione utente consente di programmare un'interazione con il proprietario del lavoro e di modificare il lavoro in base alla risposta dell'utente. In particolare, consente di visualizzare una serie di finestre di dialogo dell'interfaccia utente con domande e pulsanti di azione (SÌ/NO, STAMPA/NO, SÌ/NO/ANNULLAMENTO). In base alla selezione dell'utente, possono essere visualizzate altre finestre di dialogo e possono essere intraprese azioni. Infine, quando l'ultima finestra di dialogo viene elaborata, lo script è terminato e il lavoro viene impostato come pronto e possono essere rilasciati.

Se è presente uno script di interazione utente, questo deve essere eseguito con successo prima che il lavoro possa essere rilasciato. Il lavoro viene forzato nella cartella pausa stato fino ad allora.

Si possono utilizzare le funzioni PHP di base e quasi tutte quelle descritte in Riferimento al Job Scripting. Gli unici due metodi non supportati dalla funzione sono $this->job->setPrinted() e $this->lavoro->pausa(). Oltre alle classi, ai metodi e alle proprietà comuni, è possibile utilizzare diverse funzioni aggiuntive per comunicare con l'applicazione MyQ Desktop Client.

Come scrivere uno script di interazione con l'utente

Nella scheda MyQ Desktop Client di una coda, nella sezione Interazione con l'utente aggiungere lo script nel campo e fare clic su Risparmiare.

Per prima cosa, è necessario definire l'elemento main().... Questa funzione decide se la finestra di dialogo deve essere aperta (in quali condizioni) e quale finestra di dialogo deve essere mostrata.

È quindi possibile definire le funzioni al clic con reazioni all'opzione selezionata: onYes(), onNo(), onPrint(), onCancel().

Le proprietà pubbliche vengono mantenute tra le chiamate. Infatti, vengono inviate al client e poi restituite.

Struttura della sceneggiatura

Vedere il seguente 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.
}
CODE

 

Utilizzando lo script precedente, questa finestra di dialogo viene visualizzata in MDC:

 

Se si ha familiarità con il linguaggio PHP, lo script è in realtà un corpo del file classe UserScript {...} dichiarazione.

Si possono definire proprietà come $hasMoreThan10pages. Le proprietà sono persistenti tra più invocazioni di script per lo stesso lavoro. Utilizzatele per memorizzare uno stato tra più finestre di dialogo.

C'è il principale funzione. Viene chiamata una volta all'avvio dello script. Usatela per visualizzare la prima finestra di dialogo.

Poi ci sono le suXXX funzioni. Sono i gestori di azioni chiamati quando un XXX viene premuto il pulsante. Ad esempio, il pulsante viene gestito tramite il pulsante suSì funzione.

Se non viene visualizzata alcuna finestra di dialogo, lo script è terminato.

 

Riferimento API

Vedi Riferimento al Job Scripting su come modificare il lavoro e su molte altre operazioni che si possono eseguire.

Lo script di interazione con l'utente viene eseguito nel contesto dell'applicazione Utente classe. Si può accedere al lavoro inviato come $this->lavoro.

Gli oggetti di tutte le classi, ad eccezione della classe Session, sono accessibili tramite l'oggetto job, ad esempio l'oggetto proprietario $this->lavoro->proprietario. Oggetti del Sessione si può accedere alla classe tramite il metodo MyQ() globale, ad esempio: MyQ()->logInfo("Questo messaggio viene visualizzato nel log di MyQ");.


Classe UserScript

Lo script dell'interazione con l'utente è il corpo del file UserScript come descritto in precedenza. MyQ fornisce anche diversi metodi integrati della classe Utente oltre ai propri metodi.

Funzione

Descrizione

vuoto dialogoSìNo(stringa $testo)

Crea una finestra di dialogo con l'oggetto $testo come il contenuto e i pulsanti Sì, No.

vuoto dialogPrintNo(stringa $testo)

Crea una finestra di dialogo con l'oggetto $testo come i pulsanti Contenuto e Stampa, No.

vuoto dialogoSìNoAnnulla(stringa $testo)

Crea una finestra di dialogo con l'oggetto $testo come contenuto e i pulsanti Sì, No e Annulla.

vuoto dialogo(stringa $testo, campo[] $campi)

Crea una finestra di dialogo con l'oggetto $testo come contenuto e un array di campi personalizzati. Un campo può essere un pulsante o qualsiasi altro tipo di campo, ad esempio un elenco. I pulsanti vengono sempre visualizzati sotto gli altri campi.

Pulsante di campo pulsante(stringa $titolo, stringa $id)

Crea un pulsante personalizzato che può essere utilizzato nella finestra di dialogo dialogo() funzione. $titolo è un testo visualizzato sul pulsante. Il pulsante $id viene utilizzato durante l'esecuzione del gestore di pulsanti. MyQ cerca un elemento suXXX gestore dove XXX è il $id

Elenco di campi singoloElenco di selezione(stringa $nome, array $voci)

Crea un elenco di opzioni da cui l'utente può sceglierne solo una (gruppo radio). Può essere utilizzato nella finestra dialogo() funzione. Il $voci è un array associativo in cui la chiave è il riferimento a un elemento e il valore è il nome visualizzato dell'elemento visibile nell'interfaccia utente.

Elenco di campi multi-selezione multiSelectList(stringa $nome, array $voci)

Crea un elenco di opzioni da cui l'utente può scegliere più opzioni (caselle di controllo). Può essere utilizzato nella finestra dialogo() funzione. Il $voci è un array associativo in cui la chiave è il riferimento a un elemento e il valore è il nome visualizzato dell'elemento visibile nell'interfaccia utente.

Metodo onCancel

suAnnulla gestisce il pulsante Annulla ed è fornito per impostazione predefinita. Richiama terminare(). È possibile fornire una propria implementazione per modificare il comportamento.

Altri metodi

Funzione

Descrizione

vuoto terminare()

Termina l'elaborazione dello script. Lo script non è stato eseguito con successo e il lavoro rimane nella sezione pausa stato. L'utente deve eseguire nuovamente lo script.

misto getField(stringa $nome)

Ottiene il valore del campo con l'opzione $nome dopo che l'utente ha interagito con la finestra di dialogo. Il campo deve essere stato creato con i metodi singoloElenco di selezione (il risultato è un valore scalare) oppure multiSelectList (il risultato è un array di valori, che può essere un array vuoto).