我有以下用例: 有许多(比如说10000)帐户,每个帐户(可以通过id标识)应该有自己的一套规则。不同账户的规则可能相互矛盾。出于性能原因,如果新事实(我知道只与帐户xyz相关)只会根据帐户xyz的规则进行检查,那将是理想的。
现在我对drools的了解很少,只有一个规则空间和一个事实空间。那是对的吗?这意味着我必须为每个帐户制定特殊规则,如
rule "rule 1 for account xyz"
when
$acc: Account(id == "xyz")
<more conditions go here>
then
$acc.doSomething();
end
这将导致大量规则并可能导致执行速度变慢。 你能否告诉我如何以有效的方式处理这个用例?
答案 0 :(得分:1)
现在我对drools的了解很少,只有一个规则空间和一个事实空间。这是对的吗?
不,这不正确。您可以在您需要的特定规则集中拥有多个知识库(Drools 6.x中的KieBases)。 从特定的知识库中,您可以创建所需的会话(事实空间)。
在您的情况下,为您的每个帐户设置特定的知识库似乎是正确的决定。
希望它有所帮助,