Oracle通信计费和收入管理(Oracle BRM\正式称为Portal Infranet)提供两种方法来创建、编辑和删除自定义字段和可存储类。一种方法是使用开发者中心应用程序中的可存储类编辑器,另一种方法是使用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部署工具使用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 - 删除一个字段。
为了创建一个字段,有必要为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
同样,可以检索该字段的规格,以验证该变化是否已经完成。
之后,从数据库中删除该自定义字段。
最后,假设犯了一个错误,有必要删除一个字段。向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 "的自定义字段(注意命名的惯例、
BRM字段为PIN_*,自定义字段为C_*),数据类型为 "PIN_FLDT_STR"(STR代表字符串。)
和唯一标识符 "10000"(关于BRM_HOME/include/pin_flds.h)。数据类型是静态的、
并由你所运行的BRM版本定义;请看BRM_HOME/include/pcm.h的定义。
接下来,用这个命令在custom_flds.h上运行parse_custom_ops_fields.pl perl脚本:
$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
注意:当使用自定义字段引入新功能时,有必要在使用这些字段的FM中包含custom_flds.h头文件。
谢谢你提供好的信息,让我们来阅读。
谢谢你的深刻见解。我对这个特殊的利基市场很好奇。伟大的文章。
优秀的帖子。
伟大的网站。这里有很多有用的信息。我正把它发给一些朋友!
我经常读你的博客,我只是想说,继续保持惊人的工作!
这就是互联网的作用。真棒的帖子。
像往常一样的好帖子!
我今天发现的博客真的很好,令人印象深刻。
谢谢你的帮助。你能再发表一篇关于操作码定制的文章吗?请随时与我联系。
辉煌 这真的是我在这个问题上浏览过的最好的网站之一。
非常非常有用的信息 ......你能不能也给下面的例子:
1.创建一个具有所有时区和费率计划配置的新产品,并将其与一项服务联系起来
2.创建一个折扣产品,并将其与特定的服务(或)服务电话联系起来,然后在iScripts中使用它来拒绝或折扣它们。
3.写一个新的MTA代码的小例子
这是一个非常好的博客。干得好!...
我一直在读你的博客,'Custom Fields in Oracle BRM\'写于2010年3月18日。
它确实非常有用,但我有几个关于它的问题,我希望你能帮我解决。
目前,我的工作涉及在Oracle BRM中创建新的字段,到目前为止还不错,因为我是按照从你的博客上读到的说明来做的。
但是,当我试图导出一个XML发票时,我在XML文件中的自定义字段/的标签不见了。
它显示为12345。所以我试着用pin_flist导出发票,结果发现BRM已经知道我的自定义字段。
因此我认为我在错误的pin.conf中添加了一行"- - ops_fields_extension_file ${BRM_HOME}/custom/include/custom_mapping.m\"。
到目前为止,我在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 中添加了这一行。
我还试着在${BRM_HOME}/bin和${BRM_HOME}/apps/storable_class_to_xml中加入Infranet.Property文件。
但这些都无济于事,所以我决定给你写这封信,希望你有可能提供帮助。
我是否真的在错误的pin.conf中添加了'ops_fields_extension_file\',还是我搞砸了其他事情。
谢谢你
萨提亚、
我们在下一篇Oracle BRM文章中究竟应该解决什么问题?
最好的问候、
米佳