我一直在看看 WF规则引擎NxBRE 并且它似乎很有趣但是我不确定以及它如何将执行在现实生活情况。

一个我心里有东西就像一个事实基础之间10和100万的事实和规则,如:

对象。场 < 5000和对象。场>1000和IsProperty(对象。Field2)

我使用的C#。网。

编辑: 我没有让自己清楚(完全是我的错):)我有我自己的规则评价系统,使用网环算法本身...它是相当快的,这可以评估的10万事实的情况,在大约10秒钟...如何快速商业解决方案在comaparison?

有帮助吗?

解决方案

简短的回答是我所期望的规则的发动机超越一个必须解决方案一旦规则的数量超过了一些(我不知道确切的数值)的阈值。

该规则的一部分,规则引擎设置的条件和行动。一个单一的规则(几乎)在功能上等同于一个如果随后发言。真正的权力的规则引擎照过,由于该声明的性质的引擎。

在一个传统的必要程序,你们的代码如何逻辑进行评估。当使用引擎的规则,确定如何许多的发言进行评估。我只有使用发动机似的 杰西剪辑, 使用 网环算法 图弄清哪些规则开火。这是效率的规则发射的算法,是要推动更多的有效规则引擎将执行上传统的必要的解决方案。

网环算法的设计是以牺牲存储器的增加速度。它维持一个网络的节点映射左轴侧模式的规则。更多的规则和事实你好你的网环网络将胜过您必须解决方案,因为网环性能在理论上是独立的数规则系统。

你正在计划大量的事实。如果你的计划有很多的规则,可能会遇到存储器的问题。

看看马丁*福勒的文章 规则引擎.这是一个很好的和(非常)短的概述。

那里是 一个长时间的讨论 对Microsoft的业务规则引擎(MS-BRE)adn它的性能比较有杰西&流口水。几个要点提出了下划线的为什么这些评价是很难的。

其他提示

在“谣言,这不是一个忠实的rete网实现”是指关于索赔的业务规则引擎包含的BizTalk Server中的古老问题,未能正确执行Rete算法。索赔是不正确的,顺便说一句。该BRE肯定不会实施Rete算法。该WF规则引擎是一个完全不同的技术,以BRE。正如卡尔所说,WF规则引擎并没有在所有的,无论是正确或不正确执行Rete算法。这是一个什么样可以宽松地被称为“顺序”引擎的例子。它实现了正向推理的一种形式。然而,真正的问题比这更复杂一点。 “前进”位指的是逻辑推理引擎可以做的类型。这个词是不是真的告诉你关于涉及在运行机制事情。真正的问题是关于发动机有多好是推理。是的,WF可以转发链,并且是可以推理,但只能在很有限的方式。一个Rete算法引擎提供更强的推理能力,但其实这是无关使用Rete算法是真的只是为某一类规则引擎的优化,称为“生产”体系。它是一个生产系统可以理智战胜了一个整体“的事实基础”,而连续WF规则引擎只能直接理智战胜的一个事实大致相当于顺便做。有时会出现问题,因为人们混淆了特定的运行机制,使向前推进的逻辑过程链链接本身(毕竟,这是一个相当微妙的区别)。在WF的相关机构当然可以被用来原因在“转发”的方式在有限程度上,但它的主要用途是允许顺序规则来在半声明的方式来表示 - 即,规则可以在任何顺序中表达不管这些规则之间的程序依赖性。这已无关,与正向推理,或者更确切地说,向链接的loical过程。

问题是一个有点复杂和模糊的,我知道一些在MS的家伙不跟我同意这(我们讨论它往往不够),但是这是我采取的就可以了。

有一件事情是非常清楚的是,WF规则引擎,它实际上实现了自己的解析器和,因此,在其表现有一定的限制确实有性能方面的考虑,因为它几乎做字符串解析来在运行时解释规则转换成代码(执行动作)。

我们使用运行24万次测试通过1500条规则在7分钟内的JBoss Drools的两个JVM上运行的漂亮的上该死的平均服务器。那是,如果你遇到的每个组合三十多6个十亿测试运行,而大多数测试中都有多个逻辑的选择。 (你的例子有三种选择,例如。)

您也必须考虑如何将数据传递到您的规则引擎,像曾经的规则开始火了,一些规则将调用一个DB,那么这无疑将有性能问题。最好的做法是给需要的在开始自己的规则执行的所有数据,虽然这样也有一些缺点了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top