Benutzerdefinierte Felder in Oracle BRM
Oracle Communications Billing and Revenue Management (Oracle BRM \ früher bekannt als Portal Infranet) bietet zwei Methoden zum Erstellen, Bearbeiten und Löschen von benutzerdefinierten Feldern und speicherbaren Klassen. Die eine Methode ist die Verwendung des Storable Class Editor, der Teil der Anwendung Developer Center ist, und die andere die Verwendung von SDK-Opcodes. Aus einer Reihe von Gründen bevorzuge ich die letztere Methode. In diesem Beitrag werde ich mich mit der Bearbeitung von benutzerdefinierten Feldern mit SDK-Opcodes befassen.
Bevor Sie beginnen, müssen Sie zunächst eine Änderung vornehmen: das Datenwörterbuch beschreibbar machen. So geht's:
1. Öffnen Sie die Oracle DM- oder Microsoft SQL Server DM-Konfigurationsdatei (BRM_HOME/sys/dm_oracle/pin.conf oder BRM_HOME/sys/dm_odbc/pin.conf) in einem Texteditor.
2. Aktivieren Sie die Feldmanipulation im Datenwörterbuch, indem Sie den folgenden Eintrag auf 1 setzen:- dm dd_write_enable_fields 1
Unsere Ziele sind wie folgt:
1. So erstellen Sie ein benutzerdefiniertes Feld
2. So bearbeiten Sie die Beschreibung des benutzerdefinierten Feldes
3. So löschen Sie das benutzerdefinierte Feld aus der Datenbank
4. Um das benutzerdefinierte Feld für den BRM verfügbar zu machen
Ein neues benutzerdefiniertes Feld erstellen
Die Erstellung eines neuen benutzerdefinierten Feldes und dessen Übertragung in die Datenbank kann mit SDK-Opcodes oder mit einem Pin-Deploy-Dienstprogramm erfolgen. Wie Entwickler wissen, bieten SDK-Opcodes eine flexiblere Möglichkeit, benutzerdefinierte Felder im Entwicklungsstadium zu erstellen, zu bearbeiten und zu löschen. Das Pin Deploy Utility hingegen verwendet PODL (Portal Object Definition Language), um Feld- und speicherbare Klassendefinitionen zu exportieren und zu importieren. Dies ist vor allem auf administrativer Ebene sinnvoller, da der Prozess durch die Aufnahme von Felddefinitionen in die Quellcodeverwaltung gestrafft werden kann und so die Möglichkeit einer Beschädigung des Datenwörterbuchs der Oracle BRM-Produktionsdatenbank verringert wird.
Die folgenden SDK-Opcodes können verwendet werden, um Feldspezifikationen zu verwalten:
1. PCM_OP_SDK_SET_FLD_SPECS - erstellt oder ändert ein Feld,
2. PCM_OP_SDK_GET_FLD_SPECS - Abrufen einer Feldspezifikation,
3. PCM_OP_SDK_DEL_FLD_SPECS - ein Feld löschen.
Um ein Feld zu erstellen, müssen Sie eine Eingabedatei für den Opcode PCM_OP_SDK_SET_FLD_SPECS schreiben:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 PIN_FLD_FIELD ARRAY [0]
1 PIN_FLD_DESCR STR [0] "benutzerdefiniertes Feld für eine Umsatzsteuer-Identifikationsnummer".
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
Überprüfen Sie nun, ob das erstellte Feld im Datenwörterbuch der Datenbank vorhanden ist, indem Sie den Opcode PCM_OP_SDK_GET_FLD_SPECS mit der folgenden Eingabeliste füttern:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/objects 0 0
0 PIN_FLD_FIELD ARRAY [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Bearbeiten der Beschreibung des benutzerdefinierten Feldes
Nachdem Sie nun bestätigt haben, dass das neue benutzerdefinierte Feld existiert, können Sie die Beschreibung ändern, indem Sie den Opcode PCM_OP_SDK_SET_FLD_SPECS mit der folgenden Eingabeliste aufrufen:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 PIN_FLD_FIELD ARRAY [0]
1 PIN_FLD_DESCR STR [0] "benutzerdefiniertes Feld - Umsatzsteuernummer"
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
Auch hier können die Spezifikationen des Feldes abgerufen werden, um zu überprüfen, ob die Änderung durchgeführt wurde.
Danach löschen Sie das benutzerdefinierte Feld aus der Datenbank.
Nehmen Sie schließlich an, dass ein Fehler gemacht wurde und Sie ein Feld löschen müssen. Geben Sie die folgende Eingabedatei für den Opcode PCM_OP_SDK_DEL_FLD_SPECS ein, um das Feld zu löschen:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 PIN_FLD_FIELD ARRAY [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Wenn der Opcode zum Abrufen der Feldspezifikationen eine leere Liste zurückgibt (nur POID obj), bedeutet dies, dass das Feld nicht im Datenwörterbuch der Datenbank gefunden wurde.
Benutzerdefinierte Felder für den BRM verfügbar machen
Die Standardpraxis schreibt vor, dass alles, was benutzerdefiniert entwickelt wird, in das Verzeichnis BRM_HOME/custom kommt. Da in diesem Fall BRM_HOME/include/pin_flds.h erweitert wird, muss eine neue benutzerdefinierte Header-Datei BRM_HOME/custom/include/custom_flds.h erstellt werden.
Jetzt können Sie das neue benutzerdefinierte Feld einführen, indem Sie die folgende Zeile an custom_flds.h anhängen:
#define C_FLD_VAT_NUMBER PIN_MAKE_FLD(PIN_FLDT_STR, 10000)
Die obige Zeile definiert ein benutzerdefiniertes Feld mit dem Namen "C_FLD_VAT_NUMBER" (beachten Sie die Benennungspraxis,
PIN_* für BRM-Felder und C_* für benutzerdefinierte Felder) mit dem Datentyp "PIN_FLDT_STR" (STR steht für String)
und der eindeutigen Kennung "10000" (in Bezug auf BRM_HOME/include/pin_flds.h). Die Datentypen sind statisch,
und von der BRM-Version, die Sie verwenden, definiert. Definitionen finden Sie in BRM_HOME/include/pcm.h.
Als nächstes führen Sie das Perl-Skript parse_custom_ops_fields.pl mit diesem Befehl auf der custom_flds.h aus:
$BRM_HOME/bin/parse_custom_ops_fields.pl -L pcmc -I custom_flds.h -O $BRM_HOME/custom/include/custom_mapping.m
Und schließlich fügen Sie die folgende Zeile in jede pin.conf ein, in der diese Felder zu sehen sein sollen: - - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m
HINWEIS: Wenn Sie neue Funktionen mit benutzerdefinierten Feldern einführen, müssen Sie die Header-Datei custom_flds.h in die FMs aufnehmen, die diese Felder verwenden
Vielen Dank für die guten Informationen, die es zu lesen gibt.
Vielen Dank für den tollen Einblick. Ich war neugierig auf diese spezielle Nische. Toller Artikel.
ausgezeichneter Beitrag.
Tolle Seite. Eine Menge nützlicher Informationen hier. Ich schicke sie an einige Freunde weiter!
Ich lese Ihren Blog regelmäßig und wollte Ihnen nur sagen: Machen Sie weiter so!
das ist es, worum es im Internet geht. Fantastischer Beitrag.
Toller Beitrag wie immer!
Wirklich schöner und beeindruckender Blog, den ich heute gefunden habe.
Vielen Dank dafür. Können Sie einen weiteren Artikel über die Anpassung von Opcodes veröffentlichen? Bitte kontaktieren Sie mich diesbezüglich.
Brillant Dies ist wirklich eine der besten Websites, die ich je zu diesem Thema durchstöbert habe.
Sehr nützliche Informationen ... können Sie bitte auch Beispiele für die folgenden geben:
1. ein neues Produkt mit allen Zeitzonen- und Tarifkonfigurationen erstellen und es mit einem Service verknüpfen
2. ein Rabattprodukt zu erstellen und es mit einer bestimmten Dienstleistung(en) zu verknüpfen und es dann in iScripts zu verwenden, um sie abzulehnen oder zu rabattieren.
3. Kleines Beispiel für das Schreiben eines neuen MTA-Codes
Dies ist ein wirklich guter Blog. Gute Arbeit!...
Ich habe Ihren Blog gelesen, \'Benutzerdefinierte Felder in Oracle BRM\', geschrieben am 18/03/2010.
Es ist in der Tat sehr nützlich, aber ich habe ein paar Fragen dazu und ich wünschte, Sie könnten mir helfen.
Im Moment besteht meine Arbeit darin, ein neues Feld in Oracle BRM zu erstellen. So weit, so gut, denn ich habe mich an die Anweisungen gehalten, die ich in Ihrem Blog gelesen habe.
Aber wenn ich versuche, eine XML-Rechnung zu exportieren, fehlt der Tag für meine benutzerdefinierten Felder in der XML-Datei.
Es wird als 12345 angezeigt. Ich versuche also, die Rechnung stattdessen in pin_flist zu exportieren, und stelle fest, dass BRM mein benutzerdefiniertes Feld bereits kennt.
Deshalb dachte ich, ich hätte die Zeile \"- - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m\" in der falschen pin.conf hinzugefügt.
Bisher habe ich die Zeile in 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 hinzugefügt
Ich habe auch versucht, die Datei Infranet.Property in ${BRM_HOME}/bin und ${BRM_HOME}/apps/storable_class_to_xml hinzuzufügen.
Aber nichts davon hilft, also habe ich beschlossen, diese Nachricht an Sie zu schreiben, in der Hoffnung, dass Sie mir helfen können.
Habe ich wirklich die 'ops_fields_extension_file' in der falschen pin.conf hinzugefügt oder habe ich etwas anderes vermasselt.
Dankeschön
Satya,
Womit genau sollten wir uns im nächsten Oracle BRM-Artikel beschäftigen?
Mit freundlichen Grüßen,
Mitja