an easy rule engine framwork in Java 一套简单的Java规则引擎框架
本引擎框架是一个非常优秀的DSL设计方案,能抽象核心业务逻辑,方案兼具可读性,维护性,扩展性,解决方案堪称经典。
框架主要依赖三个类:Condition,Action,DTree,分别用于实现条件判断、触发动作和流程控制。基于该框架,实现复杂逻辑流程图实现大致分为三个步骤:
编写 Conditon 对象,以实现条件的判断。 编写 Action 对象,以实现满足不同的条件情形下触发的相应动作。 将 Condition 对象和 Action 对象进行组合,从而得到一个 DTree 对象,该对象的 run 方法即可以实现逻辑流程。
总结下来,在实现较为复杂的流程时,采用 dtree 可以将复杂的逻辑分成一个个小块,最后自由组合,这样既方便管理和维护,同时也方便扩展,即便是非常复杂的逻辑,也可以在细分成更小、更简单的逻辑块后,分别实现这些“小逻辑”,最后将其组合起来。
假如要根据学生的年龄(age)、兴趣(interest)、性别(gender)的不同为学生提供不同的礼物。
假定要实现的逻辑示意图为:
+++root:
| +++年龄<12:
| | +++喜欢 运动:
| | | ---女生 --> 送 笔记本
| | | ---男生 --> 送 足球
| | ---Else --> 送 书
| +++年龄>=15:
| | ---喜欢 写作 --> 送 笔记本
| | ---Else --> 送 书
| +++Else:
| | ---男生 --> 送 足球
| | ---女生 --> 送 书