【问题标题】:Rules Engine for Stand alone Java application独立 Java 应用程序的规则引擎
【发布时间】:2012-04-27 08:17:43
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否已经尝试过任何软件?如果是这样,请同时提及:您现在可能会收到您可能已经尝试过(并被拒绝)的建议。另外,您能否详细解释一下这些规则(示例会有所帮助)。

标签: java rules rule-engine


【解决方案1】:

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

http://www.jboss.org/drools

【讨论】:

    【解决方案2】:

    插头警报!

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

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

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

        【解决方案4】:

        【讨论】:

        • 我正在标记您的答案,因为您的答案没有解释为什么您会推荐使用流口水。从问题中可以清楚地看出用户已经完成了基本的google seach。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-26
        • 1970-01-01
        • 2011-08-30
        相关资源
        最近更新 更多