Я использую Drools 5.5.0, и у меня есть таблица решений, показано ниже:Drools - Как проверить факт существует в таблице решений
Когда я запускаю двигатель правил, Я только когда-либо вставляю один SecurityContext
и один раз JSONWrapper
за раз.
Основываясь только на этой таблице, ни одно из моих правил никогда не срабатывает (однако все они оцениваются). Я считаю, что это потому, что для второго условия ячейки пусты для каждой роли/правила.
Это то, что я пытаюсь идти, в DRL:
package com.acme.security.rules.widget;
import com.acme.test.RuleTableTest.SecurityContext;
import com.acme.test.RuleTableTest.JSONWrapper;
rule "widget_accessibility_store_manager"
when
$sc : SecurityContext()
$output : JSONWrapper()
eval($sc.hasRole("Store Manager"))
then
$output.setFeatureVisibility("feature1", "yes");
$output.setFeatureVisibility("feature2", "yes");
$output.setFeatureVisibility("feature3", "yes");
$output.setFeatureVisibility("feature4", "yes");
$output.setFeatureVisibility("feature5", "yes");
end
Это правило срабатывает только штрафом.
Как у меня есть условие в моей таблице решений, которое проверяет наличие объекта без каких-либо ограничений? (Как и в моем DRL) Мне нужен этот объект, поэтому я могу использовать его в качестве вывода в операторах действий. Я также пытаюсь оставить ячейки для каждого правила в столбце пустым для простоты.
Это настолько глупо, что у Drools не было бы этого встроенного в более очевидный способ сделать что-то в таблице решений, что так легко сделать в DRL. Тем не менее, я думаю, что ваше решение стало более идеальным благодаря тому, что в моей ячейке описания я использую формулировку «Mark ниже, чтобы принудительно включить», чтобы было очевидно, что если ничего не существует, правило не будет уволено. Хорошая мысль. –