问题标签 [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.
c# - 我需要创建一个系统,其中包含用户使用 aspnet 核心在 UI 上创建/编辑的动态规则
我需要创建一个系统,其中包含用户使用 aspnet 核心在 UI 上创建/编辑的动态规则。我研究了一些框架,发现最好的是 NRULES,但我相信这不会解决我的问题。有人对如何做到这一点有一些建议吗?或者我可以使用的任何工具或框架,而不是创建所有逻辑。
多谢。
nrules - NRules 问题:超类的规则匹配不起作用
我有一个从 A 继承的 C 类。现在我想编写一个与 A 类型匹配的规则。所以我尝试了以下代码:
但这不起作用。谁能解释一下,我该如何解决这个问题?这不起作用。
此致
nrules - NRules 添加附加条件
我有一个规则,例如
返回结果
但是,当我尝试向 Where 子句添加其他条件时,例如
它返回一个错误说“无法评估条件......”
如何根据列表扩展标准?
aspnetboilerplate - ABP 中 NRules 的属性注入
我正在使用 ABP Boilerplate 6.0 并将 NRules 与我们的平台集成。
- 我能够使下面的规则起作用,但问题是我不能在规则条件中使用注入的“_questionResponseRepository”,因为只有在满足规则条件后,才会解决依赖关系。
- 我想使用“_questionResponseRepository”从数据库中获取关键字列表并在规则匹配条件中使用这些词
调用代码
规则代码
nrules - 有没有人有动态 NRules 的工作示例?
我正在寻找动态 NRules 的工作示例。实际上,我想在记事本文件中编写规则并希望在运行时读取它们。
过去 4 天我一直在互联网上搜索它,但没有找到任何东西。
任何帮助都是可观的。
nrules - NRules - 组织规则
为 NRules 组织规则时,是否需要在文件中仅包含 1 个 When/Then 组?
我有一条规则查看 3 个条件(事实匹配),flagA = false,inputA = 值列表之一,inputB = 单个值。当全部为真时,将 flagA 设置为真。我得到了那个工作,然后想添加第二条规则。
第二条规则是当 flagA 为 false 且 flagB 为 true 时,将 flagA 设置为 true。
这两个规则是否需要位于单独的 .cs 文件中,或者它们可以放在一个文件中。
我查看了“.Or”选项,但我不够流利,无法弄清楚它在做什么。
谢谢你的帮助,汤姆
nrules - NRules 根据规则从数据库中获取数据以构建新的 dataStructure
在规则定义中的 THEN 中,是否可以调用将调用 db(repos) 并构建新的 dto 集合的服务?我们有日志来对其应用一些业务规则,为我们应用业务规则是根据规则从其他数据库表中收集数据,然后构建新的日志 dto 以保存在某处
例如 RULE1 getlogsforuser,我们将有一条规则,首先查看日志,然后获取用户表和其他表并返回 logOutputDTO
例如 RULE2 getLogsForActiveCompanyyear2020 我们将有一个规则,首先查看日志,然后获取 copmany 表和其他表并返回 logOutputDTO
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个变化
- 在解决方案中包含上述中间件。
- 注册它的启动类配置方法。app.UseMiddleware();
- 最后,使用 ConfigureServices 中的服务集合注册 IDependencyResolver。services.AddScoped<IDependencyResolver, AspNetCoreDependencyResolver>();
您的方法使用 new 关键字来实例化解析器。在 DI 世界中,我在某处读到,这种更新是大罪。对象创建必须由 DI 容器(ServiceCollection)对象负责。所以我觉得中间件方法更好。
nrules - NRules rulesRepo.Compile() 慢
几周前,我开始与 NRules 合作。我很喜欢。但是我遇到的问题是性能......我有大约 1500 条规则(可能是很多?)动态构建,我的 rulesRepo.Compile() 需要将近 6 秒。有人有同样的问题吗?
nrules - 为什么 IContext.RetractLinked 需要两个参数?
我使用以下方法添加了一个链接的事实:
稍后,我想删除这个事实。我很容易在没有记录的情况下构造密钥:
那么为什么在使用以下方法删除链接事实时需要记录:
为什么这个方法不能只使用longOrderKey?如果我没有“longOrder”记录怎么办。我真的需要在删除它之前查看它吗?