1

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

任何这样的规则引擎(开源),我都可以将它用于我的应用程序。请注意,我不希望在应用程序服务器或 Web 服务器中部署任何规则引擎。我需要某种 jar 文件,我可以在其中直接将其用于我的应用程序。

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

4

4 回答 4

1

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

http://www.jboss.org/drools

于 2012-04-27T08:22:12.010 回答
1

插头警报!

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

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

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

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

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

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

如果稍后您不关心他们必须有多少帖子让他们看到一个文件,只需拉出该 XML 行,您就完成了。

于 2013-03-31T09:14:24.457 回答
1

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

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

现在我所做的是为所有变量解析上面的表达式。在我的情况下,变量是带有点( object.method )的任何标记。它对我有用。不确定它是否对你有用。

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

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

于 2015-03-06T00:07:19.023 回答
-1

我推荐你流口水

也检查其他选项

于 2012-04-27T08:28:44.010 回答