Выполнение нескольких правил в drools 5.x - PullRequest
0 голосов
/ 21 сентября 2011

Я немного новичок в слюнях. У меня есть 2 правила, а именно DateYYYYMMDD и TotalChargesAndTax в моем файле drl. Я использую следующий синтаксис для выполнения 2 правил из моего основного метода.

    Command<?> syntacticValidation = new FireAllRulesCommand(
                    new RuleNameEqualsAgendaFilter("DateYYYYMMDD"));                
            Command<?> semanticValidation = new FireAllRulesCommand(
                new RuleNameEqualsAgendaFilter("TotalChargesAndTax"));

            List<Command> commands = new ArrayList<Command>();
            commands.add(semanticValidation);
            commands.add(syntacticValidation);

            session.execute(CommandFactory
                    .newBatchExecution(commands));

Но когда я запускаю свое приложение, выполняется только правило TotalChargesAndTax, а правило DateYYYYMMDD пропускается. Если я меняю положение командных объектов в ArayList, как показано ниже,

    commands.add(syntacticValidation);
    commands.add(semanticValidation);

затем выполняется правило DateYYYYMMDD, а правило TotalChargesAndTax пропускается. Есть ли способ выполнить оба правила и выполнить последствия обоих правил? На данный момент выполняется только одно последствие в зависимости от того, какая команда является первой в списке массивов.

1 Ответ

1 голос
/ 22 сентября 2011

Когда вы пишете правила, вы не можете сказать, какое правило должно срабатывать.Правила будут выбираться механизмом правил на основе фактов / поносов, которые вы вставляете в сеанс знаний.Я рекомендую вам не использовать фильтры Повестки дня, чтобы попытаться форсировать выполнение правил.Множество правил будут выполняться автоматически, если вставленные вами объекты соответствуют условной стороне ваших правил (КОГДА).Если вы хотите поделиться тем, как выглядят ваши правила, мы можем вам помочь.Приветствия

...