Ho creato un'appliocazione gestionale web, in cui ho una pagina aspx con il form di gestione dei preventivi.
Avrei la necessità di evitare che due utenti simultaneamente aprano questa pagina sullo stesso preventivo.
Cerco suggerimenti sul come implementare la cosa ...
Grazie per i suggerimenti ...

Alessio Arrigoni - CONSULENTE INFORMATICO
https://www.alessioarrigoni.it
https://www.assistenzapccomo.it
311 messaggi dal 08 gennaio 2011
Ciao, secondo me a livello logico, la cosa la puoi risolvere inserendo una colonna booleana nel db, che indichi se quel preventivo è occupato oppure no. Quindi quando viene richiesto facendo un test sul valore di questa colonna, decidi se renderlo disponibile o meno.

Chiaramente quando viene richiesto ed è disponibile si deve trasformare il valore di questa colonna in occupato.
678 messaggi dal 12 maggio 2001
www.idioteca.it
senza pensarci troppo, potresti gestire una tabella di checkin/checkout che blocca un preventivo ogni volta che viene aperto da un utente ed impedisce ad altri di modificarlo (direi di lasciare almeno la visione, ma poi vedi tu su questo aspetto). A questo punto hai due strade da percorrere, o spingi l'utente a "liberare" il preventivo (in automatico al salvataggio o con un pulsante ad hoc) o gestisci lo sblocco verificando se la sessione dell'utente che sta modificando è ancora attiva o più semplicemente all'apertura di una nuova pagina.
ciao

P.s.
@marioformosa
io gestirei tutto in una seconda tabella in cui memorizzo anche l'utente che tiene bloccato il preventivo. E' un'informazione che può tornare utile in caso di problemi.
Modificato da giangi_77 il 04 maggio 2012 16.31 -
311 messaggi dal 08 gennaio 2011
Sono d'accordo, avevo pensato pure io ad una tabella esterna a quella dei preventivi, però mi sembrava un pò più complicato.

Ciao.
12 messaggi dal 17 febbraio 2002
Sono d'accordo per la tabella esterna ma non dimenticare di impostare un timeout (scadenza) in modo che sia comunque disponibile in caso il primo utente esca in modo irregorale.
L'utilizzo di una variabile booleana associata ad ogni preventivo è quello che avevo pensato anche io.
Variabile che viene settata a true all'apertura impedendo così agli altri utentil'accesso.
Il mio problema che non saprei come fare è lo sblocco. L'ideale sarebbe che quando chiudo la pagina questo venga sbloccato, che sicuramente è quello che si aspetti il cliente. A questo punto non ho idea sul come fare in modo che all'uscita della pagina venga lanciato questo evento.

Alessio Arrigoni - CONSULENTE INFORMATICO
https://www.alessioarrigoni.it
https://www.assistenzapccomo.it
Se sei tu a capire che devi bloccare il record e devi quindi implementare un semaforo, non demandandolo ad esempio al database, ti consiglio di evitare di affidarti ad eventi della pagina (es. onload per bloccare e unload per sbloccare) perchè nonostante tu sia sicuro dei primi non puoi essere sicuro dei secondi.
Io realizzerei un pulsante che carica il record dando proprio l'idea del blocco e un altro per salvare e dare l'idea dello sblocco. Le informazioni da memorizzare in tabella apposita sarebbero l'id del record, l'utente e la data. Nonostante questo dovresti realizzare una console application da schedulare in windows, oppure un servizio di windows che gira periodicamente e va ad analizzare quella tabella cancellando i record più vecchi di un tot di tempo. Vedi tu se cancellare i record o se vuoi mantenere uno storico (e realizzare quindi una cancellazione logica invece che fisica, con un flag cancellato)

Ormai programmano tutti... ma la professionalità appartiene a pochi
678 messaggi dal 12 maggio 2001
www.idioteca.it
Concordo con manuel0081, ma la pulizia dei dati puoi farla anche senza servizi o console (che puoi decidere di integrare se preferisci), verificherei tutto al load della pagina, se ci sono elementi bloccati che hanno una data oltre il limite stabilito, elimini il blocco e rendi accessibile l'elemento all'utente.
Anche io sarei per una responsabilizzazione dell'utente che nel momento in cui blocca un elemento per una modifica, deve essere consapevole che lo stesso tornerà disponibile quando e solo dopo che avrà effettuato le sue modifiche. Consentire lo sblocco automatico facilita l'accesso immediato da parte di altri utenti, ma poi ti porta a gestire il caso per cui una persona che non riesce finire il proprio lavoro in un'unica sessione. Valuta tu quale sia la soluzione migliore, ma per esperienza è meglio trovarsi scritto qualcosa tipo "l'elemento X è bloccato dall'utente Y" e nel caso contattare l'utente Y per sbloccarlo piuttosto che rischiare modifiche su modifiche che si sovrascrivano tra di loro.
ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.