English
Instant Developer Foundation Documentazione
  • Tutorial applicazioni web
  • Metodi ed eventi documentali

Eventi di caricamento dati

link
<< Video precedente
Apri in una finestra a tutto schermo.
Video successivo >>

Trascrizione

Come abbiamo accennato nel tutorial precedente, il framework effettua il caricamento documentale seguendo 3 step:

  • Step Prima del caricamento.
  • Step preparazione Query ed esecuzione.
  • Step Dopo il caricamento.

E’ possibile sottoscriversi agli eventi relativi agli step Prima e Dopo il caricamento grazie agli eventi Before Load e After Load.

L’evento BeforeLoad, è un evento normalmente utilizzato per modificare il comportamento standard di caricamento: ad esempio potremmo non caricare i dati dal database e ricercarli all’interno di un file Excel o in una fonte dati alternativa.

Facciamo un esempio di sottoscrizione all’evento BeforeLoad per il documento Prezzo: Albero di progetto, Documento Prezzo => tasto destro Eventi -> Evento Before Load.

Nella struttura dell’evento è presente un parametro di input-output denominato Skip; possiamo impostare il parametro a TRUE per segnalare al framework di interrompere il comportamento standard poiché scriveremo del nostro codice per recuperare il documento.

Ora scriverò un piccolo esempio di algoritmo che commenterò in seguito (serve solo per chiarire le dinamiche di questo evento).

Quindi ipotizziamo di caricare da un file esterno i dati, e di caricarli per chiave primaria.

Creiamo un nuovo metodo che esegua l’operazione di caricamento esterno.

Public void caricaFromFile(string primaryKey) {
//QUESTA PORZIONE DI CODICE DOVRA’ CERCARE IN UN FILE LA PRIMARYKEY
// E CON QUESTA VALORIZZARE LE PROPRIETA’ DEL DOCUMENTO
}

Ora torno all’evento BeforeLoad. Inizio con Skip = true; (in maniera tale che il sistema blocchi il caricamento standard) //Richiamo il metodo di caricamento
caricaFromFile(ID)
Passo ID, perché è la proprietà valorizzata per richiedere i dati.
Successivamente indico che il documento è Original con il metodo: This.setOriginal(); rende original lo stato del documento. Ed infine imposto anche:
This.loaded = true; indica che il documento è stato caricato.
Questo potrebbe essere un ipotetico BeforeLoad, che io ora commento in ogni riga presente.

Successivamente al caricamento vero e proprio, scatta per ogni documento, l’evento di After Load (l’evento scatta in ogni caso sia che il caricamento sia avvenuto in maniera standard che in maniera personalizzata).

Abbiamo già la sottoscrizione all’evento AfterLoad nel documento Prezzo: (l’avevamo inserita nel tutorial precedente); in questo evento sono presenti più parametri, uno risulta di nostro interesse: il parametro AlreadyLoaded; indica se l’evento AfterLoad stia scattando per la prima volta o è già scattato per questo documento; la motivazione ? Il framework, per la logica prevista, emette l’evento AfterLoad più volte, a seguito di un caricamento quindi, grazie al parametro potremo eseguire il codice personalizzato 1 sola volta e non tutte le volte che l’evento scatta.

Visualizziamo l’evento After Load nella area di progettazione e proviamo a scrivere del codice: per esempio.

If (not ( AlreadyLoaded) ) Quindi significa, se non è ancora scattato l’evento, o meglio è la prima volta che scatta Abbiamo un metodo che serve a valorizzare la proprietà ValidaOggi, lo richiamiamo setValidaOggi() Nella fase di esecuzione, al termine del caricamento del documento, verrà valorizzata la proprietà aggiuntiva: ciò’ significa che l’aggiunta del calcolo effettuata nella master query di caricamento è diventata inutile ed è possibile eliminarla.

Attenzione che con questa mossa abbiamo spostato il carico dell’elaborazione: prima l’elaborazione era a carico del motore database, ora è a carico del codice applicativo: quindi nel caso l’operazione diventasse complessa potremmo ottenere un rallentamento dell’intera applicazione.

Dobbiamo sempre dosare correttamente quello che implementiamo, anche nell’ottica dell’aumento del volume dei dati: la stessa operazione può’ sembrare rapidissima quando carichiamo 1 record, ma quando ne carichiamo 500 lo sarà ancora o andrà ad influire sulle prestazioni?

Ultima modifica: 07/02/2021 / Validità: da 20.5.8000

Ti serve altro aiuto?

Consulta il Forum

Vedi anche

    Scarica il progetto di esempio You Bb Project.zip