Questa funzione permette di creare un archivio contenente degli sviluppi creati in un determinato dossier (il dossier corrente di default), così come un certo numero di elementi di parametrizzazione. E' particolarmente interessante se si desidera riportare su un dossier di gestione tutte le modifiche coerenti fatte sul dossier di parametrizzazione o di test.
Oltre alle possibilità di raggruppamento di un insieme di elementi, questa generazione di patch permette di liberarsi da un vincolo di server unico o di server interconnessi che necessita l'utilizzo del bottone Copia.
Il principio di questa funzione è di estrarre degli elementi dal dizionario di dati di un dossier, ma anche dei dati (in principio, dei dati di parametrizzazione in quantità limitata, poiché questo formato non è molto compatto). L'insieme degli elementi così estratti viene salvato in un file che può allora essere reintegrato in un altro dossier utilizzando la funzione di integrazione di patch. L'aspetto multilingue del dizionario è gestito da questo strumento, i messaggi legati agli elementi in patch possono essere trasferiti in più lingue.
Ogni elemento estratto è identificato contemporaneamente da un codice che definisce il tipo di elemento di patch (una videata, una stampa, dei dati di una tabella...) e da un elemento di informazione complementare (il codice della videata, dell'oggetto, un criterio di selezione...)
Questa funzione viene utilizzata:
Presentazione
Nella videata di inserimento, si definiscono:
L'inserimento si effettua in un solo folder.
Chiudi
Campi
I seguenti campi sono presenti in questo folder :
File
|
|
|
|
|
|
Tipo patch
|
Il tipo di patch può assumere i seguenti valori:
Nelle versioni precedenti, si utilizzava un tipo di patch SPX per eliminare un'azione SPE presente in una videata. A partire dalla versione 150, questi due ultimi tipi di patch, molto più flessibili, permettono di riaggiornare le azioni SPE (che esistevano precedentemente) e le azioni SPV (che sono nuove). Nota importante: Le patch che contengono degli elementi di documentazione sono elaborate in modo un po' particolare, descritto nell'allegato corrispondente. |
Riquadro Lingue
|
Questo riquadro permette di definire le lingue che si intendono patchare. Infatti, tutti i testi del dizionario di dati (definiti dal codice tipo ATX) vengono memorizzati in una tabella separata (la tabella ATEXTE) e sono identificati da un numero (minore di 100.000 per i testi standard, e maggiore per gli altri). Questi testi sono trasmessi tramite patch nel proprio formato letterale (il numero non ha senso poichè può variare) nelle diverse lingue. L'elenco delle lingue utilizzate per includere i testi è quindi fornito da questo riquadro. |
Blocco numero 6
|
Questo commento informativo permette di descrivere il file patch (dal punto di vista della sua finalità o del suo contenuto). Sarà visibile nella traccia dell'integrazione della patch. |
|
E' il nome del dossier a partire dal quale verranno estratti gli elementi della patch. |
|
Questo codice versione minima permette di evitare di integrare la patch in un'applicazione di versione inferiore. |
|
Codice non inserito che identifica il software Sage X3 da dove viene estratta la patch. |
Riquadro Oggetti
|
Questo riquadro permette di inserire un elenco di oggetti da patchare. Questo elenco è identificato da un tipo di oggetto ed un nome. La definizione dei diversi tipi ed il significato del nome sono forniti in allegato. |
|
Si inserisce in questo campo la chiave dell'elemento di cui si è inserito il codice, o un complemento di informazione (condizione nel caso di una patch di dati). Si noti che se la chiave della scheda da patchare è in più parti, queste sono separate dal carattere tilde ( ~ ). |
|
Permette di definire una descrizione associata ad ogni scheda. |
Riquadro Codici attività
|
Questo riquadro permette di inserire un elenco di codici attività specifici o verticali (ad es. che cominciano per X, Y o Z). Non appena si intende creare una patch che integri sviluppi di questo tipo, è obbligatorio definire i codici attività interessati. Infatti, gli elementi del dizionario che vertono sui codici attività specifici non elencati saranno ignorati nell'integrazione della patch. Questa precauzione è obbligatoria, perché altrimenti una patch standard non sarebbe in grado di aggiornare un oggetto sottomesso ad un codice attività specifico. E' precisamente il fatto che nessun codice attività specifico sia fornito in testata in una patch standard che permette di gestire questa cosa. Questi codici attività non sono quindi un mezzo per filtrare l'estrazione degli oggetti della patch, ma un mezzo per indicare che gli elementi sottomessi a questi codici attività specifici saranno aggiornati all'integrazione della patch. Il caricamento degli elementi sottomessi a questi codici attività potrà essere effettuato tramite una funzione accessibile con clic destro nel riquadro che definisce il contenuto della patch. |
Chiudi
Funzioni accessibili tramite click destro sul riquadro
Questa funzione permette di prealimentare il riquadro con tutti gli elementi del dossier sottomessi ai codici attività elencati nel riquadro corrispondente.
Questa funzione permette di verificare se l'oggetto della riga corrente è o meno identico tra due dossier. Si apre allora una finestra per inserire i due codici dossier. Una volta alimentata la finestra, avviene il confronto, il cui risultato è visibile in una finestra di traccia. Se il nome dell'elemento non appare come differente, i due elementi sono identici nei dossier confrontati.
Nota: è possibile che il confronto non sia possibile su alcuni tipi di oggetti; in questo caso un messaggio lo segnala nella traccia.
Questa funzione permette di verificare se l'insieme degli oggetti che si trovano nella patch sono o meno identici tra due dossier. Si apre allora una finestra per inserire i due codici dossier. Una volta alimentata la finestra, avviene il confronto, il cui risultato è visibile in una finestra di traccia.
Questa funzione permette di richiamare un modello di parametrizzazione, allo scopo di alimentare una lista di patch di tipo AAA (una riga per modello di dati indicato nella videata).
Attenzione tuttavia: contrariamente al funzionamento ottenuto quando si parte dalla funzione di copia di parametrizzazione, qui vengono generate solo le righe AAA (la riga APH che descrive il modello non è inclusa). Poiché l'inserimento del codice legislazione non viene effettuato a questo stadio, ogni filtro legislazione verrà mal applicato in questa sede.
E' comunque possibile generare una riga AAA per un modello di dati unitari, tramite clic destro Modello di dati sul campo Nome oggetto. Si accede allora ad una finestra di selezione che permette di scegliere il modello, la legislazione, la chiave o la formula di selezione, allo scopo di creare una riga che integri tutti gli elementi.
Chiudi
Questo riquadro permette di inserire un elenco d'oggetti da patchare. Questo elenco è identificato da un tipo di oggetto ed un nome. La definizione dei diversi tipi ed il significato del nome sono forniti qui di seguito. La colonna Range permette di conoscere l'ordine nel quale si presentano i tipi di elementi nella patch (vedere paragrafo qui in basso). Gli elementi che hanno il range 100 nel riquadro vengono sempre posizionati alla fine della patch (nell'ordine alfabetico dei codici degli elementi).
Codice | Significato | Nome | Posizione |
AAA | Righe provenienti da un modello di parametrizzazione | Formato particolare, vedere paragrafo corrispondente | 100 |
ABA | Codice schedulazione | 46 | |
ABF | Codice della tabella | 54 | |
ABG | Codice del gruppo | 47 | |
ABI | Dimensione BI | Codice della dimensione | 55 |
ABM | Datamart BI | Codice del datamart | 56 |
ABO | Stampa Business Objects | Codice della stampa | 58 |
ABT | Codice del job | 45 | |
ABV | Codice della regola | 57 | |
ACL | Codice della tabella | 18 | |
ACN | Codice della consultazione | 36 | |
ACS | Elaborato sotto forma di condizione (CODACS="valore") | 14 | |
ACT | Codice dell'azione | 16 | |
ACV | Definizione di un codice attività | Codice attività | 1 |
ADC | Descrizione di un programma (dizionario) | Nome del programma | 9 |
ADF | Tipo ~ Codice dell'elemento | 50 | |
ADI | Contenuto di una tabella diversa | Numero della tabella | 24 |
ADO | Help funzionale (tutti i paragrafi) | Tipo ~ Codice dell'help | 49 |
ADP | Parametro (contemporaneamente la sua definizione ed il suo valore se ne esistono a livello generale) | Codice del parametro | 32 |
ADV | Parametrizzazione di una tabella diversa | Numero della tabella | 23 |
ADX | Programma (unicamente sotto forma compilata) | Nome del programma | 11 |
ADZ | Codice dell'help | 48 | |
AEN | Elaborato sotto forma di condizione (CODICE="valore") | 35 | |
AFC | Codice della funzione | 17 | |
AGB | Nome della variabile | 20 | |
AHH | Gerarchia BI | Codice gerarchia | 59 |
AHI | Codice della formula | 7 | |
AII | Codice condizione | 60 | |
ALH | Codice della consultazione | 51 | |
ALQ | Codice della consultazione SQL | 52 | |
ALT | Codice della consultazione | 53 | |
AMK | Codice della videata | 28 | |
AML | Numero del menù locale | 2 | |
ANG | Codice della navigazione | 10 | |
ANM | Definizione di un contatore | Codice del contatore | 15 |
ANT | Codice oggetto per widget | 65 | |
AOB | Definizione di oggetto | Codice dell'oggetto | 30 |
AOE | Codice del modello | 34 | |
AOP | Proprietà di oggetto | Codice dell'oggetto | 31 |
APH | Codice del modello | 100 | |
APR | Codice processo | 63 | |
ARP | Definizione di stampa nel dizionario | Codice della stampa | 29 |
ASL | Elaborato sotto forma di condizione (COD="valore") | 19 | |
ASU | Descrizione di un sotto-programma nel dizionario | Nome del sotto programma | 21 |
ASY | Codice stile | 61 | |
ATB | Definizione di una tabella (il contenuto non viene trasferito, l'aggiornamento della struttura avviene senza perdere i dati comuni) | Codice della tabella | 25 |
ATN | Transazioni | Codice della transazione | 8 |
ATY | Codice del tipo | 22 | |
AUR | Codice dell'URL | 27 | |
AVW | Codice della vista | 26 | |
AWA | Codice della regola Workflow | 43 | |
AWE | Nome di pubblicazione | 64 | |
AWI | Definizione di finestra | Codice della finestra | 33 |
AWM | Modello di dati Workflow | Codice modello | 41 |
AWR | Regola di assegnazione Workflow | Codice della regola di assegnazione | 42 |
AWW | Parametrizzazione del piano di lavoro Workflow | Codice del piano di lavoro | 44 |
BIA | Oggetti BIAR | Codice oggetto | 4 |
ELT | Elemento dell'interfaccia client (xsl, immagine, file diversi) | Percorso del file | 3 |
ETA | Stampa Crystal Reports (file con estensione rpt) | Nome della stampa | 13 |
EXE | Richiesta di esecuzione di un programma | Nome del programma | 6 |
GAU | Codice del movimento | 40 | |
PS1 | Codice dell'attivatore | 37 | |
PS2 | Codice statistica | 38 | |
TAB | Struttura e contenuto completo di una tabella (esclusa la sua definizione « dizionario »). | Codice della tabella | 39 |
TFO | Codice formula | 62 | |
TRT | Sorgente di un programma (il programma sarà compilato alll’installazione della patch) | Nome del programma | 12 |
TXT | File testo (nella directory TXT) | Nome del testo | 5 |
Abbreviazione di una tabella | Contenuto parziale della tabella | Condizione di estrazione (espressa sotto forma di una istruzione Where) | 100 |
Il codice TAB permette di trasferire i dati della tabella, ricaricandola nel database con la sua struttura ed i suo dati. In compenso, non si creano gli elementi del dizionario che riguardano questa tabella, cosa che può non apparire come visibile. Questo codice è utile quando si desidera ricaricare una tabella già creata nei dossier da patchare e che non ha cambiato di struttura. Se non è questo il caso, bisogna mettere due righe nella definizione della patch: la prima riguarda la definizione della tabella (ATB XXXXX), la seconda il suo contenuto (TAB XXXXX). Anche se non si inseriscono in questo ordine, la funzione di patch le sistemerà in questo ordine. All'integrazione della patch, la tabella sarà creata nel dizionario e nel database se non esiste (altrimenti, la sua struttura sarà aggiornata se è cambiata). Poi avverrà il ricaricamento della tabella con i dati.
La possibilità di trasferire il contenuto parziale di una tabella è ottenuta indicando nella colonna tipo l'abbreviazione della tabella ed indicando nella colonna Nome una condizione logica che sarà utilizzata per l'estrazione dal dossier di partenza e per l'integrazione nel dossier di destinazione. E' importante notare che i dati così estratti potranno modificare dei dati esistenti con le stesse chiavi o crearne di nuovi. Però, per ragioni di sicurezza, in nessun caso, ci sarà cancellazione di dati al momento dell'integrazione della patch. Così, ad esempio, se si considera la seguente situazione, per la tabella dei paesi (di abbreviazione TCY):
Dossier di partenza | Dossier di destinazione | ||
Codice paese | Nome paese | Codice paese | Nome paese |
AD | Andorra | AD | Andorra |
AE | Emirati Arabi Uniti | AF | Afghanistan |
AL | Albania | AL | Germania |
AR | Argentina | AU | Australia |
BE | Belgio | BE | Belgio |
… |
| … |
|
Se nella patch si indica una riga con TCY e la condizione CRY="AL", la patch conterrà solo la riga corrispondente al paese Albania e l'integrazione della patch nel dossier di destinazione riscriverà AL, Germania per sostituirla con AL, Albania.
Se nella patch si indica una riga con TCY e la condizione pat(CRY,"A*"), la patch conterrà le 4 righe AD, AE, AF e AR. All'integrazione, si creerà la scheda AE, Emirati Arabi Uniti, la scheda AR, Argentina, si sostituirà AL, Germania con AL, Albania e si manterrà A, Afghanistan, e AU, Australia, che non erano stati consegnati, ma esistevano già nel dossier di destinazione.
Se nella patch si indica una riga con TCY e la condizione find(CRY,"AD","AE","AL"), il risultato sarebbe stato lo stesso, salvo per quello che riguarda AR, Argentina, che non sarebbe stato trasferito.
La sola maniera di cancellare dei dati consiste:
Un caso particolare deve essere menzionato: il codice EXE, che permette di dare il nome di un programma da eseguire. Questo programma viene eseguito a fine integrazione di patch (può già esistere o essere consegnato nella patch stessa, poichè l'esecuzione non si fa che alla fine dell'integrazione).
Tale programma deve integrare un sotto-programma PATCH, con un argomento che è il codice dossier. E' questo sotto-programma che sarà eseguito. Così, per il caso sopracitati, si otterrebbe il programma seguente:
Subprog PATCH(NOMDOS)
Value Char NOMDOS
Local File =NOMDOS+".TABCOUNTRY" [TCU]
Trbegin [TCU]
Delete [TCU] Where pat(CRY,"A*")=1 & find(CRY,"AD","AE","AL")=0
Commit
End
Così come lo si vede qui sopra, è dunque necessario dichiarare le tabelle in questo sotto-programma tenendo chiaramente conto del fatto che devono essere dichiarate su un dossier che non è necessariamente il dossier corrente (è la sintassi a sintassi Local File = NOMDOS + ".NOMTABLE" che l’assicura)
Quando si effettuano delle patch su elementi modello dell'interfaccia utente (videate modello utilizzate per creare delle finestre di transazione), è necessaria una rivalidazione delle videate in questione.
Tale rivalidazione può essere eseguita dichiarando, nella manutenzione, l'esecuzione del programma appropriato. Qui avanti vengono presentati i programmi standard da lanciare secondo il tipo di elemento patchato:
Elemento patchato | Programma | Risultato |
Videata utilizzata come base di una consultazione parametrizzabile | SUBGTC | Validazione di tutte le videate di consultazione |
Stili di presentazione | SUBASY | Generazione degli stili |
Transazione sistema | SUBAMI | Validazione delle transazioni sistema |
Parametri statistiche | SUBPS2 | Rivalidazione di tutte le statistiche |
Videata di base di una transazione sull'oggetto XXX | SUBXXX | Rivalidazione delle transazioni associate all'oggetto |
E' importante notare che questo tipo di funzionalità è realizzabile anche in specifico (è sufficiente aggiungere il sottoprogramma PATCH così come indicato nel paragrafo precedente).
La struttura dei dati della documentazione è un po' particolare. Infatti, in creazione o rivalidazione di dossier, si applicano di default le regole seguenti:
Così, quando si integra una patch di documentazione (tipo ADO), il principio è il seguente:
L'integrazione di patch verifica la sequenzialità di passaggio dei file di patch, nel momento in cui questi contengono una sequenza numerica nel loro nome. Si consiglia di chiamare i file di patch utilizzando un nome definito sotto la forma X_yyyy_zzz.dat, con i seguenti significati:
Se si applica questa norma, al momento dell'integrazione di un insieme di file di patch in una directory, saranno effettuati i seguenti controlli :
Quando si crea un file di patch, la norma vuole che si faccia in modo che gli elementi che vi si trovano formino un tutto la cui applicazione lasci un dossier in una situazione coerente. In particolare, se si crea una nuova funzione con patch, e questa funzione è definita da un'azione, una finestra, una videata, una tabella e due programmi, appare logico che l'insieme di questi elementi sia presente nella patch.
Quando un insieme di elementi viene utilizzato per formare un file di patch, la funzione di creazione sistema tali elementi in un ordine preciso di tipi, allo scopo non avere errori all'integrazione. Infatti, se ad esempio si integra una finestra prima delle videate che la compongono, si otterrà un errore Videata inesistente durante la sua validazione. Così, si integrano prima di tutto i tipi di dati prima di videate e tabelle, le videate prima delle finestre, e così via.
L'ordine utilizzato in fase di generazione della patch corrisponde alla posizione fornita nel riquadro sopra. E' anche l'ordine proposto che appare nella funzione di patch automatica.
Occorre tuttavia osservare che non è possibile risolvere tutti i possibili conflitti. Infatti, per prendere un esempio, un tipo di dati può far riferimento ad un'azione, che può far riferimento ad una finestra, che può far riferimento ad una videata, che può far riferimento a questo tipo di dati. Per risolvere questo tipo di conflitto (raro), può essere necessario scomporre il file patch in due file (il primo contenente tutti gli elementi con un tipo di dati che non fa riferimento all'azione, il secondo contenente il tipo di dati che integra l'azione, ad esempio).
Quando si installa una patch contenente degli elementi del dizionario, bisogna notare che alcuni campi, considerati come elementi parametrizzabili del dizionario, vengono rispettati nonostante eventuali protezioni con codice attività di cui potrebbero beneficiare. E' il caso ad esempio di una destinazione di default in una stampa.
Si troverà in un allegato tecnico il dettaglio dei campi rispettati.
Una patch di tipo AAA corrisponde ad una riga proveniente da un modello di parametrizzazione. Utilizza un formatto particolare per il codice dell'elemento. Tale formato è uno dei due seguenti formati:
MODELLO~COD_LEG~COD_TRS~='FORMULA_SELEZIONE'
MODELLO~COD_LEG~COD_TRS~CHIAVE~SOTTO_CHIAVE~SOTTO_SOTTO_CHIAVE...
In queste righe:
Di default, le seguenti stampe sono associate alla funzione :
PRTSCR : Stampa Videata
Ma ciò lo si può modificare tramite parametrizzazione.
Questa funzione può essere lanciata in batch. Il job standard ZPATCHC è previsto per questo.
Oltre ai messaggi generici, i seguenti messaggi d'errore possono apparire al momento dell'inserimento :
Il percorso d'accesso al file patch non esiste
Il tipo di oggetto non corrisponde né ad un tipo di oggetti predefiniti, né all'abbreviazione di una tabella esistente.
Si è tentato di estrarre un oggetto dal dizionario che non esiste
La condizione di estrazione associata all'estrazione dei dati di una tabella è sintatticamente errata.