2017-07-25 31 views
1

我使用Drools的6.2.0如何將默認焦點移到Drools的MAIN議程中?

我想我的組3組(第一個主要的LAST), 和順序執行這些規則:

  • FIRST
  • MAIN
  • LAST

要做到這一點,我使用議程組 「FIRST」必要的規則中的議程組「最後」。其他規則默認屬於MAIN議程。

我使用這個代碼,以指定的順序:

private void configureAgendas() { 
    Agenda agenda = session.getAgenda(); 

    agenda.getAgendaGroup("LAST").setFocus(); 
    agenda.getAgendaGroup("MAIN").setFocus(); 
    agenda.getAgendaGroup("FIRST").setFocus(); 
} 

我的問題是,主要議程是在END總是執行。 所以,我在主要議程執行兩次:

  • FIRST
  • 主要
  • LAST
  • MAIN(再次執行我想跳過這最後執行。)

我怎樣才能做到這一點?

如果我不能禁用MAIN議程的自動執行, 我該如何創建一個規則來執行最後一條規則?

注:我已經嘗試突出Integer.MIN_VALUE,但我仍然有MAIN議程在此之後執行的規則。

回答

0

如果您確實需要以這種方式控制規則執行,您應該完全避免默認組,並將所有規則放在「one」,「two」,「three」之一中。

請注意,規則屬性外的規則... end對所有後續規則都有效,直到取消或更改,因此不需要爲每個規則設置規則組。

(奇怪的是,有燒製後後主和LAST用盡我不希望這種情況仍主要規則。)

編輯:另一種選擇是在上添加一個規則與最下面優先將焦點改爲FIRST。您可能需要另一個「倒帶」最後一條規則,以便在下一輪結束時再次發射。

+0

謝謝@laune,我也沒有想到這種行爲。而且我的問題是最糟糕的,因爲我無法更改其他100條規則,因爲它們仍然是在生產數據庫中創建的等等。所以,我需要在MAIN議程+我的議程中使用規則... – Topera

+0

增加了另一個避免掉落的技巧進入MAIN。 – laune

相關問題