Stati di un documento - Inserted, Deleted, Modified
copia linkTrascrizione
I documenti presenti in una applicazione, sono tutti derivati da un oggetto padre denominato IDDocument, il quale possiede metodi, eventi e proprietà che vengono ereditati da tutti i documenti: in questo tutorial voglio farvi conoscere il concetto di Stato di un documento che è possibile verificare con 3 proprietà presenti in IDDocument: con Stato del Documento indichiamo la modalità in cui il documento si trova in memoria rispetto alla sua controparte presente sul database.
Ipotizziamo di avere 2 documenti la cui situazione è quella specificata in questo schema:
Cosa possiamo dire di questi 2 documenti rispetto al loro stato?
Il primo documento ha uno stato Original ed il secondo documento uno stato Not Original: lo stato Original è relativo a un documento in memoria che risulti identico al documento presente sul database: nel nostro esempio il documento è stato caricato dal database quindi ciò che è presente in memoria è identico a ciò che è presente sul database; tale situazione è indicata con il termine Original.
Lo stato Not Original è relativo a un documento in memoria il cui contenuto delle proprietà differisce da ciò che è memorizzato sul database: nel nostro esempio il documento è nuovo quindi il contenuto della memoria differisce dal database in quanto sul database non c'è’ proprio.
Aggiungo un terzo esempio:
Anche in questo esempio parliamo di documento in stato Not Original, in quando sul database le proprietà hanno valori diversi rispetto a quelle in memoria.
Rimanendo sullo stato Not Original, possiamo anche essere più precisi: perché potremmo indicare il perché il documento non è originale: è dovuto alla situazione 2 o alla situazione 3? Il documento non è originale perché è nuovo o perché è modificato? Parliamo rispettivamente di stato Inserted o stato Modified.
Quindi nel nostro schema possiamo dire che il primo documento è Original, il secondo Inserted ed il terzo Modified!
IDDocument espone proprietà e metodi che ci consentono, nel codice, di capire lo stato del documento: è nuovo? allora la proprietà boolean Inserted sarà = TRUE, il documento è stato caricato dal database e modificato? allora il metodo isModified() sarà TRUE; si come vedete in un caso abbiamo una proprietà, nell’altra un metodo, capiremo in seguito come mai la differenza.
Quando scriviamo il codice ricordiamoci di questo aspetto, perché potremo scrivere del codice che sia eseguito solo se il documento è Inserted = TRUE, oppure solo se isModified() = TRUE; e come facciamo a capire se invece il documento è Original ? Beh semplice è original quando Inserted o Modified ritornano entrambi FALSE.
Aggiungiamo un ulteriore stato, è uno stato documentale speciale ed è lo stato Deleted; questo è uno stato imperativo, cioè uno stato che viene impostato con il nostro algoritmo (siamo quindi noi che lo impostiamo) e serve ad indicare che il documento è pronto per essere cancellato sul database; lo stato viene applicato quando vogliamo comunicare al framework che la successiva operazione sul database dovrà essere di cancellazione.
Per riassumere, gli stati di un documento sono quindi 3: stato Inserted, stato Modified e stato Deleted: useremo questa logica nei prossimi esempi di codice.
Ipotizziamo di avere 2 documenti la cui situazione è quella specificata in questo schema:
- Il documento è in memoria dopo un caricamento dal database (usando una query di caricamento).
- Il documento è completamente nuovo ed è stato creato in memoria.
Cosa possiamo dire di questi 2 documenti rispetto al loro stato?
Il primo documento ha uno stato Original ed il secondo documento uno stato Not Original: lo stato Original è relativo a un documento in memoria che risulti identico al documento presente sul database: nel nostro esempio il documento è stato caricato dal database quindi ciò che è presente in memoria è identico a ciò che è presente sul database; tale situazione è indicata con il termine Original.
Lo stato Not Original è relativo a un documento in memoria il cui contenuto delle proprietà differisce da ciò che è memorizzato sul database: nel nostro esempio il documento è nuovo quindi il contenuto della memoria differisce dal database in quanto sul database non c'è’ proprio.
Aggiungo un terzo esempio:
- Il documento è in memoria dopo un caricamento e ne abbiamo cambiato il valore di alcune proprietà.
Anche in questo esempio parliamo di documento in stato Not Original, in quando sul database le proprietà hanno valori diversi rispetto a quelle in memoria.
Rimanendo sullo stato Not Original, possiamo anche essere più precisi: perché potremmo indicare il perché il documento non è originale: è dovuto alla situazione 2 o alla situazione 3? Il documento non è originale perché è nuovo o perché è modificato? Parliamo rispettivamente di stato Inserted o stato Modified.
Quindi nel nostro schema possiamo dire che il primo documento è Original, il secondo Inserted ed il terzo Modified!
IDDocument espone proprietà e metodi che ci consentono, nel codice, di capire lo stato del documento: è nuovo? allora la proprietà boolean Inserted sarà = TRUE, il documento è stato caricato dal database e modificato? allora il metodo isModified() sarà TRUE; si come vedete in un caso abbiamo una proprietà, nell’altra un metodo, capiremo in seguito come mai la differenza.
Quando scriviamo il codice ricordiamoci di questo aspetto, perché potremo scrivere del codice che sia eseguito solo se il documento è Inserted = TRUE, oppure solo se isModified() = TRUE; e come facciamo a capire se invece il documento è Original ? Beh semplice è original quando Inserted o Modified ritornano entrambi FALSE.
Aggiungiamo un ulteriore stato, è uno stato documentale speciale ed è lo stato Deleted; questo è uno stato imperativo, cioè uno stato che viene impostato con il nostro algoritmo (siamo quindi noi che lo impostiamo) e serve ad indicare che il documento è pronto per essere cancellato sul database; lo stato viene applicato quando vogliamo comunicare al framework che la successiva operazione sul database dovrà essere di cancellazione.
Per riassumere, gli stati di un documento sono quindi 3: stato Inserted, stato Modified e stato Deleted: useremo questa logica nei prossimi esempi di codice.
Ultima modifica: 19/03/2021 / Validità: da 20.5.8000