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.
Merci pour les bonnes informations que vous nous donnez à lire.
Merci pour cet excellent aperçu. J'étais curieux de connaître ce créneau particulier. Excellent article.
excellent article.
Excellent site. Il contient de nombreuses informations utiles. Je l'envoie à quelques amis !
Je lis souvent votre blog et je voulais juste vous dire de continuer à faire du bon travail !
c'est ça l'internet. Excellent article.
excellent article, comme d'habitude !
J'ai trouvé aujourd'hui un blog très intéressant et impressionnant.
Merci pour votre aide. Pouvez-vous publier un autre article sur la personnalisation des opcodes ? N'hésitez pas à me contacter à ce sujet.
Brillant C'est vraiment l'un des meilleurs sites Web que j'aie jamais consultés sur ce sujet.
Vous pouvez également donner des exemples pour la suite, s'il vous plaît :
1. créer un nouveau produit avec toutes les configurations de fuseau horaire et de plan tarifaire et l'associer à un service
2. créer un produit de réduction et l'associer à un service ou à des appels de service particuliers, puis l'utiliser dans des iScripts pour les rejeter ou les réduire.
3. Petit exemple d'écriture d'un nouveau code MTA
C'est un très bon blog. Bon travail !...
J'ai lu votre blog, 'Custom Fields in Oracle BRM' écrit le 18/03/2010.
Il est très utile en effet, mais j'ai quelques questions à ce sujet et j'aimerais que vous puissiez m'aider.
Actuellement, mon travail consiste à créer un nouveau champ dans Oracle BRM, jusqu'à présent tout va bien car j'ai suivi les instructions que j'ai lues sur votre blog.
Mais lorsque j'essaie d'exporter une facture XML, la balise de mon champ personnalisé dans le fichier XML est manquante.
Il s'agit de 12345. J'ai donc essayé d'exporter la facture dans pin_flist à la place, et j'ai constaté que BRM connaissait déjà mon champ personnalisé.
Je pensais donc avoir ajouté la ligne "- - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m\" dans le mauvais pin.conf.
Jusqu'à présent, j'ai ajouté la ligne dans 1.${BRM_HOME}/bin/pin.conf 2.${BRM_HOME}/apps/pin_billd/pin.conf 3.${BRM_HOME}/apps/pin_inv/pin.conf 4.${BRM_HOME}/sys/cm/pin.conf
J'ai également essayé d'ajouter le fichier Infranet.Property dans ${BRM_HOME}/bin et ${BRM_HOME}/apps/storable_class_to_xml.
J'ai donc décidé de vous écrire ce message en espérant que vous puissiez m'aider.
Ai-je vraiment ajouté le fichier 'ops_fields_extension_file' dans le mauvais pin.conf ou ai-je foiré quelque chose d'autre.
Merci de votre attention.
Satya,
Que devrions-nous aborder exactement dans le prochain article de Oracle BRM ?
Je vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées,
Mitja