问题标签 [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 回答
412 浏览

c# - 我需要创建一个系统,其中包含用户使用 aspnet 核心在 UI 上创建/编辑的动态规则

我需要创建一个系统,其中包含用户使用 aspnet 核心在 UI 上创建/编辑的动态规则。我研究了一些框架,发现最好的是 NRULES,但我相信这不会解决我的问题。有人对如何做到这一点有一些建议吗?或者我可以使用的任何工具或框架,而不是创建所有逻辑。

多谢。

0 投票
1 回答
182 浏览

nrules - NRules 问题:超类的规则匹配不起作用

我有一个从 A 继承的 C 类。现在我想编写一个与 A 类型匹配的规则。所以我尝试了以下代码:

但这不起作用。谁能解释一下,我该如何解决这个问题?这不起作用。

此致

0 投票
1 回答
185 浏览

nrules - NRules 添加附加条件

我有一个规则,例如

返回结果

但是,当我尝试向 Where 子句添加其他条件时,例如

它返回一个错误说“无法评估条件......”

如何根据列表扩展标准?

0 投票
1 回答
360 浏览

aspnetboilerplate - ABP 中 NRules 的属性注入

我正在使用 ABP Boilerplate 6.0 并将 NRules 与我们的平台集成。

  1. 我能够使下面的规则起作用,但问题是我不能在规则条件中使用注入的“_questionResponseRepository”,因为只有在满足规则条件后,才会解决依赖关系。
  2. 我想使用“_questionResponseRepository”从数据库中获取关键字列表并在规则匹配条件中使用这些词

调用代码

规则代码

0 投票
1 回答
1535 浏览

nrules - 有没有人有动态 NRules 的工作示例?

我正在寻找动态 NRules 的工作示例。实际上,我想在记事本文件中编写规则并希望在运行时读取它们。

过去 4 天我一直在互联网上搜索它,但没有找到任何东西。

任何帮助都是可观的。

0 投票
1 回答
275 浏览

nrules - NRules - 组织规则

为 NRules 组织规则时,是否需要在文件中仅包含 1 个 When/Then 组?

我有一条规则查看 3 个条件(事实匹配),flagA = false,inputA = 值列表之一,inputB = 单个值。当全部为真时,将 flagA 设置为真。我得到了那个工作,然后想添加第二条规则。

第二条规则是当 flagA 为 false 且 flagB 为 true 时,将 flagA 设置为 true。

这两个规则是否需要位于单独的 .cs 文件中,或者它们可以放在一个文件中。

我查看了“.Or”选项,但我不够流利,无法弄清楚它在做什么。

谢谢你的帮助,汤姆

0 投票
0 回答
120 浏览

nrules - NRules 根据规则从数据库中获取数据以构建新的 dataStructure

在规则定义中的 THEN 中,是否可以调用将调用 db(repos) 并构建新的 dto 集合的服务?我们有日志来对其应用一些业务规则,为我们应用业务规则是根据规则从其他数据库表中收集数据,然后构建新的日志 dto 以保存在某处

例如 RULE1 getlogsforuser,我们将有一条规则,首先查看日志,然后获取用户表和其他表并返回 logOutputDTO

例如 RULE2 getLogsForActiveCompanyyear2020 我们将有一个规则,首先查看日志,然后获取 copmany 表和其他表并返回 logOutputDTO

0 投票
1 回答
110 浏览

asp.net-core - 无法解析具有 Asp.Net Core 范围依赖的 NRules

在这里运行示例时出现以下错误。

我想将服务IPersonService注入到规则MalePersonRule

请注意,同样的服务IPersonService被注入到HomeController中。

我已将此 IPersonService 注册为Startup.cs类中的范围服务。

我使用了这个NRules.Integration.AspNetCore nuget 包并得到了错误。因此,为了了解更多信息,我将这个 git hub repo 中的那个 nuget的来源包含在我的解决方案中的这个文件夹中。

如何在请求范围内注册服务,以便将该服务也注入到具有相同范围的规则中?这可能吗?

我知道该规则不能在请求范围内。该规则在应用程序开始时被实例化,然后在所有请求的剩余生命周期中使用相同的规则。我希望服务依赖项处于请求范围内,这意味着要为每个新请求重新实例化该服务。这可能吗?

但我猜规则会话是为每个请求重新创建的。

到目前为止,我还不能令人满意地将 NRules 集成到 AspNetCore 项目中。我研究了这个NRules.Demo 项目也是为了了解如何集成,但面临类似的问题。如果有任何显示如何集成的 aspnet 核心演示项目,请分享。

我错过了什么?

重现该问题的工作解决方案在这里供您参考

更新:

嗨,谢尔盖,

谢谢你。您的解决方案正在运行。但我找到了另一种方法。

这是使用中间件。我得到了阅读这个 SO 答案的线索。

所以我创建了一个中间件如下。

注意上面的invoke方法对IDependencyResolver有依赖,所以需要注册。当然,中间件本身也必须注册。

总而言之,3个变化

  1. 在解决方案中包含上述中间件。
  2. 注册它的启动类配置方法。app.UseMiddleware();
  3. 最后,使用 ConfigureServices 中的服务集合注册 IDependencyResolver。services.AddScoped<IDependencyResolver, AspNetCoreDependencyResolver>();

您的方法使用 new 关键字来实例化解析器。在 DI 世界中,我在某处读到,这种更新是大罪。对象创建必须由 DI 容器(ServiceCollection)对象负责。所以我觉得中间件方法更好。

0 投票
1 回答
103 浏览

nrules - NRules rulesRepo.Compile() 慢

几周前,我开始与 NRules 合作。我很喜欢。但是我遇到的问题是性能......我有大约 1500 条规则(可能是很多?)动态构建,我的 rulesRepo.Compile() 需要将近 6 秒。有人有同样的问题吗?

0 投票
1 回答
40 浏览

nrules - 为什么 IContext.RetractLinked 需要两个参数?

我使用以下方法添加了一个链接的事实:

稍后,我想删除这个事实。我很容易在没有记录的情况下构造密钥:

那么为什么在使用以下方法删除链接事实时需要记录:

为什么这个方法不能只使用longOrderKey?如果我没有“longOrder”记录怎么办。我真的需要在删除它之前查看它吗?