首先,让我们看一下一个 总体情况 的内容。 甲骨文BRM 账单 这个过程是这样的:
- 汇编过去一个月内发生的余额影响的总金额。这可以包括使用费和订阅费。
- 将与账单相关的所有账单项目的状态从待定改为开放,这样它们就不再累积费用,而且可以对它们进行支付。此外,账单上还增加了一个付款截止日期。
- 自动向信用卡处理器请求付款,或通过发送发票请求付款。
- 当付款被记录在BRM数据库中时,自动更新客户的账户余额。
那么,所有这些在实践中是如何做到的呢?
在生产中运行brm计费之前,有必要执行所有的先决步骤。第一步是准备一个生产环境的副本--这可以是预生产环境或一些测试环境。这个步骤包括在这个环境中安装最新的生产版本,并复制生产数据库。接下来,环境配置必须反映生产环境的配置。这里是主要的配置,应该进行适当的设置:
- 厘米 配置($HOME/pin/sys/cm/pin.conf)、
o 确认日志级别条目被设置为1
o 将agent_return参数的条目改为0。
o 将参数simulate_agent的条目改为1。
最后这两个变化是为了在账单运行期间不涉及任何供应行动。
- dm_oracle 配置($HOME/pin/sys/dm_oracle/pin.conf)、
o 设置dm_bigsize参数为8388608或更高。
o 设置dm_shmsize参数为33554432或更高。
o 设置dm_n_fe为8
o 设置dm_max_per_fe为16
o 设置dm_n_be为24
o 设置dm_trans_be_max为22
- 帐单_帐单_帐单 配置($HOME/pin/apps/pin_billd/pin.conf)、
o 核实日志级别。根据账单测试期间需要检查的内容,将其改为适当的值,可以是1或3。
o 将pin_billd和pin_mta的儿童参数改为5。
o 将pin_billd和pin_mta的per_batch参数改为20000。
o 将pin_billd和pin_mta的fetch_size参数改为150000。
- 钉子_inv_accts 配置($HOME/pin/apps/pin_inv/pin.conf)、
o 核实日志级别。根据账单测试期间需要检查的内容,将其改为适当的值,可以是1或3。
o 将pin_billd和pin_mta的儿童参数改为5。
o 将pin_billd和pin_mta的per_batch参数改为2000。
o 将pin_billd和pin_mta的fetch_size参数改为15000。
为了获得最佳的生产模拟,billrun pin_virtual_time必须设置为在生产中执行真实billrun的日期。一旦这样做了,就可以启动账单运行了。
我们每月用pin_bill_day脚本运行账单,每小时创建大约100.000张账单。该脚本为那些账单日期在我们运行账单的当天午夜之前的任何一天的账户创建账单。那么,pin_billd_day脚本究竟是干什么的呢?它运行下列账单工具:
- pin_deferred_act:执行延迟行动;例如,如果一个账户应该变得不活跃,这个工具在预定日期执行状态变化。
- pin_bill_accts:计算账户的应收余额,并为应收余额创建一个账单。
- pin_collect:为使用信用卡和直接借记支付方式的账户收取应付的余额。
- pin_refund:查找有退款项目的账户并进行在线退款交易。
- pin_inv_accts:为每个开票的账户创建一个发票。
- pin_cycle_fees:将周期性费用余额影响应用于客户的账户,并取消有过期待取消日期的产品。
为了验证pin_bill_day脚本的进度和性能,我们对数据库进行查询,以获得关于有多少账单已经完成,有多少尚未完成,是否有错误的账单等信息。
在brm计费部分结束后,所有的账单都创建完毕,开始开具发票。发票创建后,它们被导出为XML文件,然后被转换成PDF格式。
除了前面提到的查询外,还有其他一些查询需要在开票结束后执行,以验证这一过程所产生的数据的准确性。我们执行一批查询;以下是其中的一些:
- 计费失败了吗?
select * from billinfo_t where billing_state = 4 and bill_info_id' Bill Unit(1)';
-预期的结果:没有找到行
- 是否有任何未开票的账户?
select poid_id0, first_name,last_name,a.status from account_t a, account_nameinfo_t an where
a.poid_id0=an.obj_id0并且
创建_t<和
不存在(选择b.account_obj_id0 from bill_t b
其中end_t=和
b.account_obj_id0=a.poid_id0);
-预期的结果:没有找到行
- 是否有任何没有法案编号的法案?
select * from bill_t where end_t= and bill_no is null;
- 预期的:没有找到行
任何发现的问题都会通过版本控制系统进行调查和修正,修正后的版本会被纳入下一个发布版本。