己的数据,可以查询总数据 中心/其他分数据中心的数据。如果没有引入数据来源管理(数据属地管理)和数据版本的控制机制,不知道系统在作数据中心合并会怎样子?
7.数据项的分类编码
数据项的分类编码,实际上是数据项来源管理的一个具体延伸。数据项编码的目的就是更快更好的识别数据代表的业务意思。一个典型的例子就是ERP中的BOM表(基本物料清单)。
数据项的分类编码,不只是在系统模型建立上有指导意义,在进入系统的业务数据的规范化同样有指导意义。
数据项的业务编码和系统编码分离。业务编码很多时候只是为了识别业务数据的需要,很难保证业务数据的唯一性要求。而且业务编码可能会发生变动,有些单位的 总体规划从调研到讨论制订、到项目审批通过,再到最终实施,常常几年过去了,需求发生变化,这种编码规则不发生变动几乎不可能。2000年我参与的一个企 业软件系统,就一个产品编码规则2个月就发生了5次变动。从更长的时间范围内来说,应该考虑数据产生时期问题,不同时间阶段产生的业务数据,使用的业务规 则不一样,数据编码这个层次很多时候很难识别数据当时的业务环境。
以一个简单的例子来说明:
业务数据表的primary key系统应该是系统定义的,而数据项的业务编码只能作为索引或者备用键使用,这样就减少了数据业务编码规则的变动对系统影响减少到更小的程度。
8.业务规则使用的版本化
前面已经提到了数据录入的版本化,还有算法的版本化,也就是计算结果的版本化。但是还没有谈到一点,到底啥时间该采用哪个版本算法。
在J2EE项目中,一般是采用配置文件的方式来控制版本。从配置管理角度的来说,一切都根据配置文件来决定使用哪个版本的数据录入的分级(数据信任程度分级),然后根据配置文件决定数据处理使用的算法版本。
其实在J2EE项目中,可以采用类似apache commons-validator这样的包,来进行数据录入的信任等级建立。
前面都已经提到了从工厂方法模式的角度来建立数据信任等级制度,但是并没有解决到底啥时间采用哪个方法处理数据。也许有人建议,采用工厂方法模式的思想, 把数据当成产品,把算法当成工厂,来处理(注意:不是制造)数据。这个想法也许能够满足一些系统的需要,但是更多时候是失效。
为此,我觉得有必要把算法的分配使用当成为一个业务管理策略来管理,通过单独的业务模块去设置业务的算法管理策略,可以把这些策略保存为配置文件或者直接 保存到数据表;在J2EE项目中,常用的方式使用XML的格式保存为配置文件,但是如果这个策略比较复杂的时候建议还是保存到数据表。
9.算法的版本化
本来我打算在前面的基础上,再谈一下业务流程的管理设置问题,不过,现在工作流思想深入人心,我也就跳过了。我打算从数据的核心业务处理,算法处理角度来阐述。
其实在现实中的软件项目中,大家提到的较多的BPR,工作流这些东西,但是很少提到算法这个单词。当然,不可否认,很多软件项目,特别是电子政务/OA的 业务主要是体现在流程/文件上,算法这部分比较简单(当然,我这样说,有人可能不认可,暂且就不争论它了),就没有必要去强调算法的重要性了。
为了避免垃圾数据进入系统,垃圾数据出来,有必要对数据进行分类管理。正如前面提到的那样,对于进入系统的数据,进行信任等级划分,数据来源的分类;但是 对于系统出口,为了避免出现垃圾数据,需要在数据处理阶段,也要进行分类处理,这里就引入了算法的版本化,来适应不