| At line 1 added 41 lines |
| %%(display:none) |
| {{{ |
| WikiUp |
| }}} |
| /% |
| [{TableOfContents }]\\ |
| La matrice di aggiornamento (EXU) è un componente di LOOC.up strettamente legato alla matrice (EXB).\\ |
| Non è un componente provvisto di grafica e ha come compito principale quello di gestire lo scambio di informazioni tra una matrice in modalità NON readonly (che può quindi essere usata per inserire, modificare, cancellare records) e l'AS.\\ |
| La matrice di aggiornamento tiene traccia delle modifiche eseguite in modo da poterle annullare / confermare.\\ |
| \\ |
| !!! Interazione client-server: passaggi fondamentali\\ |
| Consideriamo per semplicità un'operazione su una singola riga di matrice.\\ |
| Tale riga (costituita da più campi) può rappresentare molte cose, come:\\ |
| * un record di file di dati, di Sme.up o meno\\ |
| * un singolo campo (ad esempio in modalità codice, valore, descrizione)\\ |
| * un elemento di tabella\\ |
| * una riga di script\\ |
| * un pezzo di documentazione attiva\\ |
| * ...\\ |
| \\ |
| L'operazione di inserimento/modifica/cancellazione avviene in 3 passi\\ |
| # Passaggio in XML degli estremi dell'operazione dal client (la matrice EXU) al servizio AS.\\ |
| # Esecuzione dell'operazione da parte del servizio (controlli, eventuale scrittura).\\ |
| # Risposta in XML dal servizio al client, aggiornamento visualizzazione.\\ |
| \\ |
| !!! Considerazioni\\ |
| !! Controlli di consistenza\\ |
| Non sempre è possibile garantire che i dati visualizzati prima di un aggiornamento siano consistenti con quelli effettivamente salvati su AS.\\ |
| Questo si ottiene di solito imponendo un lock al momento della visualizzazione, ma non sempre è possibile / auspicabile farlo (ad esempio perchè una matrice potrebbe rappresentare molti record e non si può bloccarli tutti).\\ |
| In assenza di lock e quando è importante che i dati siano sempre aggiornati al momento dell'esecuzione di un'operazione di inserimento/modifica/cancellazione il servizio può garantire la consistenza del/dei record in modifica comparando i valori che il client crede di aggiornare con quelli effettivamente salvati su AS, segnalando errore e imponendo il refresh della matrice.\\ |
| \\ |
| !! Messaggi di errore\\ |
| Se a seguito dei controlli effettuati dal servizio si rilevano errori, il servizio può segnalare al client (e questo all'utente) tali errori "accendendo" la visualizzazione di errore su uno o più campi della matrice e passando uno o più messaggi di errore (generici o di campi). Di questi messaggi, a cui è associata una gravità, verrà visualizzato il più grave.\\ |
| \\ |
| !! Ricerche specifiche\\ |
| Normalmente le ricerche sui campi modificabili sono le stesse che in tutto Looc.up; è, tuttavia, possibile implementare e attivare ricerche particolari che tengano conto del contesto in cui vengono eseguite; si può, ad esempio, sostituire le ricerche normali con programmi personali che presentino dei dati tenendo conto dei valori degli altri campi del record che si sta aggiornando.\\ |
| \\ |
| !! Casi particolari\\ |
| Normalmente non è possibile eccedere la lunghezza definita sul campo di aggiornamento.\\ |
| Se il campo è una voce (oggetto VO) dinamico (parametro deriato da altro campo) la lunghezza del campo in imputazione non verrà controllata.\\ |
| Il controllo in questo caso deve essere eseguito nel servizio di update.\\ |