Oracle Communications Billing and Revenue Management (Oracle BRM \ conocido anteriormente como Portal Infranet) ofrece dos métodos para crear, editar y eliminar campos personalizados y clases almacenables. Un método consiste en utilizar el Editor de clases almacenables, que forma parte de la aplicación del Centro de desarrollo, y el otro en utilizar los opcodes del SDK. Por una serie de razones, prefiero esta última opción, y en este post abordaré la manipulación de campos personalizados con opcodes del SDK.
Antes de empezar, hay que hacer primero un cambio: hacer que el diccionario de datos sea escribible. He aquí cómo hacerlo:
1. Abra el archivo de configuración de Oracle DM o Microsoft SQL Server DM (BRM_HOME/sys/dm_oracle/pin.conf o BRM_HOME/sys/dm_odbc/pin.conf) en un editor de texto.
2. Habilite la manipulación de campos en el diccionario de datos, estableciendo la siguiente entrada en 1:- dm dd_write_enable_fields 1
Nuestros objetivos son los siguientes:
1. Para crear un campo personalizado
2. Para editar la descripción del campo personalizado
3. Para eliminar el campo personalizado de la base de datos
4. Para que el campo personalizado esté disponible para BRM
Creación de un nuevo campo personalizado
La creación de un nuevo campo personalizado y su consignación en la base de datos puede realizarse con los opcodes del SDK o con una utilidad de despliegue de pines. Como saben los desarrolladores, los opcodes del SDK proporcionan una forma más flexible de crear, editar y eliminar campos personalizados en la fase de desarrollo. La utilidad pin deploy, por su parte, utiliza PODL (Portal Object Definition Language) para exportar e importar definiciones de campos y clases almacenables. Esto es más útil, sobre todo a nivel administrativo, porque se puede agilizar el proceso colocando las definiciones de campo en la gestión del código fuente y reducir así cualquier posibilidad de dañar el diccionario de datos de la base de datos de producción Oracle BRM.
Los siguientes opcodes del SDK pueden utilizarse para gestionar las especificaciones de campo:
1. PCM_OP_SDK_SET_FLD_SPECS - crear o modificar un campo,
2. PCM_OP_SDK_GET_FLD_SPECS - recuperar las especificaciones de un campo,
3. PCM_OP_SDK_DEL_FLD_SPECS - eliminar un campo.
Para crear un campo, es necesario escribir una lista de entrada para el opcode PCM_OP_SDK_SET_FLD_SPECS:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/campos 0 0
0 PIN_FLD_FIELD MATRIZ [0]
1 PIN_FLD_DESCR STR [0] "campo personalizado para contener un número de 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
Ahora, verifique que el campo creado existe en el diccionario de datos de la base de datos introduciendo la siguiente lista de entrada en el opcode PCM_OP_SDK_GET_FLD_SPECS:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/objects 0 0
0 PIN_FLD_FIELD MATRIZ [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Edición de la descripción del campo personalizado
Ahora, una vez confirmado que el nuevo campo personalizado existe, se puede modificar la descripción llamando al opcode PCM_OP_SDK_SET_FLD_SPECS con la siguiente lista de entrada:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/campos 0 0
0 PIN_FLD_FIELD MATRIZ [0]
1 PIN_FLD_DESCR STR [0] "campo personalizado - número de 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
De nuevo, se pueden recuperar las especificaciones del campo para verificar que se ha realizado el cambio.
Después, elimine el campo personalizado de la base de datos.
Por último, supongamos que se ha cometido un error y es necesario borrar un campo. Proporcione la siguiente lista de entrada al opcode PCM_OP_SDK_DEL_FLD_SPECS, borrará el campo:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/campos 0 0
0 PIN_FLD_FIELD MATRIZ [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Si el opcode para recuperar las especificaciones del campo devuelve una lista vacía (sólo POID obj), significa que el campo no se ha encontrado en el diccionario de datos de la base de datos.
Poner los campos personalizados a disposición de BRM
La práctica estándar dicta que todo lo que se desarrolle a medida vaya al directorio BRM_HOME/custom, y puesto que, en este caso, BRM_HOME/include/pin_flds.h, se está ampliando, es necesario crear un nuevo archivo de cabecera a medida BRM_HOME/custom/include/custom_flds.h.
Ahora, el nuevo campo personalizado puede introducirse añadiendo la siguiente línea a custom_flds.h:
#define C_FLD_VAT_NUMBER PIN_MAKE_FLD(PIN_FLDT_STR, 10000)
La línea anterior define un campo personalizado denominado "C_FLD_VAT_NUMBER" (tenga en cuenta la práctica de nomenclatura,
PIN_* para los campos BRM y C_* para los campos personalizados) con el tipo de datos "PIN_FLDT_STR" (STR significa cadena)
e identificador único "10000" (con respecto a BRM_HOME/include/pin_flds.h). Los tipos de datos son estáticos,
y definido por la versión de BRM que esté ejecutando; consulte BRM_HOME/include/pcm.h para ver las definiciones.
A continuación, ejecute el script perl parse_custom_ops_fields.pl en el custom_flds.h utilizando este comando:
$BRM_HOME/bin/parse_custom_ops_fields.pl -L pcmc -I custom_flds.h -O $BRM_HOME/custom/include/custom_mapping.m
Y por último, incluya la siguiente línea en cada pin.conf donde desee que se vean estos campos: - - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m
NOTA: Al introducir nuevas funcionalidades que utilicen campos personalizados, es necesario incluir el archivo de cabecera custom_flds.h en los MF que utilicen estos campos