标签: rule-engine

为什么不使用规则引擎?或者规则引擎的开销

我读过几篇讨论使用规则引擎的用例的文章。他们中的许多人说您不应该将其用于工作流程管理。

我参考的帖子:

  1. 规则引擎的优缺点
  2. 何时不应使用规则引擎
  3. 规则引擎使用指南

但我还没有得到任何简单的解释,说明规则引擎在使用时会给系统添加哪些开销?

如果我用它来进行工作流程管理会怎么样?会造成内存开销吗?

有人可以关注这个吗?

我还将介绍我们将使用规则引擎的场景:

我们有一个竞价引擎,其输入根据业务分析师的预测经常变化。因此,简单来说,我们将针对基于规则提供的某些值采取行动。例如:如果业务分析师将价值设置为 2 美元,则规则引擎将决定发送给客户的出价价值。

rule-engine

5
推荐指数
1
解决办法
1668
查看次数

过滤掉Mathematica中的子列表

我是mathematica的新手用户.这是我的问题:

例如,我有一个嵌套列表:

 lst = {{1, 0, 0}, {0, 1, 1}, {2, 0, 1}, {1}, {0,3}}
Run Code Online (Sandbox Code Playgroud)

我想只输出元素为0或1的子列表.上面列表的输出应该是:

{{1, 0, 0}, {0, 1, 1}, {1}}
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式获得满足我条件的列表:

lst /. x:{(1 | 0) ..} :> x
Run Code Online (Sandbox Code Playgroud)

但是,我怎样才能得到模式的反转?像这样:

 lst /. x:NOT{(1 | 0) ..} :> Sequence[]
Run Code Online (Sandbox Code Playgroud)

这样我就能一举得到结果.

谢谢!

wolfram-mathematica rule-engine

4
推荐指数
2
解决办法
1093
查看次数

在Ruby中指定和执行规则

我正在寻找一个Ruby/Rails工具,它将帮助我完成以下任务:

我想在我的数据库中存储以下字符串和类似的字符串.当创建,更新,删除对象等时,我想运行所有字符串,检查CRUD事件是否与字符串的条件匹配,如果是,则运行指定的操作.

When a new ticket is created and it's category=6 then notify user 1234 via email
Run Code Online (Sandbox Code Playgroud)

我打算创建一个构建这些字符串的接口,因此它不需要是一个人类可读的字符串.如果JSONish结构更好,或者工具有现有语言,那就太棒了.我有点想法:

{
  object_types: ['ticket'],
  events: ['created', 'updated'],
  conditions:'ticket.category=6',
  actions: 'notify user',
  parameters: {
    user:1234,
    type:'email'
  }
}
Run Code Online (Sandbox Code Playgroud)

所以基本上,我需要以下内容:

  1. 监视CRUD事件 - 如果该工具有办法实现这一点会很好,但如果该工具本身不提供它,我可以在这里使用Rails的ModelObservers

  2. 找到所有匹配的"规则" - 这是我的主要未知数......

  3. 执行请求的方法/参数 - 理想情况下,这将在我的Ruby代码中定义为类/方法

我应该调查哪些现有工具?

编辑:

感谢你们到目前为止的回复!我真的很感谢你指着我走正确的道路.

这里的用例是我们有许多不同的客户端,有许多不同的业务规则.对于适用于所有客户端的规则,我可以轻松地在代码中创建它们(使用像Ruleby这样的东西),但是对于所有特定于客户端的规则,我想将它们存储在数据库中.理想情况下,规则可以写入一次,存储在代码中或DB中,然后运行(使用Resque来提高性能).

在这一点上,看起来我将不得不自己滚动,所以任何关于最好的方法或任何我应该调查的工具的想法都将非常感激.

再次感谢!

parsing rule-engine ruby-on-rails event-handling

4
推荐指数
1
解决办法
1268
查看次数

创建规则引擎的最佳设计模式

假设我必须设计一个规则引擎,根据静态配置规则,责任链在运行时发生变化。实现这个问题的最佳设计模式是什么?

例如,根据某些配置,流中的一组事件可以 (1) 过滤,(2) 划分为子集 (3) 修改

对于每个流,客户可以选择全部三个或三个中的一些或三个都不选择。

因此,我的组装管道应该在运行时根据每个流的配置进行配置。

哪个是实现这一目标的最佳设计模式?

java design-patterns rule-engine stream-processing

4
推荐指数
1
解决办法
3732
查看次数

使用UI编写JBoss Drools规则

我们正在使用JBoss Drools将一些特别容易在我们正在构建的服务中更改业务逻辑的外部化.

这些规则可以由我们的开发人员创建和维护,这非常有效,我们拥有良好的集成和集成工作流程.

我们希望将其用途扩展到需要非常高级别定制的新服务.基本上,"专家用户"需要能够设置两种不同的规则:

  1. "标准"规则 - 这些是我们知道的常见要求的几乎隐含的规则,我们可以构建用于设置的UI,例如仅允许在两个日期之间进行某些操作等.

  2. "自定义"规则 - 完全脱离墙要求尽管我们可以尝试并预期我们宁愿让人们编写并测试他们自己的规则:)

我的问题是,是否有可能(实际上还有什么可以作为例子)将Drools用于1和2?基本上,要有一个固定的UI应用程序作者Drools规则有效并且在我们的UI中嵌入了"自由文本"规则编辑器?

任何建议赞赏!

java jboss rule-engine drools

4
推荐指数
1
解决办法
3550
查看次数

在Drools Guvnor维护drl(技术)规则

我是业务规则世界的新手,但我认为我已经理解了Drools Expert和Drools Guvnor的概念,但是我仍然有点混淆了如何/何时/为什么使用Guvnor与Expert相比.而且,他们是否相互排斥或者是否有能力甚至更愿意并肩工作.下面是一些突出的主题,这些主题可以解释我的问题背后的一些解释,主要集中在应用程序的可维护性上.

Guvnor是否具有Expert中可用的所有功能以及更多功能?

我知道Guvnor是业务规则管理系统(BRMS),它控制存储(包括版本控制)规则和公开服务以使用其他应用程序.Guvnor包含用于生成规则的UI(文本和图形)以及用于运行它们的引擎,因此从这个意义上讲,我猜它包含Expert系统的所有功能.根据我的要求,我很确定Guvnor是我需要的,但是之后我还需要Drools Expert吗?

或者换句话说,Drools Expert是否提供了Guvnor中没有的东西?

Guvnor中的测试规则

我见过的关于Drools的许多教程都是从TDD示例开始的,其中规则是使用简单的jUnit测试进行测试的.一旦将规则导入Guvnor(或者只是在那里生成),有没有办法为它使用/编写单元测试?

是否应该仅通过公开接口(REST)进行测试?

如果系统的用户要开发自己的规则,我不希望他们编写任何测试.主要关注"核心"规则及其可维护性.

如果是"核心"规则,它们是否应存储在版本控制系统中,并在整个系统的预定更新中导入Guvnor?在这种情况下,可以为这些规则编写单元测试,并在构建周期中自动执行.

提前致谢.

rule-engine drools drools-guvnor

4
推荐指数
1
解决办法
3561
查看次数

如何将 Drools 业务规则引擎与 python 应用程序一起使用?

我需要一个可扩展的业务规则引擎,我认为 Drools 是一个不错的引擎。我如何将这个 Drools 业务规则引擎与 python 应用程序一起使用?

如果Drools不适合python,请推荐一个适合python的好方法?

提前致谢,杰林·约翰

python rule-engine drools business-rules

4
推荐指数
1
解决办法
2万
查看次数

动态业务规则引擎为ruby on rails

我有一个需要"动态业务规则"引擎的应用程序.一些业务规则经常更改.其中一些适用于一组有限的商业帐户.例如:我的客户根据他们的规模,销售人员数量,产品数量,位置等有一个他们对商店进行限定的流程.但他管理不同的帐户,每个帐户为每个属性提供不同的"权重".

如何使用Ruby实现此引擎?我知道Java有流口水,但我觉得流口水很烦人而且很复杂.而且我更喜欢不必使用JRuby ......

问候,

Rubem

rule-engine ruby-on-rails drools business-rules

3
推荐指数
1
解决办法
4645
查看次数

以drools传递参数

如何在下面的drools规则中传递一个参数来设置age的比较值(18应该是动态的)

package com.rule.models

import com.rule.models.User

rule "AgeCheck"
when
    $user: User( age < 18 )
then
    System.out.println("Warning, "+$user.getName()+" is below age!");
end
Run Code Online (Sandbox Code Playgroud)

java parameters jboss rule-engine drools

3
推荐指数
2
解决办法
8402
查看次数

在解决方案中实现业务规则引擎的方法或模式?

我在一家年轻的银行公司工作.我们的解决方案(.NET)有一个重要的技术债务,所以我们按照DDD原则重构它.我们计划使用(a)业务规则引擎.业务规则涉及会计目的,营销目的,风险目的,法律事务......我们计划将BRE由业务赞助.

我正在寻找成功采用BRE或BRE组合的人的一些反馈意见?

  • 是否有管理BR存储库的工具?
  • 是否有任何模式可能有助于分离流程和BR?
  • 您是否知道一些撰写有关将解决方案迁移到BRE的作者?
  • 您是否认为采用独特的BRE可以满足所有域的需求,或者为每个域构建自定义解决方案更好?
  • 常见的陷阱是什么?

谢谢,

architecture enterprise design-patterns rule-engine business-rules

3
推荐指数
1
解决办法
979
查看次数