规则的实现首先要有一个好的设计哈,在规则项目的设计层面上,简单想到如下几点:
Ø 业务层面设计
n 业务对象模型的设计要易于业务人员的理解,不建议用过于技术的描述
n 业务规则的组织(规则包的设计、规则包嵌套逻辑的设计)要遵循业务,要便于业务人员理解
Ø 技术层面设计
n 规则项目的划分要相对合理
n 规则流要合理清晰
n 业务系统与规则管理平台的集成方式需要根据实际情况选择合理的集成方式:
u 如果性能要求非常高,建议用POJO调用方式;
u 如果性能要求较高并要求业务系统与规则管理平台分离部署且网络传输比较好,建议用Remote EJB调用方式;
u 如果要求接入企业服务总线,要求规则应用发布为服务供业务系统调用,建议用Web Service集成方式;
u 一般不推荐使用J2SE调用方式;
在规则开发层面上,要遵从一些开发规范及开发注意事项简要列举如下:
Ø 命名规范,包括规则项目的命名、规则包、规则的命名等需要遵循的行内规范
Ø 开发规范
n XOM实现方式的选择,可以选择JAVA的方式或者XSD文件的方式
n 规则流中各ruletask的算法的要根据具体的业务场景做出合理的选择,可以选择贯序算法(Sequencial)、快速路径算法(Fatpath)、Reteplus算法
n 多使用规则模板、规则复制等提高开发效率
Ø XOM实现方式的选择
n 一般来讲XOM是JAVA的方式执行性能会优于XSD的方式,除非有特殊或特定的业务场景需要使用XSD的方式来实现XOM,否则建议使用JAVA的方式来编写XOM;
Ø 算法的选择
n 对于rule task(规则流中的节点)中包含的规则如果是无关联的聚合规则(比如验证、业务合规检查等),建议该rule task的算法使用Sequencial
n 对于rule task中包含的规则如果大部分是决策表形式的,而且规则条件的一致性比较高(比如有一些被合并的单元格等),建议该rule task的算法选择Fastpath
n 对于rule task中包含的规则如果大部分是很复杂的且规则与规则之间关联性很高的规则,比如推理规则、计算逻辑复杂并且规则间相互牵连的情况,建议选择Reteplus算法。但是注意Reteplus算法的性能没有前2者优。
收起