Funzionamento (Import / Export)

Descrizione

L'import e l'export avvengono tramite un programma generato a partire dalla compilazione del modello. Questo programma temporaneo ha come nome WWINNNNNN o WWENNNNNN (NNNNNN è un numero progressivo). Il programma non viene cancellato se prima di lanciare l'import si alimenta la variabile GTEST=1.

Nel caso dell'export, il programma estrae solo i dati (filtrandoli secondo le abilitazioni degli utenti). Nel caso dell'import, il programma contiene le istruzioni di decodifica del flusso di dati e richiama le diverse funzioni collegate all'oggetto da importare, emulando in qualche modo l'inserimento. Vengono quindi chiamate normalmente le etichette standard dei programmi SUBXXX e SPEXXX che permettono di gestire gli oggetti.

Vengono inoltre chiamate delle etichette supplementari particolari all'import, da scrivere nel programma standard IMPXXX o nel programma specifico associato nel modello di import.

Per l'import, il supervisore gestisce in automatico la creazione e l'aggiornamento della tabella principale; è possibile aggiornare delle tabelle supplementari se lo si è programmato nelle azioni dell'oggetto, ad esempio.

Per l'export, i testi memorizzati in X3 in formato clob devono essere di solo testo. Se si tenta di esportare un rich text, si esporterebbero con il testo tutti i suoi attributi.

I programmi di import ed export possono utilizzare le variabili GIMP(n). 

La documentazione sui modelli di import/export contiene informazioni supplementari.  

 

Cinematica dell'import

1- Prima della simulazione dell'inserimento

   Caricamento della classe [F] intermedia con il record da importare

   Se il record esiste nel database, il supervisore lo carica nella classe [M].

2- Durante la simulazione dell'inserimento (i campi vengono trattati uno ad uno).

   Le azioni sui campi con esecuzione "sempre" o "import/batch" vengono eseguite. Non vengono eseguite ad esempio quelle del menù contestuale (Clic, Bottone, Selezione).

   Per i campi inseribili, la classe [M] del campo viene alimentata con la classe [F] intermedia con le azioni controllo, post_campo e post_modifica.

3-La transazione di aggiornamento

   Caicamento della classe [F] definitiva con l'insieme della classe [M].

   Creazione o aggiornamento della tabella principale dell'oggetto

   Le tabelle supplementari sono gestite dalla seguente azione dell'oggetto: MODIFICATION

 

Caratteristiche della simulazione di inserimento

Le azioni sui campi con esecuzione "sempre" o "import/batch" vengono eseguite.

I campi obbligatori devono essere alimentati.

La trans-classe automatica non avviene per i campi visualizzati o nascosti.

I campi sono trattati nell'ordine della loro definizione nella videata.

E' disponibile un'azione supplementare in import sui campi inseribili: IMP_ZONE sui campi di blocco elenco, IMP_TAB sui campi di blocco riquadro previsto per una tabella di dettaglio.

 

Modello import senza oggetto

In questo caso il supervisore non utilizza la classe [M] delle videate associate all'oggetto. Non avviene quindi simulazione di inserimento con l'insieme di controlli ed azioni sui campi. Si tratta di un trasferimento diretto nella tabella del database. Per la tabella principale, il supervisore gestisce in automatico la creazione e la modifica di record.

 

Import Speciale

Il modello di import speciale è ridotto, quindi più aperto, ma comporta meno automatismi. Non gestisce il caricamento delle videate, la simulazione di inserimento e la transazione di aggiornamento. I programmi vanno scritti in etichette particolari, poi, se necessario, nell'etichetta $ACTION del programma associato all'import. E' possibile creare degli import speciali su modelli con oggetto semplice, riquadro o combinato. Non sono autorizzati su modelli senza oggetto. L'import speciale è sia specifico, sia standard. Tuttavia, su un import standard, si ha comunque l'unica possibilità di aggiunta di specifico con l'azione IMPORT; Per motivi tecnici, questa azione va allora sviluppata nel programma specifico dell'oggetto.

 

Le Azioni

Il programma standard o specifico inizia quindi con questa etichetta $ACTION da scrivere nel seguente modo (dove XXXXXX è il codice dell'evento): 

$ ACTION
Case ACTION
   When "XXXXXX": Gosub XXXXXX
   When default
Endcase
Return

Ogni evento viene identificato da un codice alfanumerico, contenuto nella variabile ACTION. Se non vi è codice per un evento, il funzionamento della funzione non sarà di ostacolo. Nel sotto-programma $ACTION si gestisce l'indirizzamento all'etichetta aggiunta. In questa sintassi "case ACTION" si indicheranno tante righe quanti sono gli eventi da completare. La $ACTION viene chiamata dal programma supervisore tramite GOSUB; ciò permette di conseguenza di utilizzare delle variabili locali nel programma supervisore.

In allegato si trova l'elenco delle azioni. Si troverà poi la descrizione dettagliata di queste azioni. Viene descritto il contesto chiamante e l'obiettivo di queste azioni.

Aggiunta di azioni specifiche sullo standard

Di default, per uno stesso evento, l'azione specifica è chiamata prima dell'azione standard.

Questa può annullare e sostituire l'azione standard se posiziona la variabile GPE al valore 1.

Per eseguire l'azione standard prima dell'azione specifica, in questo caso, si duplica il programma standard nell'azione specifica, si aggiunge il programma specifico e poi si posiziona la variabile GPE al valore 1. Esempio:

Programma supervisore
GPE=0
Gosub  ACTION  From  trait_std             ( chiamata dello standard)
If GPE=0
   Gosub  ACTION  From  trait_spé.            ( chiamata dello specifico)
Endif

Programma specifico
$ ACTION
Case ACTION
   When "OUVRE" : Gosub OUVRE
   When default
Endcase
Return

$OUVRE
...                                                                ( azione specifica OUVRE)
GPE = 1                                                     (nessuna chiamata dello standard a seguito dello specifico)
Return