易流水账中,应该记录下交易时候是采用的那个价格类型,原始价格多少,实际购买价格多少。记录下原始价格,是因为,商品的原始价格本身可能是变化的。
再以拆迁资源计划系统(http://www.netsky-tech.com/))为例,房屋补偿的价格价格可能是来自于管理参数,也可能是来自于申请,实际到底是来自于哪个,算法应该记录下来。
9.业务规则使用的版本化
前面已经提到了数据录入的版本化,还有算法的版本化,也就是计算结果的版本化。但是还没有谈到一点,到底啥时间该采用哪个版本算法。
在J2EE项目中,一般是采用配置文件的方式来控制版本。从配置管理角度的来说,一切都根据配置文件来决定使用哪个版本的数据录入的分级(数据信任程度分级),然后根据配置文件决定数据处理使用的算法版本。其实在J2EE项目中,可以采用类似apache commons-validator这样的包,来进行数据录入的信任等级建立。
前面都已经提到了从工厂方法模式的角度来建立数据信任等级制度,但是并没有解决到底啥时间采用哪个方法处理数据。也许有人建议,采用工厂方法模式的思想, 把数据当成产品,把算法当成工厂,来处理(注意:不是制造)数据。这个想法也许能够满足一些系统的需要,但是更多时候是失效。
为此,我觉得有必要把算法的分配使用当成为一个业务管理策略来管理,在J2EE项目中,常用的方式使用XML的格式保存为配置文件,但是如果这个策略比较复杂的时候建议还是保存到数据表;通过单独的业务模块去设置业务的算法管理策略,可以把这些策略保存为配置文件或者直接 保存到数据表。