Champs personnalisés dans Oracle BRM
Oracle Communications Billing and Revenue Management (Oracle BRM \ anciennement connu sous le nom de Portal Infranet) propose deux méthodes pour créer, modifier et supprimer des champs personnalisés et des classes mémorisables. La première consiste à utiliser l'éditeur de classes mémorisables, qui fait partie de l'application Developer Center, et la seconde à utiliser les opcodes SDK. Pour un certain nombre de raisons, je préfère ce dernier choix et, dans ce billet, j'aborderai la manipulation des champs personnalisés à l'aide des opcodes du SDK.
Avant de commencer, il faut d'abord effectuer un changement : rendre le dictionnaire de données accessible en écriture. Voici comment procéder :
1. Ouvrez le fichier de configuration du DM Oracle ou du DM Microsoft SQL Server (BRM_HOME/sys/dm_oracle/pin.conf ou BRM_HOME/sys/dm_odbc/pin.conf) dans un éditeur de texte.
2. Activez la manipulation des champs dans le dictionnaire de données en attribuant la valeur 1 à l'entrée suivante:- dm dd_write_enable_fields 1
Nos objectifs sont les suivants :
1. Pour créer un champ personnalisé
2. Pour modifier la description du champ personnalisé
3. Pour supprimer le champ personnalisé de la base de données
4. Pour mettre le champ personnalisé à la disposition du BRM
Création d'un nouveau champ personnalisé
La création d'un nouveau champ personnalisé et son enregistrement dans la base de données peuvent être réalisés à l'aide des opcodes du SDK ou d'un utilitaire de déploiement d'épingles. Comme les développeurs le savent, les opcodes du SDK offrent un moyen plus souple de créer, de modifier et de supprimer des champs personnalisés au stade du développement. L'utilitaire de déploiement d'épingles, quant à lui, utilise le langage PODL (Portal Object Definition Language) pour exporter et importer des définitions de champs et de classes stockables. Cette méthode est plus utile, en particulier au niveau administratif, car elle permet de rationaliser le processus en intégrant les définitions de champs dans la gestion du code source, ce qui réduit le risque d'endommager le dictionnaire de données de la base de données de production de Oracle BRM.
Les opcodes SDK suivants peuvent être utilisés pour gérer les spécifications des champs :
1. PCM_OP_SDK_SET_FLD_SPECS - créer ou modifier un champ,
2. PCM_OP_SDK_GET_FLD_SPECS - récupérer les spécifications d'un champ,
3. PCM_OP_SDK_DEL_FLD_SPECS - supprimer un champ.
Pour créer un champ, il est nécessaire d'écrire une liste d'entrée pour l'opcode PCM_OP_SDK_SET_FLD_SPECS :
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 TABLEAU PIN_FLD_FIELD [0]
1 PIN_FLD_DESCR STR [0] "champ personnalisé pour contenir un numéro de TVA"
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
Vérifiez maintenant que le champ créé existe dans le dictionnaire de données de la base de données en envoyant la liste d'entrée suivante à l'opcode PCM_OP_SDK_GET_FLD_SPECS :
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/objects 0 0
0 TABLEAU PIN_FLD_FIELD [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Modification de la description du champ personnalisé
Maintenant, après avoir confirmé que le nouveau champ personnalisé existe, la description peut être modifiée en appelant l'opcode PCM_OP_SDK_SET_FLD_SPECS avec la liste d'entrée suivante :
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 TABLEAU PIN_FLD_FIELD [0]
1 PIN_FLD_DESCR STR [0] "champ personnalisé - numéro de TVA"
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
Là encore, les spécifications du champ peuvent être récupérées afin de vérifier que la modification a bien été effectuée.
Ensuite, supprimez le champ personnalisé de la base de données.
Enfin, supposons qu'une erreur ait été commise et qu'il soit nécessaire de supprimer un champ. Fournissez la liste d'entrée suivante à l'opcode PCM_OP_SDK_DEL_FLD_SPECS, pour supprimer le champ :
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 TABLEAU PIN_FLD_FIELD [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Si l'opcode permettant de récupérer les spécifications du champ renvoie une liste vide (uniquement POID obj), cela signifie que le champ n'a pas été trouvé dans le dictionnaire de données de la base.
Mettre les champs personnalisés à la disposition du BRM
La pratique standard veut que tout ce qui est développé sur mesure soit placé dans le répertoire BRM_HOME/custom, et puisque, dans ce cas, BRM_HOME/include/pin_flds.h est étendu, un nouveau fichier d'en-tête personnalisé BRM_HOME/custom/include/custom_flds.h. doit être créé.
Maintenant, le nouveau champ personnalisé peut être introduit en ajoutant la ligne suivante au fichier custom_flds.h :
#define C_FLD_VAT_NUMBER PIN_MAKE_FLD(PIN_FLDT_STR, 10000)
La ligne ci-dessus définit un champ personnalisé nommé "C_FLD_VAT_NUMBER" (attention à la pratique de dénomination),
PIN_* pour les champs GRP et C_* pour les champs personnalisés) avec le type de données "PIN_FLDT_STR" (STR signifie chaîne de caractères).
et l'identifiant unique "10000" (par rapport à BRM_HOME/include/pin_flds.h). Les types de données sont statiques,
et définies par la version de BRM que vous utilisez ; veuillez consulter BRM_HOME/include/pcm.h pour les définitions.
Ensuite, exécutez le script perl parse_custom_ops_fields.pl sur le fichier custom_flds.h à l'aide de cette commande :
$BRM_HOME/bin/parse_custom_ops_fields.pl -L pcmc -I custom_flds.h -O $BRM_HOME/custom/include/custom_mapping.m
Enfin, ajoutez la ligne suivante à tous les pin.conf où vous souhaitez que ces champs soient visibles : - - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m
NOTE : Lors de l'introduction de nouvelles fonctionnalités utilisant des champs personnalisés, il est nécessaire d'inclure le fichier d'en-tête custom_flds.h dans les manuels de gestion qui utilisent ces champs.