слюни, правила прямо в яве - PullRequest
0 голосов
/ 04 января 2019

Есть ли способ использовать drools, напрямую и полностью реализуя условие правил в java, как это возможно в

https://github.com/j-easy/easy-rules (см. Раздел «декларативный способ» и раздел «программный способ»))

что-то в этом роде:

@Rule(name = "weather rule", description = "if it rains then take an umbrella" )
public class WeatherRule {

@Condition
public boolean itRains(@Fact("rain") boolean rain) {
    return rain;
}

@Action
public void takeAnUmbrella() {
    System.out.println("It rains, take an umbrella!");
}
}

или, может быть,

Rule weatherRule = new RuleBuilder()
    .name("weather rule")
    .description("if it rains then take an umbrella")
    .when(facts -> facts.get("rain").equals(true))
    .then(facts -> System.out.println("It rains, take an umbrella!"))
    .build();

1 Ответ

0 голосов
/ 11 января 2019

Недавно была добавлена ​​новая функция, которая позволяет пользователям представлять правила в модели Java [1].Вы можете использовать эту функцию для создания правил в простой Java.Существует тестовый класс, который вы можете проверить, чтобы увидеть несколько примеров.Смотрите здесь [2].У вас есть возможность выбрать из PatternDSL или FlowDSL (что подходит вам лучше).

Чтобы получить KieBase с правилами Java, вы можете сделать это (как указано в связанном документе):

Model model = new ModelImpl().addRule( rule );
KieBase kieBase = KieBaseBuilder.createKieBaseFromModel( model );

[1] https://docs.jboss.org/drools/release/7.15.0.Final/drools-docs/html_single/index.html#executable-model-con_kie-apis
[2]https://github.com/kiegroup/drools/blob/3826ee0c95fe139041880f52f3e00309b7907871/drools-model/drools-canonical-model/src/test/java/org/drools/model/FlowDSLTest.java#L21

...