问题标签 [rule-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2522 浏览

spatial - 空间和时间推理的规则引擎?

我有一个应用程序,它接收许多表征 3 维空间和时间过程的数据。然后,它过滤这些数据并创建操作,然后将这些操作发送到执行操作的进程。冲洗并重复。

目前,我有一组自定义过滤器,可以执行很多复杂的空间/时间计算。

很多时候,当我与公司中的个人讨论我的系统时,他们会问我是否使用了规则引擎。

我还没有找到一个能够很好地在时间和空间上进行推理的规则引擎。(例如:两个 3D 实体何时接近?3D 实体 A 是否曾经包含在 3D 区域 B 中?如果实体 C 靠近实体 D,但相对于 C 向后,则执行操作 D。)

我过去看过 Drools、Cyc、Jess(比如 3-4 年前)。是时候重新审视最先进的技术了。有什么建议么?您知道的任何标准都支持这种推理吗?任何事实上的标准?有什么应用吗?

谢谢!

0 投票
2 回答
1176 浏览

asp.net-mvc - MvcContrib.CommandProcessor.RulesEngine 教程

我正在研究 CodeCampServer。

我对 ASP.NET MvcContrib.CommandProcessor.RulesEngine 感到困惑。

有没有关于 MvcContrib 的 RulesEngine 的教程?

或者你们中的任何人都可以解释一下这是如何工作的以及我获得了什么好处?

0 投票
1 回答
2408 浏览

rule-engine - 如何在 Java EE 中实现定价模型 - 通过规则引擎?

我正在开发一个 Java EE 6 应用程序,其中“供应商”应该能够为用户定义服务的价格和不同的折扣。有许多不同的提供者。每家提供相同的服务,定价模式可能不同。

价格模型: - 供应商应该能够定义价格,例如每小时、每分钟、每进程……。- 提供商应该能够轻松添加条件来定义用户获得的折扣。例如:特定用户组的用户获得 10% 的折扣,使用该服务超过 5 次的用户获得另一个折扣。- 它应该能够将条件与“AND”或“OR”等逻辑运算联系起来。- 可能条件的数量应由软件制造商定义。

  • 当用户尝试访问服务时,应显示用户特定的价格。使用该服务后,特定用户有时会收到一张发票​​,其中列出了该服务的总费用。在使用服务时,提供商可以更改定价模型,因此必须有版本号或其他东西。然后应将定价模型版本保存在数据库中。

问题是 - 使用规则引擎来解决这个规范是否可能和有意义?提供者应该在没有 xml 文件或类似文件的情况下定义条件,只需单击并选择即可。我没有使用规则引擎的经验......所以也许有人可以帮助我找出最适合这个问题的解决方案。

0 投票
1 回答
735 浏览

parsing - 编译器中的解析阶段与规则引擎有何不同?

我对编译器的工作方式有一个粗略的了解(我的意思是语言、语法、词法分析、解析等)。规则引擎有各种规则和相关的动作,就像你在语法中有规则一样,你可以在像 ANTLR 这样的解析器生成器工具中将动作与它们相关联。所以我对如何区分这两者有点困惑。任何人都可以对差异给出更清晰,更正式的解释吗?

谢谢,阿比纳夫。

0 投票
6 回答
2313 浏览

java - 推理引擎根据内部规则计算匹配集

我有一组具有属性的对象和一堆规则,当应用于这组对象时,这些规则提供了这些对象的子集。为了让这更容易理解,我将提供一个具体的例子。

我的对象是人,每个人都有三个属性:原籍国、性别和年龄组(所有属性都是离散的)。我有一堆规则,比如“所有来自美国的男性”,它们与这个更大对象集的子集相对应。

我正在寻找一个现有的 Java“推理引擎”或类似的东西,它能够从规则映射到一个人的子集,或者关于如何创建我自己的建议。我已经阅读了规则引擎,但该术语似乎专门用于将业务规则外部化的专家系统,并且通常不包括任何高级形式的推理。以下是我必须处理的更复杂场景的一些示例:

  1. 我需要规则的结合。因此,当同时出现“包括所有男性”和“排除 10 至 20 岁年龄段的所有美国人”时,我只对美国以外的男性以及美国境内 10 至 20 岁以下的男性感兴趣。 20岁年龄段。

  2. 规则可能有不同的优先级(明确定义)。因此,“排除所有男性”的规则将覆盖“包括所有美国男性”的规则。

  3. 规则可能有冲突。因此,我可以同时设置“包括所有男性”和“排除所有男性”,在这种情况下,必须优先解决问题。

  4. 规则是对称的。所以“包括所有男性”相当于“排除所有女性”。

  5. 规则(或更确切地说是子集)可能具有与之关联的元规则(明确定义)。在应用原始规则或通过推理达到子集的任何情况下,都必须应用这些元规则。因此,如果“排除美国”的元规则附加到“包括所有男性”规则,并且我为引擎提供“排除所有女性”规则,它应该能够推断出“排除所有女性”子集相当于“包括所有男性”子集,因此另外应用“排除美国”规则。

如果没有第 5 项,我很可能可以生活,但我确实需要提到的所有其他属性。我的规则和对象都存储在数据库中,并且可以在任何阶段更新,因此我需要在需要时实例化“推理引擎”并在之后销毁它。

0 投票
1 回答
3933 浏览

drools - 使用带有动态决策表的 drools 专家

这就是我想做的事情。

我想把“规则”放在数据库表中。这有点像 drools xls 决策表格式,只是所有规则都是表中的行。这样我可以轻松地修改规则。我需要把它放在一个表格而不是 xls 中,因为我的规则可能会经常改变。流口水可以吗?我是否可以使用从数据库(而不是 DRL 或 xls 文件)检索的规则构建知识库,并且每次规则更改时,我都可以从头开始重建知识库(或者可能只是知识库的一部分,基本上只更新那些已更改的规则..)

0 投票
1 回答
1227 浏览

asp.net - 强大的 ASP.NET 服务器端动态表单引擎

我最近实现了一个简单的动态表单引擎,它使用动态加载的 ASP.NET 控件与 EAV 架构来处理数据模型的可变特性。企业一度对最终产品非常满意,但现在要求更复杂的动态形式:

  1. 字段可见性与其他表单字段的值相关联
  2. 与其他表单字段的状态相关的下拉可能值列表
  3. 跨表单执行各种业务规则:即FieldA的值必须不大于FieldX + 30天,假设FieldX不为空,等等等等
  4. 其他复杂的字段间依赖关系和业务规则

正如您可能想象的那样,我正在寻找一个现成的解决方案,因为从头开始滚动这样一个引擎似乎很乏味、耗时,而且并不是我们核心业务的一部分。理想情况下,我想要包含所有层(业务逻辑、表示层和持久性)的完整 ASP.NET 框架(MVC 或 WebForms)。然而,乞丐不能成为选择者,所以我会使用一个只处理业务规则定义和评估的框架。此外,我正在寻找一个严格的服务器端解决方案,因为我的双手被严格的政策束缚,不允许对客户端插件的任何依赖。

XForms 看起来非常合适,但我发现的唯一成熟的实现是基于 Java (Orbeon) 或 Django (Chiba)。我发现的其他 XForms 实现在某种程度上依赖于客户端插件。

如果我能找到一种将 Orbeon 与 ASP.NET 应用程序集成的方法,我愿意使用 Orbeon,但我没有看到这种混合实现的实际示例。

我简要查看了 Microsoft Office InfoPath,但它似乎不够强大,无法处理我需要实现的那种复杂场景。

欢迎所有想法!

0 投票
1 回答
456 浏览

java - 用于复杂显示值查找的 Drools

这个问题的目的是评估使用 Drools 在 Web 应用程序中进行复杂的显示值查找处理的合理性。我的任务是检索存储在供应商数据库中的覆盖信息(来自保险单),并在自定义 Web 应用程序中显示信息。有 100 个覆盖范围,每个覆盖范围要显示的显示值可以基于每种覆盖类型的 4 或 5 个不同列的组合。我认为可能有多达 40 种不同类型的保险。

话虽如此,流口水或决策树机制会提供一种处理此问题的好方法吗?我应该指出,我们很可能需要经常添加/修改覆盖信息,而吸引我使用这种机制的一件事是 BA 可以帮助保持规则的最新状态。但是,我担心此选项可能会对速度产生不利影响。目前,我有一个工作原型,它使用数据库结合数据库中的反射和 XML,以确保映射成功完成。

如果您也能想到其他选择,我对它们持开放态度。

谢谢,杰里米

0 投票
1 回答
2324 浏览

rules - Drools 撤回导致规则不触发

我在 Drools 4.0.7 中遇到了一些奇怪的行为,但也许这只是因为我不明白 Drools 是如何工作的。假设有一个类“A”,它有一个名为“property”的属性。

事实上,我有以下 A 列表:A1,属性 = 123 A2,属性 = 345 A3,属性 = 123

我有两个规则如下:

我的理解是“规则 1”将删除具有 123 属性的 A 类的事实。当它到达“规则 2”时,“listOfAs”不应该只剩下一个 A(即属性是设置为“345”)。我注意到的是“规则 2”根本没有执行,即使我假设还有一个“A”对象没有被收回。如果我注释掉“撤回”,它会执行“规则 2”。

我错过了关于这些规则工作的一些东西吗?

谢谢。贾斯汀

0 投票
1 回答
1714 浏览

sql-server - 使用 SQL SERVER 构建业务规则引擎

我需要构建一个业务规则引擎。我使用的是 SQL SERVER 2005。业务规则非常庞大,比如 2000 页。

例如。

等等等等

所以,我认为我们不能只在程序中的 if else 条件中编写所有这些规则。所以,也许我可以创建一个决策表并将该表上的所有条件作为记录。但我不知道该怎么做。

任何人都有任何想法,怎么做?

谢谢