English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Document Orientation
  • ID Document Helper
  • Eventi Gestione locking

Get Lock

evento copia link

Condizioni di notifica

Questo evento viene notificato dal framework quando viene richiesto un lock su un documento. Ciò può avvenire nei seguenti casi:

  • se in una procedura Visual Code viene usata la funzione GetLock per ottenere manualmente un lock sul documento;
  • se viene richiesto un lock su un documento figlio per il quale non è abilitato il servizio Document Locking;
  • se viene aggiunto un documento ad una collection;
  • se viene modificato un documento figlio in un pannello in layout dettaglio;
  • se viene eliminato un documento da un pannello;
  • se un documento viene impostato come Deleted;
  • se viene modificata una proprietà del documento.

Utilizzo consigliato

L'evento deve implementare la gestione del locking salvando i dati su un database o su una qualsiasi altra fonte dati.

Argomenti

Doc Oggetto di tipo IDDocument su cui è richiesto il lock.
User Info Parametro di tipo stringa contenente le informazioni sull'utente e sulla procedura in corso. Se l'evento viene notificato a seguito di una chiamata a GetLock eseguita dal framework, questo parametro è sempre una stringa vuota.
Lock Info Parametro di output di tipo stringa. Se valorizzato, deve essere impostato usando una variabile String. Se il lock non può essere impostato, questo parametro deve essere valorizzato con le informazioni sull'utente che sta modificando il documento.
Result Parametro di output di tipo booleano. Deve essere impostato su FALSE se non è possibile impostare un lock sul documento.

Esempio di codice

// ****************************************************************************
// Evento notificato dal framework quando viene richiesto un lock su un
// documento
// ****************************************************************************

event MyDocumentHelper.GetLock(
  IDDocument Doc        // Oggetto di tipo IDDocument su cui è richiesto ...
  string UserInfo       // Parametro di tipo stringa contenente le i...
  inout string LockInfo // Parametro di output di tipo stringa. Se v...
  inout boolean Result  // Parametro di output di tipo booleano. Deve esse...
)
{
  string vUserID = null
  string vDateLocking = null
  // 
  select into variables (found variable)
    set vUserID = UserID
    set vDateLocking = DateLocking
  from
    Lock // master table
  where
    IDDoc = Doc.docID()
  // 
  if (vUserID == null)
  {
    // Sul documento non sono attivi lock: inserisco il lock
    insert values into Lock
      set IDDoc = Doc.docID()
      set DateLocking = now()
      set UserID = Applicazione.DatiSessione.UserID
  }
  else if (vUserID == Applicazione.DatiSessione.UserID)
  {
    // Sul documento è attivo un lock dello stesso utente: aggiorno il lock
    update Lock
      set DateLocking = now()
    where
      IDDoc = Doc.docID()
  }
  else
  {
    // Sul documento è attivo un lock di un altro utente: interrompo l'operazione fornendo
    // informazioni

    LockInfo = vUserID
    Result = false
  }
}
  • L'evento non viene notificato se il documento è in stato Inserted e/o Locked.
  • L'evento non viene notificato se per il documento non è abilitato il servizio Document Locking.

Ultima modifica: 23/03/2021 / Validità: da 11.5.5000

Vedi Anche

  • ID Document
  • Get Lock (funzione)
  • Inserted (proprietà)
  • Locked (proprietà)
  • Service List (lista valori)
  • Deleted (proprietà)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum