Oracle Communications Billing and Revenue Management (Oracle BRM \, официально известный как Portal Infranet) предлагает два метода создания, редактирования и удаления настраиваемых полей и запоминаемых классов. Один из подходов заключается в использовании Storable Class Editor, входящего в состав приложения Developer Center, а другой - в использовании опкодов SDK. По ряду причин я предпочитаю последний вариант, и в этой заметке я рассмотрю манипулирование пользовательскими полями с помощью опкодов SDK.
Прежде чем начать, необходимо сделать одно изменение: сделать словарь данных доступным для записи. Вот как это сделать:
1. Откройте файл конфигурации Oracle DM или Microsoft SQL Server DM (BRM_HOME/sys/dm_oracle/pin.conf или BRM_HOME/sys/dm_odbc/pin.conf) в текстовом редакторе.
2. Разрешите манипулирование полями в словаре данных, установив следующую запись в 1:- dm dd_write_enable_fields 1
Наши цели заключаются в следующем:
1. Чтобы создать пользовательское поле
2. Чтобы отредактировать описание пользовательского поля
3. Чтобы удалить пользовательское поле из базы данных
4. Чтобы сделать пользовательское поле доступным для BRM
Создание нового пользовательского поля
Создание нового пользовательского поля и его фиксация в базе данных может быть осуществлена с помощью опкодов SDK или с помощью утилиты развертывания выводов. Как известно разработчикам, опкоды SDK обеспечивают более гибкий способ создания, редактирования и удаления пользовательских полей на этапе разработки. Утилита pin deploy, с другой стороны, использует PODL (Portal Object Definition Language) для экспорта и импорта определений полей и хранимых классов. Это более полезно, особенно на административном уровне, поскольку процесс можно упростить, поместив определения полей в управление исходным кодом, и тем самым снизить вероятность повреждения словаря данных производственной базы данных Oracle BRM.
Следующие опкоды SDK могут быть использованы для управления спецификациями полей:
1. PCM_OP_SDK_SET_FLD_SPECS - создание или изменение поля,
2. PCM_OP_SDK_GET_FLD_SPECS - получение спецификации поля,
3. PCM_OP_SDK_DEL_FLD_SPECS - удалить поле.
Для создания поля необходимо написать входной flist для опкода PCM_OP_SDK_SET_FLD_SPECS:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 МАССИВ PIN_FLD_FIELD [0]
1 PIN_FLD_DESCR STR [0] "пользовательское поле для хранения номера НДС"
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
Теперь проверьте, что созданное поле существует в словаре данных базы данных, подав следующий входной список на опкод PCM_OP_SDK_GET_FLD_SPECS:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/objects 0 0
0 МАССИВ PIN_FLD_FIELD [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Редактирование описания пользовательского поля
Теперь, подтвердив существование нового пользовательского поля, можно изменить его описание, вызвав опкод PCM_OP_SDK_SET_FLD_SPECS со следующим входным списком:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 МАССИВ PIN_FLD_FIELD [0]
1 PIN_FLD_DESCR STR [0] "пользовательское поле - номер НДС"
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
Опять же, спецификации поля могут быть получены, чтобы убедиться, что изменение было выполнено.
После этого удалите пользовательское поле из базы данных.
Наконец, предположим, что была допущена ошибка, и необходимо удалить поле. Предоставьте следующий входной flist опкоду PCM_OP_SDK_DEL_FLD_SPECS, который удалит поле:
0 PIN_FLD_POID POID [0] 0.0.0.1 /dd/fields 0 0
0 МАССИВ PIN_FLD_FIELD [0]
1 PIN_FLD_FIELD_NAME STR [0] "C_FLD_VAT_NUMBER"
Если опкод для получения спецификаций поля возвращает пустой список (только POID obj), то это означает, что поле не было найдено в словаре данных базы данных.
Создание пользовательских полей, доступных для BRM
Согласно стандартной практике, все, что разрабатывается на заказ, помещается в каталог BRM_HOME/custom, и поскольку в данном случае расширяется BRM_HOME/include/pin_flds.h, необходимо создать новый пользовательский заголовочный файл BRM_HOME/custom/include/custom_flds.h.
Теперь новое пользовательское поле может быть введено путем добавления следующей строки в файл custom_flds.h:
#define C_FLD_VAT_NUMBER PIN_MAKE_FLD(PIN_FLDT_STR, 10000)
Строка выше определяет пользовательское поле с именем "C_FLD_VAT_NUMBER" (обратите внимание на практику именования,
PIN_* для полей BRM и C_* для пользовательских полей) с типом данных "PIN_FLDT_STR" (STR означает строку)
и уникальный идентификатор "10000" (применительно к BRM_HOME/include/pin_flds.h). Типы данных являются статическими,
и определяется версией BRM, которую Вы используете; определения см. в BRM_HOME/include/pcm.h.
Далее выполните perl-скрипт parse_custom_ops_fields.pl на файле custom_flds.h, используя эту команду:
$BRM_HOME/bin/parse_custom_ops_fields.pl -L pcmc -I custom_flds.h -O $BRM_HOME/custom/include/custom_mapping.m
И, наконец, включите следующую строку в каждый pin.conf, где требуется, чтобы эти поля были видны: - - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m
ПРИМЕЧАНИЕ: При внедрении новых функциональных возможностей, использующих пользовательские поля, необходимо включить заголовочный файл custom_flds.h в ФМ, использующие эти поля
Спасибо за хорошую информацию, которую приятно читать.
Спасибо за отличную информацию. Мне было интересно узнать именно об этой нише. Отличная статья.
отличный пост.
Отличный сайт. Здесь много полезной информации. Я отправлю ее некоторым друзьям!
Я часто читаю Ваш блог и просто решил сказать, что продолжайте свою замечательную работу!
вот что такое интернет. Awesome post.
как всегда, отличный пост!
Действительно хороший и впечатляющий блог, который я нашел сегодня.
Спасибо за это. Не могли бы Вы опубликовать еще одну статью по настройке опкодов? Пожалуйста, не стесняйтесь связаться со мной по этому вопросу.
Brilliant Это действительно один из лучших сайтов, которые я когда-либо просматривал на эту тему.
Очень полезная информация ... Не могли бы Вы также привести примеры для следующего:
1.Создание нового продукта со всеми настройками часового пояса и тарифного плана и привязка его к услуге
2.Создание дисконтного продукта и ассоциирование его с определенной услугой (или) сервисными обращениями, а затем использование его в iScripts для отказа или скидки.
3. Небольшой пример для написания нового кода MTA
Это действительно хороший блог. Молодцы!...
Я читал Ваш блог \'Пользовательские поля в Oracle BRM\', написанный 18/03/2010.
Это действительно очень полезная программа, но у меня есть несколько вопросов по ней, и я хотел бы, чтобы Вы мне помогли.
В настоящее время моя работа связана с созданием нового поля в Oracle BRM, пока что все идет хорошо, поскольку я следовал инструкциям, которые прочитал в Вашем блоге.
Но когда я пытаюсь экспортировать счет-фактуру в формате XML, мои пользовательские поля\ в XML-файле отсутствуют.
Он отображается как 12345. Поэтому я попробовал экспортировать счет-фактуру в pin_flist и обнаружил, что BRM уже знает мое пользовательское поле.
Поэтому я подумал, что добавил строку \"- - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m\" в неправильный pin.conf.
Пока что я добавляю строку в 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
Я также попробовал добавить файл Infranet.Property в ${BRM_HOME}/bin и ${BRM_HOME}/apps/storable_class_to_xml.
Но ничего из этого не помогает, поэтому я решил написать Вам это сообщение в надежде, что Вы сможете помочь.
Действительно ли я добавил \'ops_fields_extension_file\' не в тот pin.conf или я что-то еще напутал.
Спасибо
Сатья,
Что именно мы должны рассмотреть в следующей статье Oracle BRM?
С наилучшими пожеланиями,
Mitja