User Interaction Scripting
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.
}
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 Sì
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.
Metodi di creazione delle finestre di dialogo
Funzione | Descrizione |
---|---|
vuoto dialogoSìNo(stringa $testo) | Crea una finestra di dialogo con l'oggetto |
vuoto dialogPrintNo(stringa $testo) | Crea una finestra di dialogo con l'oggetto |
vuoto dialogoSìNoAnnulla(stringa $testo) | Crea una finestra di dialogo con l'oggetto |
vuoto dialogo(stringa $testo, campo[] $campi) | Crea una finestra di dialogo con l'oggetto |
Pulsante di campo pulsante(stringa $titolo, stringa $id) | Crea un pulsante personalizzato che può essere utilizzato nella finestra di dialogo |
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 |
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 |
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 |
misto getField(stringa $nome) | Ottiene il valore del campo con l'opzione |