Search in sources :

Example 11 with Rules

use of org.jeasy.rules.api.Rules in project easy-rules by j-easy.

the class FactInjectionTest method rulesShouldBeExecutedWhenFactsAreCorrectlyInjected.

@Test
public void rulesShouldBeExecutedWhenFactsAreCorrectlyInjected() throws Exception {
    // Given
    Facts facts = new Facts();
    facts.put("rain", true);
    facts.put("age", 18);
    WeatherRule weatherRule = new WeatherRule();
    AgeRule ageRule = new AgeRule();
    Rules rules = new Rules(weatherRule, ageRule);
    // When
    RulesEngine rulesEngine = new DefaultRulesEngine();
    rulesEngine.fire(rules, facts);
    // Then
    assertThat(ageRule.isExecuted()).isTrue();
    assertThat(weatherRule.isExecuted()).isTrue();
}
Also used : RulesEngine(org.jeasy.rules.api.RulesEngine) Rules(org.jeasy.rules.api.Rules) Facts(org.jeasy.rules.api.Facts) Test(org.junit.Test)

Example 12 with Rules

use of org.jeasy.rules.api.Rules in project easy-rules by j-easy.

the class NullFactAnnotationParameterTest method testNullFact.

@Test
public void testNullFact() {
    Rules rules = new Rules();
    rules.register(new AnnotatedParametersRule());
    Facts facts = new Facts();
    facts.put("fact1", new Object());
    facts.put("fact2", null);
    Map<org.jeasy.rules.api.Rule, Boolean> results = rulesEngine.check(rules, facts);
    for (boolean b : results.values()) {
        Assert.assertTrue(b);
    }
}
Also used : Rule(org.jeasy.rules.annotation.Rule) Rules(org.jeasy.rules.api.Rules) Facts(org.jeasy.rules.api.Facts) Test(org.junit.Test)

Example 13 with Rules

use of org.jeasy.rules.api.Rules in project easy-rules by j-easy.

the class NullFactAnnotationParameterTest method testMissingFact.

@Test
public void testMissingFact() {
    Rules rules = new Rules();
    rules.register(new AnnotatedParametersRule());
    Facts facts = new Facts();
    facts.put("fact1", new Object());
    Map<org.jeasy.rules.api.Rule, Boolean> results = rulesEngine.check(rules, facts);
    for (boolean b : results.values()) {
        Assert.assertFalse(b);
    }
}
Also used : Rule(org.jeasy.rules.annotation.Rule) Rules(org.jeasy.rules.api.Rules) Facts(org.jeasy.rules.api.Facts) Test(org.junit.Test)

Example 14 with Rules

use of org.jeasy.rules.api.Rules in project easy-rules by j-easy.

the class Launcher method main.

public static void main(String[] args) {
    // define facts
    Facts facts = new Facts();
    facts.put("rain", true);
    // define rules
    WeatherRule weatherRule = new WeatherRule();
    Rules rules = new Rules();
    rules.register(weatherRule);
    // fire rules on known facts
    RulesEngine rulesEngine = new DefaultRulesEngine();
    rulesEngine.fire(rules, facts);
}
Also used : DefaultRulesEngine(org.jeasy.rules.core.DefaultRulesEngine) DefaultRulesEngine(org.jeasy.rules.core.DefaultRulesEngine) RulesEngine(org.jeasy.rules.api.RulesEngine) Rules(org.jeasy.rules.api.Rules) Facts(org.jeasy.rules.api.Facts)

Example 15 with Rules

use of org.jeasy.rules.api.Rules in project easy-rules by j-easy.

the class Launcher method main.

public static void main(String[] args) {
    // define facts
    Facts facts = new Facts();
    facts.put("temperature", 30);
    // define rules
    Rule airConditioningRule = new RuleBuilder().name("air conditioning rule").when(itIsHot()).then(decreaseTemperature()).build();
    Rules rules = new Rules();
    rules.register(airConditioningRule);
    // fire rules on known facts
    RulesEngine rulesEngine = new InferenceRulesEngine();
    rulesEngine.fire(rules, facts);
}
Also used : InferenceRulesEngine(org.jeasy.rules.core.InferenceRulesEngine) InferenceRulesEngine(org.jeasy.rules.core.InferenceRulesEngine) RulesEngine(org.jeasy.rules.api.RulesEngine) Rule(org.jeasy.rules.api.Rule) RuleBuilder(org.jeasy.rules.core.RuleBuilder) Rules(org.jeasy.rules.api.Rules) Facts(org.jeasy.rules.api.Facts)

Aggregations

Rules (org.jeasy.rules.api.Rules)18 Facts (org.jeasy.rules.api.Facts)16 RulesEngine (org.jeasy.rules.api.RulesEngine)13 Test (org.junit.Test)10 DefaultRulesEngine (org.jeasy.rules.core.DefaultRulesEngine)6 Rule (org.jeasy.rules.annotation.Rule)2 File (java.io.File)1 Rule (org.jeasy.rules.api.Rule)1 InferenceRulesEngine (org.jeasy.rules.core.InferenceRulesEngine)1 RuleBuilder (org.jeasy.rules.core.RuleBuilder)1 RulesEngineParameters (org.jeasy.rules.core.RulesEngineParameters)1 MVELRule (org.jeasy.rules.mvel.MVELRule)1 Before (org.junit.Before)1