Instant Developer

Tips&Tricks Instant Developer Foundation: chi è stato e quando?

| 10 Febbraio 2016 | Giuseppe Lanzi
grafico 2 Instant Developer

Nello sviluppo di applicazioni multi utente, specialmente in ambito gestionale, è spesso necessario prevedere un modo per rispondere alla domanda “chi è stato a cambiare questo dato, e quando è stato fatto?”. È un tema che tratto spesso anche nelle consulenze presso chi comincia con la document orientation o con chi sta avviando un nuovo progetto software. Visto l’interesse che molti hanno dimostrato verso questo argomento ho pensato di scriverci un post.

A venire in nostro aiuto anche questa volta è la Document Orientation, mediante due funzionalità in particolare: l’uso del Document Helper per globalizzare gli eventi e la capacità di salvare un qualunque documento in xml. Ma andiamo con ordine.

La prima cosa da ottenere è che qualsiasi documento che viene salvato nell’applicazione registri le proprie variazioni da qualche parte. In questo progetto di esempio ho creato una cartella logs nel database, dove scrivere il DNA del documento, la sua conversione in XML ottenuta tramite la funzione saveToXML, l’utente che ha effettuato la modifica e il momento in cui è avvenuta l’operazione. Ottenere questo risultato è semplice, basta implementare una propria estensione di IDDocumentHelper e implementare l’evento onGlobalAfterSave come in questa immagine.

globalaftersave Instant Developer

A questo punto qualsiasi modifica su qualsiasi documento effettuata dall’applicazione viene registrata nella tabella. Semplicemente tutte.

La seconda cosa è far sì che l’utente possa vedere la storia delle modifiche di un certo documento, sempre a prescindere dal tipo del documento stesso. Nella schermata di gestione dei prodotti trovate un albero che mostra l’albero delle categorie e prodotti dell’applicazione, utilizzando l’albero si viene automaticamente portati alla videata per l’editing dei dati e qui è possibile salvare. Per far vedere la storia delle modifiche all’utente ho implementato un comando di menu contestuale che apre una seconda videata.

A questo punto si pone la terza cosa da risolvere: come poter mostrare le modifiche apportate a qualsiasi documento senza scrivere codice specifico? Semplice: utilizzando l’oggetto XMLDocument. Navigando l’XML del documento salvato in precedenza nei log è infatti possibile conoscere lo stato completo del documento al momento del salvataggio, questo comprende sia il nuovo valore di tutte le proprietà del documento sia il valore che esse eventualmente avevano quando è stato letto dal database. Con una tabella IMDB e le righe di codice qui sotto il gioco è fatto.

loadXMLChanges Instant Developer

Che ne dite? Ci sono domande? 🙂

Giuseppe Lanzi
Technical Support Manager
Mi occupo di assistenza e consulenza tecnica, dei corsi di formazione e dei sistemi rivolti ai clienti. Amo la tecnologia e ogni tipo di nuovo gadget, mi interesso di fotografia e prendo al volo ogni occasione di scoprire un nuovo gioco.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Potrebbe interessarti

Instant Developer all’Evento Tech che apre il 2025

Mi chiamo Savino Carlone, per tutti sono solo “Savi” dalla nascita e sono una persona atipica per il mondo dell’informatica: preferisco la parte relazionale –...

Leggi Tutto

Instant Developer Foundation e Cloud 24.5: la prima volta insieme

Il rilascio delle versioni 24.5 di Instant Developer Foundation e Instant Developer Cloud rappresenta una grande novità: è la prima occasione in cui le due...

Leggi Tutto

Integrazione di librerie JavaScript per generare barcode

Scegliere il modo giusto per generare barcode non è semplice e la decisione che prendi può fare la differenza in termini di costi e praticità.Potresti...

Leggi Tutto

Rimani Aggiornato

Iscriviti alla nostra newsletter per ricevere aggiornamenti su novità, eventi, release, webinar e tante altre notizie sui prodotti Instant Developer.

    Presa visione dell'informativa (disponibile qui) resa da Pro Gamma SpA, acconsento al trattamento dei miei dati personali per l'invio di newsletter.*