一、概述
系统中参数管理对于大多数企业软件来说有很多共性,对于公司来讲应该在所有的软件中提供一个统一机制。
本文描述如何管理参数的层次结构。
二、参数分类
我对参数的分类很简单,我按照参数的变动特性和拥有者进行两种分类
1、按变动特性
分为部署级和运行级,部署级的参数在部署时就已经决定运行时不会再修改;运行级的可以在运行时修改并且不用重新部署或重启应用
2、按拥有者分类
全局级、机构级和用户级,一般这就够了,如果需要其他的可以根据需要扩展
三、接口设计
接口可以分为三类:
1、参数的表示接口
对于层次的参数可以分为目录和属性,因此建立两个接口IDirectory和IProperty
2、参数仓库的入口接口
IConfigurationRepository,他的主要方法为:
getDeployConfiguration()
获得部署级参数
getSystemConfiguration()
获得运行时系统全局参数
getOrgConfiguration()
获得运行时机构参数
getUserConfiguration()
获得用户参数
说明:对于getOrgConfiguration 和 getUserConfiguration接口在业务层不应该传递机构代码和用户代码,应该根据应用服务器的上下文取得相应的信息;以增加安全性。
3、参数使用者的实时通知接口
如果应用需要实时的根据参数进行调整,那么就需要定义一个接收参数修改通知的接口口IConfigurationChangeNotify
四、其他
对于部署级的参数,使用XML配置进行设置;对于其他参数我倾向使用数据库,主要考虑是备份时不用多处备份。
设计数据库时应该适当考虑编辑的通用性,如增加必要的字段来表示:参数值类型、正则表达式的校验规则、编辑类型等等;
要实现所有的需要一些时间,仅仅提供一个参考的思路
