用规则引擎开发灵活配置的业务系统
最近收到一个任务,要用java开发一套业务管理系统,心想着应该不难,无非也是按框架办事,于是开始构思框架。一番商量后觉得采用SSH框架不错,于是咋们开始动手,但遇到后期,业务越来越复杂,业务是具有可变性,让我的项目进度越来越慢,主要是复杂多变的业务对象处理和协调很容易混乱甚至出错,心想着要是能把业务层分离出来独立的去处理,那么项目开发效率将会大大提高。于是我无意中发现了“规则引擎”这个玩意,可能很多人都没听过规则引擎,也不知道他的作用,但它确实对我的项目有着决定性的帮助。规则引擎就是嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。 这么一听岂不是和我前面的设计思路一致吗?把业务层分离出来独立的去管理与编写。 有了这个神奇的组件,我就继续开搞。
首先我把以前项目中的业务代码删掉了,换成了几句简单明了的语句:
RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine();
ruleEngine.put(传入对象);
ruleEngine.excute("规则包调用名");
传出对象 = ruleEngine.get("传出对象名");
就这样,我的java源码文件非常的清晰明了,由于那些复杂的业务代码已经全被转移走,换成了上面几句简单的语句,这几条语句调用了规则引擎生成的规则包,而规则包正是我们处理业务的代码。就这样,我们java的编写部分结束,剩下的就是用规则引擎去处理和现实复杂多变的业务了。
我这边使用的是旗正4.0规则配置器。感觉还不错~~