Vai al contenuto

Cambiamento persistenza allegati in eLegere

Info

Il documento riguarda chiunque lavora direttamente con il database di eLegere senza passare per il servizio.

I cambiamenti hanno effetto da 2.13-prerelease.2.

Il documento spiega come la persistenza degli allegati in eLegere è cambiata per i database degli ambienti.

Abstract

Differenze dalle versioni precedenti

Da 2.13-prerelease.2. eLegere 2.13 gestisce finalmente:

  • Caricamento di file sopra i 2 GB
  • Organizzazione e navigazione in cartelle
  • Caricamento di intere cartelle

Le funzionalità sopra hanno richiesto cambiamenti in come eLegere gestisce gli allegati nel database.

In precedenza

Nelle versioni precedenti a 2.13-prerelease.2, ogni Storage eLegere aveva una tabella sul database chiamata con il formato seguente: STORAGENAME_Attachments.

eLegere prima di 2.13-prerelease.2 conservava sia i dati binari del file sia i relativi meta-dati in STORAGENAME_Attachments..

Un record della tabella STORAGENAME_Attachments aveva i seguenti campi:

Dopo 2.13-prerelease.2

Dopo 2.13-prerelease.2, ci sono due tabelle in un database eLegere per ciascun Storage: STORAGENAME_Attachments e STORAGENAME_Attachments_Chunks.

  • STORAGENAME_Attachments ora conserva solo i meta-dati dell'allegato. (Riferito come _Attachments)
  • STORAGENAME_Attachments_Chunks conserva i file eventualmente divisi in chunk per ragioni di ottimizzazione. (Riferito come _Attachments_Chunks)
Tabella _Attachments

La nuova tabella _Attachments non ha più i campi Link, BinaryObject e FileStreamGuid. Link era già stato deprecato. BinaryObject (ora chiamata Data) e FileStreamGuid sono stati spostati sulla tabella _Attachments_Chunks.

Invece, la tabella _Attachments ha ora i seguenti nuovi campi:

Campo Descrizione
FolderId Id della cartella contenente il record. NULL se il record è nella root.
Size Dimensioni del file
IsDeleted Booleano che indica un file da cancellare. Quando l'utente cancella un allegato nel fronted, la cancellazione è soft: il file rimane sul database e IsDeleted ottiene il valore True. Il database cancellerà il record in seguito e eLegere non lo considererà.
Path Valore stringa che concatena gli ID delle cartelle dell'albero contenente il file. Un punto divide ogni ID. NULL se il record è nella root.
Nota sul campo Path

Example

Prendendo come esempio il percorso Home/Invoices/Incoming/012023.pdf, _Attachments lo registra come:

Id Name ... IsFolder Path
1 Invoices 1 NULL
2 Incoming 1 .1.
3 012023.pdf 0 .1.2.
Tabella _Attachments_Chunks

_Attachments_Chunks conserva i file dividendoli eventualmente in chunk.

Una registrazione in _Attachments_Chunks ha i seguenti campi:

Campo Descrizione
Id Id del record
FileId Id che identifica la riga con i meta-dati del file in _Attachments
FileIndex Numerico che definisce l'ordine per ricostruire gli allegati dal chunk. Deve iniziare da 0.
Data Il binario del file
FileStreamGuid Il valore del filestream. È unico e si deve generare tramite la funzione NEWID()
IsDeleted Booleano che indica un file da cancellare. Quando l'utente cancella un allegato nel fronted, la cancellazione è soft: il file rimane sul database e IsDeleted ottiene il valore True. Il database cancellerà il record in seguito e eLegere non lo considererà.

Leggere un allegato

Warning

eLegere potrebbe dividere in chunk gli allegati per ottimizzazione di performance.

Questa sezione spiega come accedere a e leggere un allegato eLegere dal database.

Interagendo direttamente con le tabelle del database, puoi leggere un qualunque allegato seguendo i passaggi sotto:

  1. Nella tabella _Attachments, filtra per IsDeleted come False e identifica l'allegato. Prendi nota del valore del campo Id.
  2. Vai alla tabella _Attachments_Chunks.
    • Filtra FileId per il valore di _Attachments_Chunks dallo step (1) e IsDeleted come False
    • Ordina per FileIndex in ordine ascendente.
  3. Ricostruisci i dati binari conservati nel campo Data seguendo l'ordine ascendente di FileIndex strettamente.

Sarai in grado di accedere all'allegato conservato per la riga e leggerlo.

Inserire un allegato

Note

Non è richiesto di dividere gli allegati in chunk durante l'inserimento.

Questa sezione spiega come inserire un allegato in eLegere direttamente nel database.

  1. Nella tabella _Attachments, inserisci una nuova riga. Prendi nota di Id: sarà il valore di FileId nella tabella _Attachments_Chunks. Devi registrare il valore del campo Path con il formato corretto (vedi Nota sul campo Path).
  2. Vai sulla tabella _Attachments_Chunks e inserisci una nuova riga. FileIndex deve avere valore 0.

Avrai inserito un allegato.