规则引擎产生背景
基于企业管理者的原因
1)为提高效率,管理流程必须自动化,即使现代商业规则异常复杂
2)市场要求业务规则不断变化,IT系统必须依据业务规则的变化,快速地、低成本地更新。
基于开发人员的原因
1)业务规则在分析阶段还未明确,而在设计、实施阶段还有变化
2)维护阶段,由于业务规则经常变化,导致程序多次修改,多次重新发布。大大提高了维护成本。
概念介绍
业务规则
一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑。业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技术人员使用面向对象的技术语言或脚本来定制。业务规则的理论基础是:设置一个或多个条件,当满足这些条件时会触发一个或多个操作。
业务规则中的一组条件就是决策,执行的操作就是算法。
规则引擎
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。
我的理解
程序=数据结构+算法。
数据结构用来保存程序可用数据,在程序的输入、输出、处理过程阶段中,数据按照固定的数据结构流动。
算法作用在数据结构上,根据用户要求更改数据结构中数据内容。
而在商业应用程序中,可以理解:商业程序=数据结构+算法+决策 (商业程序=对象+操作+决策)
决策即是一组逻辑条件,根据不同的条件选择不同的算法作用于数据结构上。
规则引擎的作用:将决策从硬编码中分离出来,通过声明方式定义。
效果
1)可以自动地、快速地、低成本地更改业务规则,满足企业管理者、市场变化的要求
2)可以通过由业务人员来更改业务决策,提高商业程序的灵活性。
3)减少程序修改、减少发布次数。降低维护成本。
类比:类似于设计模式中的行为型模式。解除了数据结构和算法之间的耦合。
当然,设计模式是在代码级解耦,而规则引擎是在配置文件中做的。