问题标签 [nrules]

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 投票
1 回答
1500 浏览

nrules - 在 NRULES 中实现前向链接的最佳方法

我想根据前一条规则的结果运行一条规则。如何使用前向链接实现此功能?我不想为每个规则创建不同的类对象来实现前向链接。

在此示例中,仅为这一规则创建了一个 InstantDiscount 对象,以实现前向链接。

0 投票
1 回答
900 浏览

nrules - NRules:如何在模块中组织规则并使用其他规则启用/禁用

我开始使用 NRules。以下是我正在构建的应用程序的一些关键要求的概述:

  1. 一些规则确定是否应应用其他规则组。例如(在伪代码中):“当类型vehicle是汽车时,应用适用于汽车的所有规则”。

  2. 某些规则将确定应排除特定规则。

  3. 可能有很多种vehicle;理想情况下,我不想在启动时为所有车辆加载所有规则。

这意味着应该将规则组织成在执行期间以某种方式启用/禁用的模块。我想到了一些解决方案:

  • 标记规则并使用议程过滤器根据用于启用/禁用将规则添加到议程的服务来过滤规则。我已经尝试过了,但它并没有像我希望的那样工作,因为引擎没有接收到对服务的更改。

  • 添加确定是否应应用规则的规则,并在每个规则的匹配条件中使用它。这导致每个规则中有很多重复的代码,我不太喜欢。

  • 在规则执行期间加载新的规则组。我不知道如何做到这一点,如果它被推荐或应该预期工作。

有没有正确的方法来做我想做的事情?

0 投票
1 回答
125 浏览

castle-windsor - 向 Castle Windsor 注册动态加载的 DLL

我在类的构造函数中有这段代码。

Assembly.LoadFrom() 语句按预期工作并正确加载程序集,但以下 kernel.Register() 调用似乎没有注册组件。

稍后访问时,Castle.Windsor 因“激活失败”和“没有支持服务的组件...”的内部异常而爆炸。显然,该组件未注册。

有人可以指出我在这里出错的地方吗?谢谢。

0 投票
1 回答
1041 浏览

c# - NRules:在具有自定义基类的规则上使用 DSL 扩展时出现问题

我正在使用 NRules 来定义所有继承自一个公共基类的规则,该基类本身继承自Rule.

当我使用 DSL 扩展插入包装匹配对象的新事实时,似乎传递给扩展方法的匹配对象是null.

这是一个应该说明问题的独立示例。我正在使用xUnit测试框架来定义两个规则,每个规则都有相同的测试。第一个通过,第二个失败。

问题是为什么带有 DSL 扩展的第二条规则不能正常工作?我做错了什么,我该如何解决?

0 投票
1 回答
1506 浏览

c# - 如何创建动态 NRules

我得到了这个例外:

我想使用嵌套属性创建动态规则。当我创建静态规则时,它工作正常,但不是在动态模式下。另外,如果可能的话,我想使用这些代码行对动态规则使用表达式:

我尝试了下面的代码来动态创建和执行规则,但我遇到了一个异常。为什么?

0 投票
1 回答
299 浏览

nrules - NRules 会议如何比较事实?

我使用this.session.Insert(object fact1)this.session.InsertAll(IEnumerable<object> fact)方法将事实放入工作集中。

现在,其中一个事实发生了变化,我称之为this.session.Replace(object fact)

NRules如何知道要替换哪个对象?它是否比较平等的参考?它是否调用 Equals 运算符?我猜您可能正在使用 Dictionary 逻辑,因此对象的Equals()GetHashCode()确定两个事实何时相同,但在继续我的设计之前我需要一些确认。

0 投票
1 回答
893 浏览

c# - 如何将 DbContext 注入 NRules 类构造函数?

我正在使用 NRules 来定义规则并尝试在 NRules 基类中使用接口,但是出现了问题,并且出现“没有为此对象定义无参数构造函数”错误。这是我的接口定义

NR规则类

当 NRules 开始加载程序集 MissingMethodException:没有为此对象定义无参数构造函数时,我收到一个错误。

0 投票
1 回答
438 浏览

nrules - 有没有办法异步运行 NRule Engine?

我想异步运行所有规则以使其线程安全

当我执行负载测试时,为什么 RuleEngine 花费这么多时间来执行所有规则。

我可以拨打如下电话:

session.FireAsync();

还是有任何其他选项可以触发多个规则但异步?并且 NRuleRepository 类应该在每个请求上重新初始化?

0 投票
1 回答
233 浏览

nrules - 使用表达式树使用运行时索引器访问类型的元素

我想使用运行时索引器而不是某些固定的零索引值来验证针对输入数组数据的规则。如果我在 session.Insert() 中一一插入数据,它就可以工作 如果我将 session.InsertAll() 与数组数据一起使用,它就不起作用

我尝试向索引器提供 Expression.Constant 值,但没有操作触发器

错误:从范围“”引用的“System.Int32”类型的变量“索引”,但未定义

预期:想要使用动态索引器针对数组数据验证规则。

0 投票
1 回答
593 浏览

c# - NRules:为复杂类型构建规则

给定以下域模型

是否可以编写一条规则,对 30 岁以下的人拥有的所有 2016 年以后的汽车执行操作?我这样做的同时只将 Person 对象作为事实插入。

我试过这样的事情。我猜如果我在 Car 中添加一个对拥有它的 Person 的引用,我可以让它工作,但我的实际用例会使这变得困难。我希望我只是错过了一些东西。