WikiUp

Introduzione

A fianco degli oggetti standard smeup può nascere l'esigenza di definire degli oggetti custom (es. basati su archivi di altre applicazioni). Questi oggetti possono essere implementati attraverso la classe "*D", di cui si riporta a seguire la relativa documentazione.

Generalità

Tramite la classe *D è possibile definire dei propri oggetti custom, non previsti dallo standard. Questi oggetti sono comunemente chiamati UFO.

Struttura

La definizione di un oggetto si completa attraverso il parametro della classe. Per questi oggetti nel parametro va indicato il nome del programma che si occupa di risolvere le istanze della classe. Opzionalmente separato da un "." è inoltre previsto di poter passare un parametro che arriverà nel campo "metodo" al pgm di ufo.

Di seguito viene riportato un pgm di esempio. Vedi OGAT Prototipo pgm oggetto UFO senza B£O** (MBSMESRC-B£DEC_XX1)

Estensione degli Oggetti Ufo attraverso gli elementi della B£O** (PROCEDURA CONSIGLIATA)

Di particolare interessi è poi l'utilizzo degli oggetti ufo in combinazione ad un elemento della tabella B£O**. Tramite gli elementi di questa tabella è infatti possibile "mappare" oggetti X su oggetti ufo. Questo, rispetto all'utilizzo diretto degli oggetti ufo comporta alcuni vantaggi:

  • permette di catalogare più tipologie di oggetto separate (es. posso poi applicare la stessa metodologia a diversi tipi oggetto, es. X1, X2 ecc. che non si incrociamo fra loro, invece di avere a disposizione la sola classe *D)
  • permette di indirizzare in modo più mirato la parametrizzazione del tipo oggetto specifico. Mentre la classe *D punta direttamente alla ricerca di un pgm, tramite la configurazione della B£O** è possibile indicare parametrizzazioni apposite.
  • non ci si scontra con i potenziali problemi che può comportare un codice che contiene/inizia per "*".

Per implementare questa struttura i passi sono i seguenti:

  • Predisporre il pgm di elaborazione dell'ufo (non secondo l'esempio riportato in precedenza, ma secondo quello che è riportato a seguire)
  • Inserire nelle istanze della tabella *CNTT, il codice, con carattere iniziale "X" (carattere riservato alle classi custom), con la relativa descrizione, tramite il quale si vorrà identificare il nuovo oggetto (es. codice XA, descrizione oggetto classe XA).
  • Inserire nelle istanze della tabella B£O** un elemento con lo stesso codice precedentemente inserito. In questo elemento dovranno essere indicati:
    • come Deviazione Tipo Oggetto: *D
    • come Deviazione Parametro: il nome del pgm di risoluzione dell'ufo
    • come Gest. parametro UFO: 1
    • come Tipo Parametro: l'eventuale tipo oggetto che si vuole utilizzare come parametro (es. TAxxx)
    • come Obbligatorietà Parametro: se il parametro per l'oggetto previsto è obbligatorio "1"

Quando viene implementata questa struttura, l'entry ed i metodi di chiamata per il pgm di ufo sono differenti rispetto a quelle previste quando la struttura della B£O** è assente. Per questa casistica è previsto un ulteriore sorgente di esempio. Vedi OGAT Prototipo pgm oggetto UFO con B£O** (MBSMESRC-B£DEC_XX2)

Vedi Oggetti Applicativi (ST-*CNTT)
Vedi DEVIAZIONI E UFO (ST-B£O**)

Estensione degli Oggetti Ufo attraverso gli elementi della B§O

Se l'oggetto Ufo appartiene ad un archivio è inoltre possibile esternare tale relazione tramite un elemento della tabella B§O. Questa tabella permette di indicare come l'oggetto può essere identificato sul database. Questa ulteriore parametrizzazione presenta alcuni vantaggi:

  • Possibilità di sfruttare le potenzialità dell'SQL
  • Possibilità di avere a disposizione la funzione standard di filtro (si veda documentazione classe Q3, e /COPY £IQ3)

Varie caratteristiche della classe possono poi essere indicate attraverso l'exit della £K04.

Se l'archivio a cui punta l'oggetto è un archivio che non è un archivio standard smeup, può risultare inoltre interessante poter indicare l'oggettizzazione di ogni campo di tale file. Questo può avvenire attraverso il pgm di exit B£EQRY_AOX.

Vedi Relazione oggetto-database (ST-B§O)
Filtro
Vedi Interfaccia Filtro (MBQILEGEN-£IQ3)
Vedi Funzioni su Classi Oggetto (OG) (MBQILEGEN-£K04)
Vedi EQRY Assegnazione oggetto di un campo - prototipo (MBSMESRC-B£EQRY_AOX)

Altre estensioni dell'oggetto Ufo

Un oggetto ufo può inoltre essere esteso, con tutte le caratteristiche degli altri oggetti smeup (es. attributi, utilizzo nello combo, ricerca per descrizione ecc.), ma per questo si rimanda alla documentazione delle classi standard, qui riportata a seguire.

Creare un nuovo Oggetto

  1. Inserire l'oggetto come elemento nella tabella *CNTT : dato che la *CNTT è una tabella cablata, se il nuovo oggetto è standard va aggiunto nel pgm B£AR14, se invece è un oggetto personale forzare l'inserimento in tabella con codice Xn (a questo punto verrà scritto nel TABEL relativo)
  2. Se l'oggetto è standard definire il modulo proprietario dell'oggetto inserendolo nel programma B£K01G.
  3. creare il programma B£FUN0_XX, dove XX è il tipo oggetto per attaccare le funzioni specifiche dell'oggetto presentate nel popup
  4. modificare il programma B£G60T, implementando come per gli altri oggetti il reperimento delle informazioni di accesso al database (se l'oggetto appartiene ad un archivio). Casomai sorgesse la necessità di implementare logiche che esulano le possibilità previste dalla struttura del B£G60T, possono essere inserite particolare logiche nella £IVD (cioè il pgm B£IVD0, per il quale si veda ad esempio nel B£IVD0 le considerazioni sull'oggetto CN)
  5. creare il programma B£OA_XX, dove XX è il tipo oggetto, per gestire gli attributi dell'oggetto
  6. creare l'interfaccia dell'oggetto, tendenzialmente £IXX, dove XX è il tipo oggetto, sempre che il nome non sia già usato. creare anche il relativo TST.
  7. inserire l'oggetto nella £DEC andando a modificare il B£DEC0 (è da notare che è attraverso tale implementazione che viene anche ricosciuta l'API che gestisce l'interfaccia dell'oggetto).
  8. inserire l'oggetto nel B£DEC3 per definirne il parametro
  9. inserire l'oggetto nel B£DEC4 (se l'oggetto non è un campo di file) o (se l'oggetto è un campo di file) nel B£G60T (se standard) o nella tabella B§O (se personale) per la £G60 e le ricerche in Loocup
  10. inserire ulteriori caratterizzazioni dell'oggetto nella /COPY £K04 (es. presenza della descrizione, utilizzo del campo negli input panel ecc.)
  11. implementare nelle schiere in fondo al pgm B£GES0 l'eventuale modalità di risoluzione delle azioni di gestione (immissione/modifica/copia/cancellazione)
  12. implementare il programma di controllo B£K89_XX
  13. se opportuno implementare:
  14. lo schema di default da applicare nelle matrici dove sono elencate le istanze dell'oggetto (es. nelle ricerche) attraverso l'oggetto Q2. Si veda la documentazione della relativa classe.
  15. lo schema T/Q3 da applicare nella funzione di filtro generale in modo nell'F13 vengano presentati nell'ordine ed eventualmente solo i campi ritenuti opportuni.
  16. documentare l'oggetto in DOC_OGG

Add new attachment

Only authorized users are allowed to upload new attachments.
«