Blocco del record

X-Cross offre un blocco record avanzato e completamente funzionale. Il blocco del record non è sulla singola tabella, ma su tutto l’oggetto complesso (es. fattura, ordine, ecc.) che può essere composto da più tabelle.

Il blocco dei record (lock) è una delle caratteristiche di un ERP che più spesso viene sottovalutata, ma può causare problemi.

Lock ottimistico

Nel blocco ottimistico il conflitto può verificarsi, ma viene rilevato in fase di scrittura, verificando se, tra la lettura e la scrittura dei dati, alcune modifiche sono state eseguite da un altro utente. Questo approccio può essere accettabile lavorando su una singola tabella (anche se la modifica applicata andrà persa), ma non è sufficiente quando l’utente modifica oggetti complessi, ad esempio una fattura o un altro documento commerciale.

Lock pessimistico

Questo tipo di blocco record è molto più sicuro, ma ci sono ancora due problemi:

  • Rilevare il momento in cui inizia la modifica
  • Lavorare su oggetti multilivello complessi

Rilevare il momento in cui inizia la modifica

In molti ERP l’utente, se abilitato, entra nella finestra dati sempre in modalità inserimento ovvero i campi sono sempre modificabili. L’intenzione di aggiornare il database viene mostrata in seguito, utilizzando un qualche tipo di comando di “salva”, come accade in un word processor o in un foglio di calcolo. Quindi, come può il programma sapere se una finestra è aperta solo per leggere i dati o per modificare un record? In questa situazione, il blocco del record pessimistico è quasi impossibile.

In X-Cross, invece, le finestre sono sempre aperte in modalità visualizzazione, e i campi non sono modificabili.

L’utente, nella finestra, può inserire un nuovo record o modificare il record esistente, utilizzando un comando. In questo momento, e non prima, X-Cross rilegge i dati e contemporaneamente applica un lock al record.

Lavorare su oggetti multilivello complessi

Un altro problema molto comune è quando viene modificato un oggetto complesso.

Immaginate ad esempio una fattura, che è composta almeno da un’intestazione e da una o più righe. Se viene inserita una nuova riga, dal punto di vista del database viene inserita un nuovo record nella tabella righe, ma in realtà la fattura viene modificata.

In questo caso il blocco ottimistico sulle righe di fattura è del tutto inefficace, in quanto nessuna riga viene modificata. Il lock pessimistico è quindi d’obbligo, ma questo soffre del problema di rilevare il momento in cui inizia l’editing, quindi raramente è possibile.

Aggiornamento di oggetti multilivello in un’unica transazione

Oltre a quanto già esposto, il lock su oggetti complessi non richiede solo un lock pessimistico, ma anche l’insert-update dell’intero oggetto deve avvenire nella stessa transazione. È proprio così che funziona X-Cross: tutti gli aggiornamenti, inserimenti e cancellazioni di un singolo oggetto complesso multilivello vengono eseguiti nel database in un’unica transazione.

Lock “orfani”.

Un problema comune, con il lock pessimistico, è la possibilità di lasciare nel database i lock “orfani”, che non vengono più utilizzati. Ad esempio, se un computer si arresta in modo anomalo o si spegne improvvisamente, i blocchi dei record possono rimanere attivi nel database.

Per evitare questo problema, X-Cross in ogni transazione controlla tutti i lock orfani, la cui sessione non è più attiva, e li cancella.