2016-07-27 141 views
1

我想在drools规则文件(mvel)中声明一个全局变量。这是因为这个全局在所有规则中被用作另一个函数的参数。我可以很容易地在每次调用该函数时都明确地传递这个字符串,但是如果字符串改变,这会很难。Drools:如何声明和分配全局

我想我可以做:

global String someStr = "some string"; 

但是在编译时,我得到:

[11,31]: [ERR 107] Line 11:31 mismatched input '=' expecting one of the following tokens: '[package, import, global, declare, function, rule, query]'. 

所以,很显然,我不能将这种方式。我似乎也无法在该类中声明一个类和一个字符串来引用该类。

所以我发现我可以这样的东西,看来愚蠢:

global String someStr; 
rule "Initialize" 
when 
then 
    someStr = "some string"; 
end 

这似乎是工作,但是,这将记录此规则匹配的每一个时间(总是)只分配一个全球性的。

有没有更好的办法,我失踪?

+0

如何阅读Drools手册中的7.5.2节全球?在您的情况下可能还需要其他细节,因此我认为阅读文档会有所收获。 – laune

+0

您是否认为我会在未阅读手册的情况下发布?来吧。做这件事的愚蠢的方式,一个真正执行的规则,是从手册直接! – RallyRabbit

+0

哪个手册,哪一部分?你一定是在混淆事物。 - “这将记录每一次”的说法是不正确的。 – laune

回答

-1

因此,似乎有声明的全局和规则,始终是真正的创建返回字符串的函数在我看来(坏主意) 2)分配给它没有其他办法比 1做到这一点除外)及在需要时调用它。

有点令人失望。全局似乎非常有限。