流口水,规则直接在 java
drools, rules directly in java
有没有办法通过在 java 中直接和完整地实施规则条件来使用流口水,就像在
中一样
https://github.com/j-easy/easy-rules(查看 "declarative way" 和 "programmatic way" 部分)
类似的东西:
@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();
最近添加了一项新功能,使用户能够在 Java 模型 [1] 中表示规则。您可以使用此功能以普通 Java 构建规则。有一个测试 class,您可以查看一些示例。请参阅此处 [2]。您可以选择 PatternDSL 或 FlowDSL(哪个更适合您)。
要获得具有 Java 规则的 KieBase,您可以这样做(如链接文档中所述):
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
有没有办法通过在 java 中直接和完整地实施规则条件来使用流口水,就像在
中一样https://github.com/j-easy/easy-rules(查看 "declarative way" 和 "programmatic way" 部分)
类似的东西:
@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();
最近添加了一项新功能,使用户能够在 Java 模型 [1] 中表示规则。您可以使用此功能以普通 Java 构建规则。有一个测试 class,您可以查看一些示例。请参阅此处 [2]。您可以选择 PatternDSL 或 FlowDSL(哪个更适合您)。
要获得具有 Java 规则的 KieBase,您可以这样做(如链接文档中所述):
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