BIFFile - Esempi e formato BIF
Scopo del formato
BIF è il formato ufficiale B-Arts generato da BStudio per distribuire dati insieme a un primo rilascio applicativo o a una patch dati corposa. È progettato per essere letto dai template applicativi B-Arts e importato rapidamente in SQL Server tramite SqlBulkCopy.
Struttura del file
Estensione:
.bif.Il nome del file senza estensione corrisponde al nome della tabella SQL Server destinazione.
Separatore dei campi:
«|b|».Terminatore dei record:
«~b~».La prima riga contiene nome e tipo di ogni colonna nella forma
Nome~Tipo.Sono supportati i tipi riconosciuti dal lettore B-Arts, inclusi
String,Int32,Int64,Double,Boolean,DateTimeeByte[].Per
Byte[], ogni byte viene scritto come carattere equivalente e ricostruito in lettura; questo permette al formato di trasportare contenuto binario.
Esempio concettuale semplificato:
ID~Int32«|b|»Descrizione~String«|b|»Allegato~Byte[]«~b~»
1«|b|»Documento iniziale«|b|»<contenuto binario codificato BIF>«~b~»
Il formato effettivo deve essere generato da BStudio per garantire corrispondenza tra schema, tipi, separatori e contenuto binario.
Lettura controllata
using B.BIO;
using B.BLog;
using B.BInterfaces;
BLogText log = new BLogText();
BIFFile bif = new BIFFile(
connection,
@"C:\Release\BIF\sysConfigurazioni.bif",
ref log);
if (bif.Stato == BIFFile.eStato.Errore)
{
throw new InvalidOperationException(log.Text);
}
if (!bif.Read() || bif.DT == null)
{
throw new InvalidOperationException(log.Text);
}
int rowsToImport = bif.DT.Rows.Count;
Il costruttore verifica l'esistenza del file e della tabella ricavata dal nome. Read() decodifica header tipizzato, record e valori binari in una DataTable, quindi imposta Stato a Letto.
Importazione durante rilascio o patch
// Eseguire solo dopo conferma esplicita dell'operatore e controlli applicativi.
if (!bif.Import())
{
bif.Stato = BIFFile.eStato.Errore;
throw new InvalidOperationException(bif.BLog.Text);
}
bif.Stato = BIFFile.eStato.Importato;
Import() esegue intenzionalmente questi passaggi:
TRUNCATE TABLEsulla tabella che ha lo stesso nome del file;importazione massiva della
DataTabletramiteBConnection.InsertDT;conservazione dei valori identity presenti nel BIF (
KeepIdentity).
È quindi una funzione amministrativa per inizializzazione e patch, non un normale import incrementale richiesto dagli utenti dell'applicazione.
