DFN023 - Importazione tabelle¶
Posizione nel menu Programma non a menu Linkage section UTILDBFPRG - Linkage comune Nome processo: CONTATTI Tabella: DFTABELLE - Tabelle generiche Logica generale Sincronizzazione delle tabelle generiche tra AREA e il DB frontiera. In funzione della classe tabelle, potrebbe importare su COGTABEL o su tabelle diverse. NB: diamo per scontato che la tabella viene aggiornata dal gestionale host in modo puntuale, quindi si può esaminare ogni singolo record in modo indipendente senza preoccuparsi dei restanti dati della stessa tabella. Per il momento funziona solo in IMPORT Relazione tra tabella HOST e tabella AREA E' stata introdotta la tabella DFRACCORDOTABELLE, che permette di rendere flessibile il raccordo tra una tabella presente in DFTABELLE e la relativa tabella in AREA. Se una tabella da importare è presente in questa tabella di raccordo, verrà importata. Altrimenti verrà ignorata. NB: nel caso di tabelle raccordate su COGTABEL o COGGENER, è possibile che il codice fornito dal db host sia più lungo di quello indicato su AREA. Quindi a questo punto ci sono 2 casi: * Il codice su AREA è già presente, e già raccordato: nessun problema * Il codice su AREA non è presente: si dovrà creare il raccordo manualmente, a patto che sil programma tenta di inserirlo troncandolo, ma in questo caso potrebbero esserci dei duplicati, quindi in questo caso il sistema tenterà di attribuire un nuovo codice "a caso" tra quelli liberi. Per il momento è gestito solo il primo caso: quindi è necessario che le tabelle collegate a COGGENER o COGTABEL abbiano già DF-TAB-COD-AREA valorizzato. Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| dbfront | sincro-attiva | |
| dbfront | email-segnalazioni | |
| dbfront | db-tipo | |
| dbfront | db-conn-string | |
| dbfront | db-log-level |
Elaborazione Tipi di segnalazione: Vedi Tipi di segnalazione A - Controllo di esecuzione Vedi Controllo di esecuzione B - Apertura B.1 Apertura tabelle Tentare l'apertura della tabella da sincronizzare: DFTABELLE. Se fallita inviare una Segnalazione grave e chiudere. Tentare l'apertura della tabella semaforo: DFSEMAFORO. Se fallita inviare una Segnalazione grave e chiudere. B.2 Blocco semaforo Lettura del record DFSEMAFORO:
| Nome campo | Note |
|---|---|
| DF_SMF_TABELLA | DFTABELLE |
Se il record non esiste inserirlo. Se risulta bloccato dal gestonale host (DF_SMF_USO_HOST = 1) Informazione sul log e chiudere. Dopodichè aggiornare il semaforo impostando:
| Nome campo | Note |
|---|---|
| DF_SMF_USO_AREA | 1 |
| DF_SMF_VERSIONE | Versione attuale: 1 |
B.3 Aggiornamento stato Aggiornamento dello stato sul record specifico; in particolare:
| Dato | Contenuto |
|---|---|
| DBFST-STATO | "I" |
| DBFST-ATT-DATA | Data sistema |
| DBFST-ATT-ORA | Ora sistema |
| DBFST-SCHED-DATA | Sommare il tempo di attesa a data/ora sistema |
| DBFST-SCHED-ORA | |
| DBFST-ERRORI | 0 |
| DBFST-MSG-ERRORE | " " |
| DBFST-LOG-PROCEDURA | " " |
C - Sincronizzazione (Importazione) C.1 Operazioni preliminari C.1.1 Lettura raggruppamenti gerarchici Caricare in una tabella interna al programma il contenuto di COGRAGGR, allo scopo di velocizzare la ricerca successiva. C.1.2 Lettura tabelle raccordate Caricare in una tabella interna al programma il contenuto di DFRACCORDOTABELLE C.2 Selezione record da importare Tramite un comando SQL specifico, estrazione di tutti i record aggiornati dall'HOST: SELECT * FROM dftabelle WHERE df_tab_agg_host = 1 C.2.1 Controllo record Per ciascun record letto, verificare la correttezza delle informazioni contenute: Controllo DF_TAB_CLASSE Questa informazione deve essere significativa, e può contenere una delle seguenti classi: * "M" (Tabelle collegate a raggruppamenti gerarchici) Altrimenti segnalare Errore . Controllo DF_TAB_TIPO Questa informazione deve essere significativa. Altrimenti segnalare Errore Controllare se il tipo è previsto nella tabella di raccordo. Se si, proseguire con l'importazione, altrimenti ignorare il record.
| DF-RTAB-TABELLA-AREA | Elaborazione | Note |
|---|---|---|
| COGTABEL | La tabella sarà sincronizzata con la tabella dove EUTA-TIPO = DF-RTAB-TA-COD |
|
| COGANRAG | La tabella sarà sincronizzata con un raggruppamento gerarchico dove: ARAG-CLASSE = DF-RTAB-TA-COD |
Per mantenere compatibilità con la gestione precedente, in assenza di raccordo il programma tenterà comunque l'elaborazione precedente: * DF_TAB_CLASSE="M": deve corrispondere ad una classe di raggruppamenti gerarchici: eseguire quindi una ricerca sulla tabella caricata in precedenza; il codice presente in DF-TAB-TIPO deve corrispondere ad un "Codice host" (TRGR-CODICE-HOST) o ad una classe raggruppamento (TRGR-CLASSE). Se non è nè l'uno nè l'altro, segnalare Errore; Altrimenti associare alla tabella il tipo corretto da usare successivamente in importazione Controllo DF_TAB_COD_HOST Questa informazione deve essere significativa. Altrimenti segnalare Errore Controllo DF_TAB_VAL Questa informazione può contenere "C" o " ". Altrimenti segnalare Errore C.3 Importazione record Se tutti i controlli sono superati, proseguire con l'importazione del record A seconda dei casi descritti in precedenza, potrebbe essere un inserimento, una variazione o una cancellazione C.3.1 Importazione record su COGANRAG In base ai ragionamenti precedenti, se la tabella da aggiornare è COGANRAG si prosegue in questo modo: Ricerca del record e aggiornamento
| Nome campo | Note |
|---|---|
| ARAG-CLASSE | La classe raggruppamento collegata al record, trovata sulla tabella di raccordo caricata in precedenza (corrisponde ad un TRGR-CLASSE) |
| ARAG-TIP | "R" |
| ARAG-ID | DF_TAB_COD_HOST (per il momento diamo per scontato che ci sia corrispondenza) |
A questo punto i casi possono essere:
| DF_TAB_VAL | Il record esiste? | Attività |
|---|---|---|
| "C" | Si | Cancellare il record (non esiste la cancellazione logica su COGANRAG) |
| "C" | No | Non facciamo nulla |
| " " | Si | Aggiornamento |
| " " | No | Inserimento |
Sia in caso di inserimento che in caso di aggiornamento, andremo ad aggiornare i dati mancanti:
| Nome campo | Note |
|---|---|
| ARAG-DES | DF_TAB_DES |
| ARAG-ID-PADRE | " " (per il momento non gestiamo la gerarchia) |
C.4 Aggiornamento del record su DFTABELLE
| Nome campo | Contenuto |
|---|---|
| DF_TAB_AGG_HOST | 0 |
| DF_TAB_AGG_AREA | 1 |
| DFTAB_COD_AREA | ARAG-ID |
D - Sincronizzazione (esportazione) Fase non prevista in questo programma E - Chiusura E.1 Rilascio semaforo Aggiornare il record semaforo relativo a DFTABELLE, impostando
| Nome campo | Note |
|---|---|
| DF_SMF_USO_AREA | 0 |
E.2 Chiusura tabelle Chiudere le tabella DFTABELLE e DFSEMAFORO E.3 Aggiornamento stato Aggiornamento dello stato sul record specifico; in particolare:
| Dato | Contenuto |
|---|---|
| DBFST-STATO | "A" |
| DBFST-ERRORI | Numero di errori rilevati |
| DBFST-MSG-ERRORE | Ultimo errore rilevato |
| DBFST-LOG-PROCEDURA | Codice procedura di gestione log |
Estratto da documentazione interna ClickUp