2016-07-27 63 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做到這一點除外)及在需要時調用它。

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