2012-04-27 44 views
1

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

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

请指导我是否有任何这样的规则引擎可以使用?

+1

你已经试过任何软件吗?如果是这样,请提及这一点:您现在可能会收到您可能已经尝试过(并被拒绝)的建议。另外,你能否更详细地解释这些规则(例子会有所帮助)。 – 2012-04-27 08:19:25

回答

-1
+0

我正在标记你的答案,因为你的回答并不能解释为什么你会推荐使用口水。从问题中可以明显看出,用户已经完成了基本的Google搜索。 – snegi 2015-01-19 20:55:37

1

插头警告!

我有偏见,因为它是我自己的项目,但如果你想要一个非常快速轻巧规则引擎,你可以检查出Roolie

该项目背后的理念是根据我个人的经验,JSR-94是矫枉过正,大多数规则引擎是太重了,有太多的依赖和陡峭的学习曲线。

Roolie并未涉及更改应用程序状态的“功能性”规则(这些应该成为Java反正恕我直言)。

相反,它允许开发者实现具有单个“通”方法简单的规则,并且在XML文件中带短路布尔逻辑一起连锁它们。它没有任何运行时依赖关系,速度非常快。

这是一个简单的解决方案,以一个简单的问题(即用户可以看到一个文件?只有在它们“登录”,“管理员”或“超级用户”和“有足够的职位”)。

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

如果以后不在乎他们有多少职位,让他们看到一个文件,只需抽出的是XML行和你做。

1

我在java中使用了一些表达式评估库进行了实验。我发现MVEL是最好的。在我的情况下,我正在阅读数据库中的“规则”。所以,我的规则看起来就像

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

现在我所做的就是要分析上面的表达式对所有的变量。在我的情况下,变量是带点的任何标记(object.method)。它为我工作。不知道它是否会起作用。

但是,一旦所有变量都被替换为值。我只是称其为MVEL.evaluate()。

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