规则引擎是面向技术人员的工具。目前技术人员为什么会选择规则引擎来使用,主要是基于如下情形来考虑:
1、业务逻辑从程序代码中脱离出来。通过配置来实现业务规则。
2、业务规则的变更,可以直接由用户通过web界面来修改和变更。
针对这一类需求情况,其实我们有一般由以下的几种可选方案:
1、选择规则引擎来实现。
现有的规则引擎产品一般都能满足以上这两种要求。可以不用代码,比如Java来实现业务逻辑,而采用规则语言通过规则配置器来完成。用户需要变更时,一般都会提供C/S或者B/S版本的规则配置器来实现。
2、采用动态语言:
直接采用JS或者其他的动态语言BeanShell等,也可以实现不通过Java代码来实现业务逻辑。通过也可以提供一个编辑界面,让用户来进行修改。
3、表格配置或者自定义公式
通过定义一个表格或者加上一定的自定义公式语法来实现具体的逻辑。
以上几种方案,在不同的项目中,都有各自的优缺点:
1、采用规则引擎实现,使得业务规则的配置更加标准化、专业化。同时一般的规则引擎都会对修改的记录进行版本控制,以便于跟踪、测试、恢复等操作。规则配置器一般提供的界面,更加人性化,用户使用上更加便捷。缺点是会使得整个系统的架构变得庞大,需要有人专门负责研究规则引擎,以及相关的配置和管理工具。
2、采用动态语言的实现,对于开发上会更加简单。动态语言一般纯粹处理逻辑,因此接口设计上会更加容易。同时使用动态语言时,一般很少会去考虑继承关系、相互调用等问题。缺点是可支持的逻辑相对扁平化,也相对简单。同时动态语言需要有个学习