独立Java应用程序的规则引擎

时间:2012-04-27 08:17:44

标签: java rules rule-engine

我有一个独立的Java应用程序,我必须集成一个规则引擎。我应该使用属性文件或XML文件定义规则。我需要让Rules Engine读取属性或XML文件中定义的这些规则,并相应地在应用程序中实现代码。

任何此类规则引擎 (开源) ,我可以将它用于我的应用程序。请注意,我不需要在Application Server或Web Server中部署任何规则引擎。我需要一些jar文件,我可以直接将它用于我的应用程序。

如果有任何我可以使用的规则引擎,请指导我吗?

4 个答案:

答案 0 :(得分:1)

您可以选择Drools,也可以在独立程序中使用。

http://www.jboss.org/drools

答案 1 :(得分:1)

插头警报!

我有偏见,因为这是我自己的项目,但如果你想要一个非常快速和轻量级的规则引擎,你可以查看Roolie

该项目背后的理念是基于我个人的经验,JSR-94是过度的,大多数规则引擎太重,依赖性太多,学习曲线陡峭。

Roolie没有解决改变应用程序状态的“功能”规则(那些应该是Java无论如何恕我直言)。

相反,它允许开发人员使用单个“pass”方法实现简单规则,并将它们与XML文件中的短路布尔逻辑链接在一起。它没有任何运行时依赖性,而且速度非常快。

这是一个简单问题的简单解决方案(即用户是否可以看到文件?只有当他们“登录”,“管理员”或“高级用户”,并且“有足够的帖子”)。

复合规则是“UserCanSeeFile”,由“IsLoggedIn”,“IsAdmin”,“IsPowerUser”和“HasEnoughPosts”组成。

如果以后你不在乎他们有多少帖子让他们看到一个文件,那就拉一下那条XML线就完成了。

答案 2 :(得分:1)

我在java中尝试了一些表达式评估库。我发现MVEL是最好的。在我的情况下,我正在从数据库中读取“规则”。所以我的规则看起来像

player.platform =='iOS'&& (player.ltv> 100 || player.status> = GOLD)

现在我所做的就是为所有变量解析上面的表达式。在我的例子中,变量是带有dot(object.method)的任何标记。它对我有用。不确定它是否会起作用。

但是一旦所有变量都替换为值。我刚刚调用了MVEL.evaluate()。

此外,在我的情况下,我需要评估的所有表达式都将在布尔结果中给出。但MVEL可以使用不同的结果类型来评估任何表达式。

答案 3 :(得分:-1)