Oracle Communications Billing and Revenue Management (Oracle BRM \ formalmente conosciuto come Portal Infranet) offre due metodi per creare, modificare ed eliminare campi personalizzati e classi memorizzabili. Un approccio è l'utilizzo di Storable Class Editor, parte dell'applicazione Developer Center, e l'altro è l'utilizzo degli opcode SDK. Per una serie di ragioni, preferisco la seconda scelta e in questo post affronterò la manipolazione dei campi personalizzati con gli opcode dell'SDK.
Prima di iniziare, è necessario apportare una modifica: rendere il dizionario dati scrivibile. Ecco come fare:
Apra il file di configurazione del DM Oracle o del DM Microsoft SQL Server (BRM_HOME/sys/dm_oracle/pin.conf o BRM_HOME/sys/dm_odbc/pin.conf) in un editor di testo.
2. Abiliti la manipolazione dei campi nel dizionario dati, impostando la seguente voce su 1:- dm dd_write_enable_fields 1
I nostri obiettivi sono i seguenti:
1. Per creare un campo personalizzato
2. Per modificare la descrizione del campo personalizzato
3. Per eliminare il campo personalizzato dal database
4. Per rendere il campo personalizzato disponibile a BRM
Creare un nuovo campo personalizzato
La creazione di un nuovo campo personalizzato e il suo inserimento nel database possono essere realizzati con gli opcode dell'SDK o con l'utilità di distribuzione del pin. Come gli sviluppatori sanno, gli opcode dell'SDK offrono un modo più flessibile per creare, modificare ed eliminare i campi personalizzati in fase di sviluppo. L'utilità Pin Deploy, invece, utilizza il PODL (Portal Object Definition Language) per esportare e importare le definizioni dei campi e delle classi memorizzabili. Questo è più utile, soprattutto a livello amministrativo, perché il processo può essere semplificato inserendo le definizioni dei campi nella gestione del codice sorgente e riducendo così la possibilità di danneggiare il dizionario dei dati del database di produzione Oracle BRM.
I seguenti codici opzionali dell'SDK possono essere utilizzati per gestire le specifiche dei campi:
1. PCM_OP_SDK_SET_FLD_SPECS - crea o modifica un campo,
2. PCM_OP_SDK_GET_FLD_SPECS - recupera le specifiche di un campo,
3. PCM_OP_SDK_DEL_FLD_SPECS - elimina un campo.
Per creare un campo, è necessario scrivere una lista di input per l'opcode PCM_OP_SDK_SET_FLD_SPECS:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/campi 0 0
0 ARRAY PIN_FLD_FIELD [0]
1 PIN_FLD_DESCR STR [0] "campo personalizzato per contenere un numero IVA".
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
1 PIN_FLD_FIELD_NUM ENUM [0] 10000
1 PIN_FLD_FIELD_TYPE INT [0] 5
Ora, verifichi che il campo creato esista nel dizionario dati del database, inviando la seguente lista di input all'opcode PCM_OP_SDK_GET_FLD_SPECS:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/objects 0 0
0 ARRAY PIN_FLD_FIELD [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Modifica della descrizione del campo personalizzato
Ora, dopo aver confermato l'esistenza del nuovo campo personalizzato, la descrizione può essere modificata richiamando l'opcode PCM_OP_SDK_SET_FLD_SPECS con la seguente lista di input:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/campi 0 0
0 ARRAY PIN_FLD_FIELD [0]
1 PIN_FLD_DESCR STR [0] "campo personalizzato - Partita IVA".
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
1 PIN_FLD_FIELD_NUM ENUM [0] 10000
1 PIN_FLD_FIELD_TYPE INT [0] 5
Anche in questo caso, si possono recuperare le specifiche del campo per verificare che la modifica sia stata effettuata.
Dopodiché, cancella il campo personalizzato dal database.
Infine, supponiamo che sia stato commesso un errore e che sia necessario eliminare un campo. Fornendo la seguente lista di input all'opcode PCM_OP_SDK_DEL_FLD_SPECS, si elimina il campo:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/campi 0 0
0 ARRAY PIN_FLD_FIELD [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Se l'opcode per il recupero delle specifiche del campo restituisce un elenco vuoto (solo POID obj), significa che il campo non è stato trovato nel dizionario dati del database.
Rendere disponibili i campi personalizzati a BRM
La prassi standard prevede che tutto ciò che viene sviluppato in modo personalizzato vada nella cartella BRM_HOME/custom e, poiché in questo caso viene esteso BRM_HOME/include/pin_flds.h, è necessario creare un nuovo file di intestazione personalizzato BRM_HOME/custom/include/custom_flds.h.
Ora, il nuovo campo personalizzato può essere introdotto aggiungendo la seguente riga a custom_flds.h:
#define C_FLD_VAT_NUMBER PIN_MAKE_FLD(PIN_FLDT_STR, 10000)
La riga precedente definisce un campo personalizzato denominato "C_FLD_VAT_NUMBER" (attenzione alla pratica di denominazione),
PIN_* per i campi BRM e C_* per i campi personalizzati) con il tipo di dati "PIN_FLDT_STR" (STR sta per stringa).
e l'identificatore unico "10000" (per quanto riguarda BRM_HOME/include/pin_flds.h). I tipi di dati sono statici,
e definiti dalla versione di BRM che sta eseguendo; consulti BRM_HOME/include/pcm.h per le definizioni.
Successivamente, esegua lo script perl parse_custom_ops_fields.pl sul file custom_flds.h utilizzando questo comando:
$BRM_HOME/bin/parse_custom_ops_fields.pl -L pcmc -I custom_flds.h -O $BRM_HOME/custom/include/custom_mapping.m
Infine, includa la seguente riga in ogni pin.conf in cui desidera che questi campi siano visibili: - - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m
NOTA: quando si introducono nuove funzionalità che utilizzano campi personalizzati, è necessario includere il file di intestazione custom_flds.h negli FM che utilizzano questi campi.