我有幾乎100規則的規則文件(.drl)。不過,我想讓用戶能夠靈活選擇哪些規則在任何時候都有效。 我在想如果有辦法將所需的規則導入單獨的.drl文件,以便用戶可以選擇並選擇規則如何從主規則文件導入規則
是否可以將一個.drl文件的規則導入其他.drl文件?如果不是,我如何確保用戶可以選擇/選擇在任何時候都有效的規則。
另外,在一個文件中有100個規則是無效的,並且將它們用單行/名稱引用將是可讀的。
提示pl?
我有幾乎100規則的規則文件(.drl)。不過,我想讓用戶能夠靈活選擇哪些規則在任何時候都有效。 我在想如果有辦法將所需的規則導入單獨的.drl文件,以便用戶可以選擇並選擇規則如何從主規則文件導入規則
是否可以將一個.drl文件的規則導入其他.drl文件?如果不是,我如何確保用戶可以選擇/選擇在任何時候都有效的規則。
另外,在一個文件中有100個規則是無效的,並且將它們用單行/名稱引用將是可讀的。
提示pl?
對於從一個DRL到另一個DRL的規則沒有「導入」。
如何解決您的問題取決於所需的規則選擇粒度。
如果有少量的靜態組合,您可以構建N個規則庫並讓用戶選擇一個規則庫。這是乾淨的,可控和可測試的。
如果有多個不相交組,請使用議程組。用戶選擇議程組,只有該組中的規則處於活動狀態。 (如果這些集合不是不相交的,則仍然可以使用議程組,但需要在不同議程組中使用不同名稱的規則進行復制,否則不建議使用不同名稱)。設計一些機制。例如:
rule "rule1"
when
Select(name == "rule1")
All(...)
Original(...)
Patterns(...)
then ... end
插入新的Select(「rule1」)選擇,縮回縮進。根據選擇的方式應該進行,還可以實現「功能」:
rule "rule x" # part of feature f1 and f2
when
Select(featureSet contains Feature.f1 || Feature.f2)
All(...)
Original(...)
Patterns(...)
then ... end
您可以編寫規則來檢查功能的組合,例如
rule "feature check"
when
Select(featureSet contains Feature.black && Feature.white)
then
... cant have black *and* white at the same time ...
end
你能指點我一些關於選擇/全部/原創/模式的文獻或例子嗎?我用/時/結束,沒有任何超越。 –
Select是您必須定義的課程。所有/原創/模式是作爲您未發佈內容的替身,即您規則的內容。 – laune
爲什麼你說「在一個文件中有100條規則是無效的」? 100條規則並不多。 – laune
現在所有規則都集中在一個文件中,它們之間沒有任何關係。我想根據業務領域將這些規則分成不同的.drl文件。 –