In guigen per implementare logiche dinamiche tipicamente
si fa ricorso ai commands. Gli eventi della vita dell'applicazione in cui può essere
inserita la modellazione della logica dinamica sono i seguenti:
Con una opportuna combinazione di logiche distribuite nel vari momenti di innesco è possibile definire in modo molto fine la logica dinamica delle varie schermate.
| Operation | Descrizione | Esempi di utilizzo | Codice Generato | Check |
|---|---|---|---|---|
| ON_INIT | La logica appliucativa è eseguita ad ogni primo ingresso nel ContentPanel(per sessione). | Viene utilizzato tipicamente per eseguire le operazioni che non è
necessario ripetere durante il flusso e che potrebbero ridurre le
capacità prestazionali se eseguite ad ogni interazione client/server
|
Il programma modellato sul CPCommand viene compilato in una struttura di comandi (pattern command);
l'invocazione avviene nel metodo prepare().
Poichè il prepare() viene invocato prima di ogni action, per vincolare l'esecuzione della logica solo al
primo ingresso viene testata la property di sessione CPCommandInit<ContentPanel.name>.
|
|
| ON_REFRESH | La logica applicativa è eseguita ad
ogni azione di interazione utente eseguita sulla schermata (ingresso nella schermata, evento di interazione con un widget, ...) NOTE: Se in pagina viene inserito un CPCommand ON_INIT allora l'ON_REFRESH non verrà eseguito al primo accesso alla schermata. Se in pagina viene inserito un CPCommand ON_ENTER allora l'ON_REFRESH non verrà eseguito in concomitanza al nuovo ingresso al ContentPanel. La logica associata all' ON_REFRESH è analoga a quella eseguita dal onRefreshCommand definito come nodo figlio diretto del ContentPanel, il quale è da considerarsi deprecato. |
Il programma modellato sul CPCommand viene compilato in una struttura di comandi (pattern command);
l'invocazione avviene nel metodo prepare(). In questo modo la logica verrà eseguita ad ogni richiamo della action. Se sono modellati contemporaneamente sia l'ON_INIT che l'ON_REFRESH, poichè il metodo prepare() viene
invocato prima dell'esecuzione della action, per fare in modo che l'esecuzione della logica
avvenga solo negli accessi successivi al primo vengono testate la variabile in sessione CPCommandInit<ContentPanel.name> e currentContentPanel
|
|
|
| ON_ENTER | La logica applicativa è eseguita ad ogni accesso ad una schermata. | Un tipico utilizzo di questo punto di innesco è
quello di eseguire le logiche applicative dipendenti dal flusso di
navigazione e che devono essere eseguite a ogni nuovo ingresso in
pagina
|
Il programma modellato sul CPCommand viene compilato in una struttura di comandi
(pattern command);
L'invocazione avviene nel metodo execute() della action, ossia il metodo che viene invocato
ad ogni ingresso in pagina |
|
| BEFORE_EVENTS | La logica è eseguita prima dell' esecuzione della logica associata ad un eventHandler. La logica è la medesima per tutti gli EventHandler presenti nella schermata | Il programma modellato sul CPCommand viene compilato in una struttura di comandi
(pattern command);
L'invocazione avviene nel metodo handle_<widget>_<EVENTO>(), prima dell'invocazione del
metodo doCommand() del comando associato all'event handler |
|
|
| AFTER_EVENTS | La logica è eseguita dopo l' esecuzione della logica associata ad un eventHandler. La logica è la medesima per tutti gli EventHandler presenti nella schermata | Il programma modellato sul CPCommand viene compilato in una struttura di comandi
(pattern command);
L'invocazione avviene nel metodo handle_<widget>_<EVENTO>(), subito dopo l'invocazione del
metodo doCommand() del comando associato all'event handler |
|
In alcuni casi la sequenza delle logiche eseguite può essere differente a seconda che l'interazione sia realizzata in modalità ajax oppure in modalità non ajax.
| Eventi su Content Panel | Logiche eseguite | ||||
|---|---|---|---|---|---|
| Primo ingresso su ContentPanel per sessione applicativa |
|
||||
| Nuovo ingresso al ContentPanel (diverso da primo ingresso per sessione) |
|
||||
| Esecuzione logica di un EventHandler (es. OnClick Button) |
CP che contiene il widget che ha originato l'evento.
|
Eseguito
Non Eseguito