O Oracle Communications Billing and Revenue Management (Oracle BRM \ formalmente conhecido como Portal Infranet) oferece dois métodos para criar, editar e excluir campos personalizados e classes armazenáveis. Uma abordagem é usar o Storable Class Editor, parte do aplicativo Developer Center, e a outra é usar os opcodes do SDK. Por vários motivos, prefiro a última opção e, nesta publicação, abordarei a manipulação de campos personalizados com códigos de operação do SDK.
Antes de começar, é necessário efetuar uma alteração: tornar o dicionário de dados gravável. Veja como fazer isso:
1. Abra o arquivo de configuração do DM Oracle ou do DM Microsoft SQL Server (BRM_HOME/sys/dm_oracle/pin.conf ou BRM_HOME/sys/dm_odbc/pin.conf) em um editor de texto.
2. Active a manipulação de campos no dicionário de dados, definindo a seguinte entrada como 1:- dm dd_write_enable_fields 1
Os nossos objectivos são os seguintes:
1. Para criar um campo personalizado
2. Para editar a descrição do campo personalizado
3. Para eliminar o campo personalizado da base de dados
4. Para tornar o campo personalizado disponível para o BRM
Criar um novo campo personalizado
A criação de um novo campo personalizado e o seu envio para a base de dados podem ser efectuados com os códigos de operação do SDK ou com um utilitário de implantação de pinos. Como os programadores sabem, os códigos de operação do SDK fornecem uma forma mais flexível de criar, editar e eliminar campos personalizados na fase de desenvolvimento. O utilitário de implantação de pinos, por outro lado, usa PODL (Portal Object Definition Language) para exportar e importar definições de campos e classes armazenáveis. Isto é mais útil, especialmente a nível administrativo, porque o processo pode ser simplificado, colocando as definições de campo na gestão do código-fonte e reduzindo assim qualquer possibilidade de danificar o dicionário de dados da base de dados de produção do Oracle BRM.
Os seguintes códigos de operação do SDK podem ser utilizados para gerir especificações de campo:
1. PCM_OP_SDK_SET_FLD_SPECS - criar ou modificar um campo,
2. PCM_OP_SDK_GET_FLD_SPECS - obter especificações de um campo,
3. PCM_OP_SDK_DEL_FLD_SPECS - eliminar um campo.
Para criar um campo, é necessário escrever uma lista de entrada para o código de operação PCM_OP_SDK_SET_FLD_SPECS:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 MATRIZ PIN_FLD_FIELD [0]
1 PIN_FLD_DESCR STR [0] "campo personalizado para guardar um 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
Agora, verifique se o campo criado existe no dicionário de dados da base de dados, alimentando o código de operação PCM_OP_SDK_GET_FLD_SPECS com a seguinte lista de entradas:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/objectos 0 0
0 MATRIZ PIN_FLD_FIELD [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Editar a descrição do campo personalizado
Agora, depois de confirmar que o novo campo personalizado existe, pode alterar a descrição chamando o opcode PCM_OP_SDK_SET_FLD_SPECS com a seguinte lista de entrada:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 MATRIZ PIN_FLD_FIELD [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
Mais uma vez, as especificações do campo podem ser recuperadas de modo a verificar se a alteração foi efectuada.
Depois disso, elimine o campo personalizado da base de dados.
Finalmente, suponha que foi cometido um erro e que é necessário eliminar um campo. Forneça a seguinte lista de entrada ao código de operação PCM_OP_SDK_DEL_FLD_SPECS, que elimina o campo:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 MATRIZ PIN_FLD_FIELD [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Se o código de operação para recuperar as especificações do campo devolver uma lista vazia (apenas POID obj), isso significa que o campo não foi encontrado no dicionário de dados da base de dados.
Tornando os campos personalizados disponíveis para BRM
A prática padrão dita que tudo o que é desenvolvido de forma personalizada vai para o diretório BRM_HOME/custom, e como, neste caso, BRM_HOME/include/pin_flds.h, está sendo estendido, um novo arquivo de cabeçalho personalizado BRM_HOME/custom/include/custom_flds.h. precisa ser criado
Agora, o novo campo personalizado pode ser introduzido anexando a seguinte linha ao ficheiro custom_flds.h:
#define C_FLD_VAT_NUMBER PIN_MAKE_FLD(PIN_FLDT_STR, 10000)
A linha acima define um campo personalizado com o nome "C_FLD_VAT_NUMBER" (tenha em atenção a prática de nomeação,
PIN_* para campos BRM e C_* para campos personalizados) com o tipo de dados "PIN_FLDT_STR" (STR significa string)
e o identificador único "10000" (em relação a BRM_HOME/include/pin_flds.h). Os tipos de dados são estáticos,
e definido pela versão do BRM que está a executar; consulte BRM_HOME/include/pcm.h para obter as definições.
Em seguida, execute o script perl parse_custom_ops_fields.pl no arquivo custom_flds.h usando este comando:
$BRM_HOME/bin/parse_custom_ops_fields.pl -L pcmc -I custom_flds.h -O $BRM_HOME/custom/include/custom_mapping.m
E finalmente, inclua a seguinte linha em cada pin.conf onde se deseja que estes campos sejam vistos: - - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m
NOTA: Ao introduzir novas funcionalidades utilizando campos personalizados, é necessário incluir o ficheiro de cabeçalho custom_flds.h nos IMS que utilizam estes campos