drools对象实例的规则

时间:2014-04-13 09:37:00

标签: drools use-case

我有以下用例: 有许多(比如说10000)帐户,每个帐户(可以通过id标识)应该有自己的一套规则。不同账户的规则可能相互矛盾。出于性能原因,如果新事实(我知道只与帐户xyz相关)只会根据帐户xyz的规则进行检查,那将是理想的。

现在我对drools的了解很少,只有一个规则空间和一个事实空间。那是对的吗?这意味着我必须为每个帐户制定特殊规则,如

rule "rule 1 for account xyz"
    when
        $acc: Account(id == "xyz")
        <more conditions go here>
    then
        $acc.doSomething();
    end

这将导致大量规则并可能导致执行速度变慢。 你能否告诉我如何以有效的方式处理这个用例?

1 个答案:

答案 0 :(得分:1)

  

现在我对drools的了解很少,只有一个规则空间和一个事实空间。这是对的吗?

不,这不正确。您可以在您需要的特定规则集中拥有多个知识库(Drools 6.x中的KieBases)。 从特定的知识库中,您可以创建所需的会话(事实空间)。

在您的情况下,为您的每个帐户设置特定的知识库似乎是正确的决定。

希望它有所帮助,