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头文件。