我們正在開發一個監控應用程序,在這個應用程序中,我們遵循一組應用程序中的任務處理。 我們有一套符合我們需求的流水規則,但我們有一些性能問題(我們可能在會話中容易達到5萬個對象)。 我們正在尋找最好的買賣布爾標誌處理流口水條件
這個問題是關於布爾標誌的使用。 我們正在努力消除大部分org.drools.core.rule.constraint.MvelConstraint: Exception jitting: ...
警告。
我們經常在布爾標誌上發出這樣的警告。
例如:
rule "PropagateDeprecation"
when
$parent:BaseChainStep($parent.Deprecated)
$child:BaseChainStep($parent.Id == $child.Parent, !$child.Deprecated)
then
modify($child){
setDeprecated(true)
}
end
我們警告雙方$ parent.Deprecated和$ child.Deprecated!
我們想了解爲什麼在布爾標誌上有這樣的警告。
我們也想知道警告對組合條件的影響。 例如在:
rule "App1_TriggerExpected"
when $chainStep:App1ChainStep(
HasChain
, HasParent
, !$chainStep.Deprecated
, Status in ("error", "closed")
, Places != null
, Analysis != null)
then
..
end
如果我們的第一個條件HasChain
警告,如何解決時,條款? 是否也評估了其他條件(對所有App1ChainStep對象進行迭代)還是使用某些「索引」來提供幫助?
如果它的問題,我們使用標誌作爲布爾(而不是布爾),以確保默認值爲false。
編輯:
的問題可以被鏈接到擴展類。在我們使用的情況下,我們有這樣的事:
declare BaseChainStep
parent : GUID
deprecated : boolean
end
declare App1ChainStep extends BaseChainStep
// specific App1 fields
end
BaseChainStep領域可以使用App1ChainStep對象或BaseChainStep對象的規則進行操作。
rule "deprecateApp1"
when $app1:App1ChainStep(BusinessLogicCondition)
then
modify($app1) {
setDeprecated(true)
}
end
然後使用「PropagateDeprecation」規則將不推薦標誌傳播到App1子級。
導致警告的布爾標誌在BaseChainStep類中聲明。
我剛剛在我的問題上添加了一個編輯。它可能與擴展類相關聯。 –
我已根據您在DRL代碼中聲明的類插入了對象,並且沿着我在答案中聲明的規則工作得很好。 - 請不要發佈「maybes」 - 如果它不能被複制,它不能被診斷並且不能被治癒。 – laune
好吧,我會重現一個簡單的測試案例和轉發。但我真的有警告標誌明確使用基類的規則(我會確認)。 –