Search in sources :

Example 21 with Rule

use of org.kie.api.definition.rule.Rule in project drools by kiegroup.

the class IncrementalCompilationTest method createAndDeployAndTest.

public static void createAndDeployAndTest(KieContainer kc, String version, String header, String drls, String... ruleNames) {
    if (ruleNames == null) {
        ruleNames = new String[0];
    }
    KieServices ks = KieServices.Factory.get();
    StringBuilder sbuilder = new StringBuilder();
    sbuilder.append(header);
    sbuilder.append(drls);
    ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", version);
    KieModule km = createAndDeployJar(ks, releaseId1, sbuilder.toString());
    kc.updateToVersion(km.getReleaseId());
    KiePackage kpkg = kc.getKieBase().getKiePackage("org.drools.compiler");
    assertEquals(ruleNames.length, kpkg.getRules().size());
    Map<String, Rule> rules = rulestoMap(kpkg.getRules());
    int i = 0;
    for (String ruleName : ruleNames) {
        assertEquals(ruleName, i++, ((RuleImpl) rules.get(ruleName)).getLoadOrder());
    }
}
Also used : KiePackage(org.kie.api.definition.KiePackage) KieServices(org.kie.api.KieServices) ReleaseId(org.kie.api.builder.ReleaseId) Rule(org.kie.api.definition.rule.Rule) InternalKieModule(org.drools.compiler.kie.builder.impl.InternalKieModule) KieModule(org.kie.api.builder.KieModule)

Example 22 with Rule

use of org.kie.api.definition.rule.Rule in project drools by kiegroup.

the class AddRemoveRulesTest method testRemoveChildLeftTupleThatWasLastWithMultipleData.

@Test
public void testRemoveChildLeftTupleThatWasLastWithMultipleData() {
    final String[] rules = getRules3Pattern();
    final KieSession kieSession = TestUtil.createSession(rules[0], rules[1]);
    try {
        final List resultsList = new ArrayList();
        kieSession.setGlobal("list", resultsList);
        TestUtil.insertFacts(kieSession, 3, 4, 5);
        kieSession.fireAllRules();
        Assertions.assertThat(resultsList).containsOnly(TestUtil.RULE1_NAME, TestUtil.RULE2_NAME);
        resultsList.clear();
        TestUtil.removeRules(kieSession, TestUtil.RULES_PACKAGE_NAME, TestUtil.RULE2_NAME);
        kieSession.fireAllRules();
        final Map<String, Rule> rulesMap = rulestoMap(kieSession.getKieBase());
        final InternalFactHandle fh1 = (InternalFactHandle) kieSession.getFactHandle(3);
        final InternalFactHandle fh2 = (InternalFactHandle) kieSession.getFactHandle(4);
        final InternalFactHandle fh3 = (InternalFactHandle) kieSession.getFactHandle(5);
        final LeftTuple lt1 = fh1.getFirstLeftTuple();
        final LeftTuple lt1_1 = lt1.getFirstChild();
        final LeftTuple lt1_2 = lt1_1.getHandleNext();
        final LeftTuple lt1_3 = lt1_2.getHandleNext();
        assertNotNull(lt1_1);
        assertNotNull(lt1_2);
        assertNotNull(lt1_3);
        assertSame(lt1_3, lt1.getLastChild());
        assertSame(lt1_2, lt1_3.getHandlePrevious());
        assertSame(lt1_1, lt1_2.getHandlePrevious());
        assertEquals(1, lt1_1.getTupleSink().getAssociatedRuleSize());
        assertTrue(lt1_1.getTupleSink().isAssociatedWith(rulesMap.get(TestUtil.RULE1_NAME)));
        assertNull(lt1_1.getPeer());
        assertEquals(1, lt1_2.getTupleSink().getAssociatedRuleSize());
        assertTrue(lt1_2.getTupleSink().isAssociatedWith(rulesMap.get(TestUtil.RULE1_NAME)));
        assertNull(lt1_2.getPeer());
        assertEquals(1, lt1_3.getTupleSink().getAssociatedRuleSize());
        assertTrue(lt1_3.getTupleSink().isAssociatedWith(rulesMap.get(TestUtil.RULE1_NAME)));
        assertNull(lt1_3.getPeer());
        final RightTuple rt1 = fh3.getFirstRightTuple();
        final LeftTuple rt1_1 = rt1.getLastChild();
        assertSame(lt1_1, rt1_1);
        final LeftTuple rt1_2 = rt1_1.getRightParentPrevious();
        final LeftTuple rt1_3 = rt1_2.getRightParentPrevious();
        assertNotNull(rt1_1);
        assertNotNull(rt1_2);
        assertNotNull(rt1_3);
        assertSame(rt1_2, rt1_3.getRightParentNext());
        assertSame(rt1_1, rt1_2.getRightParentNext());
        assertEquals(1, rt1_1.getTupleSink().getAssociatedRuleSize());
        assertTrue(rt1_1.getTupleSink().isAssociatedWith(rulesMap.get(TestUtil.RULE1_NAME)));
        assertNull(rt1_1.getPeer());
        assertEquals(1, rt1_2.getTupleSink().getAssociatedRuleSize());
        assertTrue(rt1_2.getTupleSink().isAssociatedWith(rulesMap.get(TestUtil.RULE1_NAME)));
        assertNull(rt1_2.getPeer());
        assertEquals(1, rt1_3.getTupleSink().getAssociatedRuleSize());
        assertTrue(rt1_3.getTupleSink().isAssociatedWith(rulesMap.get(TestUtil.RULE1_NAME)));
        assertNull(rt1_3.getPeer());
    } finally {
        kieSession.dispose();
    }
}
Also used : ArrayList(java.util.ArrayList) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Rule(org.kie.api.definition.rule.Rule) InternalFactHandle(org.drools.core.common.InternalFactHandle) LeftTuple(org.drools.core.reteoo.LeftTuple) RightTuple(org.drools.core.reteoo.RightTuple) Test(org.junit.Test)

Example 23 with Rule

use of org.kie.api.definition.rule.Rule in project drools by kiegroup.

the class AddRemoveRulesTest method testRemoveRightTupleThatWasLast.

@Test
public void testRemoveRightTupleThatWasLast() {
    final String[] rules = getRules2Pattern();
    final KieSession kieSession = TestUtil.createSession(rules);
    try {
        final List resultsList = new ArrayList();
        kieSession.setGlobal("list", resultsList);
        TestUtil.insertFacts(kieSession, 3);
        kieSession.fireAllRules();
        Assertions.assertThat(resultsList).containsOnly(TestUtil.RULE1_NAME, TestUtil.RULE2_NAME);
        resultsList.clear();
        TestUtil.removeRules(kieSession, TestUtil.RULES_PACKAGE_NAME, TestUtil.RULE2_NAME);
        kieSession.fireAllRules();
        final Map<String, Rule> rulesMap = rulestoMap(kieSession.getKieBase());
        final InternalFactHandle fh1 = (InternalFactHandle) kieSession.getFactHandle(3);
        assertNotNull(fh1.getFirstRightTuple());
        assertEquals(1, fh1.getFirstRightTuple().getTupleSink().getAssociatedRuleSize());
        assertTrue(fh1.getFirstRightTuple().getTupleSink().isAssociatedWith(rulesMap.get(TestUtil.RULE1_NAME)));
    } finally {
        kieSession.dispose();
    }
}
Also used : ArrayList(java.util.ArrayList) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Rule(org.kie.api.definition.rule.Rule) InternalFactHandle(org.drools.core.common.InternalFactHandle) Test(org.junit.Test)

Example 24 with Rule

use of org.kie.api.definition.rule.Rule in project drools by kiegroup.

the class AddRemoveRulesTest method testRemoveRightTupleThatWasFirst.

@Test
public void testRemoveRightTupleThatWasFirst() {
    final String[] rules = getRules2Pattern();
    final KieSession kieSession = TestUtil.createSession(rules);
    try {
        final List resultsList = new ArrayList();
        kieSession.setGlobal("list", resultsList);
        TestUtil.insertFacts(kieSession, 3);
        kieSession.fireAllRules();
        Assertions.assertThat(resultsList).containsOnly(TestUtil.RULE1_NAME, TestUtil.RULE2_NAME);
        resultsList.clear();
        TestUtil.removeRules(kieSession, TestUtil.RULES_PACKAGE_NAME, TestUtil.RULE1_NAME);
        kieSession.fireAllRules();
        final Map<String, Rule> rulesMap = rulestoMap(kieSession.getKieBase());
        final InternalFactHandle fh1 = (InternalFactHandle) kieSession.getFactHandle(3);
        assertNotNull(fh1.getFirstRightTuple());
        assertEquals(1, fh1.getFirstRightTuple().getTupleSink().getAssociatedRuleSize());
        assertTrue(fh1.getFirstRightTuple().getTupleSink().isAssociatedWith(rulesMap.get(TestUtil.RULE2_NAME)));
    } finally {
        kieSession.dispose();
    }
}
Also used : ArrayList(java.util.ArrayList) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Rule(org.kie.api.definition.rule.Rule) InternalFactHandle(org.drools.core.common.InternalFactHandle) Test(org.junit.Test)

Example 25 with Rule

use of org.kie.api.definition.rule.Rule in project drools by kiegroup.

the class QueryTest method testQueryRemoval.

@Test
public void testQueryRemoval() throws Exception {
    KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("simple_query_test.drl"));
    KieSession session = createKieSession(kbase);
    final Cheese stilton = new Cheese("stinky", 5);
    session.insert(stilton);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, true);
    org.kie.api.runtime.rule.QueryResults results = session.getQueryResults("simple query");
    assertEquals(1, results.size());
    Rule rule = kbase.getKiePackage("org.drools.compiler.test").getRules().iterator().next();
    assertEquals("simple query", rule.getName());
    kbase.removeQuery("org.drools.compiler.test", "simple query");
    assertTrue(kbase.getKiePackage("org.drools.compiler.test").getRules().isEmpty());
    try {
        results = session.getQueryResults("simple query");
    } catch (Exception e) {
        assertTrue(e.getMessage().endsWith("does not exist"));
    }
}
Also used : QueryResults(org.kie.api.runtime.rule.QueryResults) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.compiler.Cheese) Rule(org.kie.api.definition.rule.Rule) IOException(java.io.IOException) Test(org.junit.Test)

Aggregations

Rule (org.kie.api.definition.rule.Rule)30 Test (org.junit.Test)23 ArrayList (java.util.ArrayList)13 KieSession (org.kie.api.runtime.KieSession)11 List (java.util.List)10 InternalFactHandle (org.drools.core.common.InternalFactHandle)8 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)8 KieBase (org.kie.api.KieBase)7 KiePackage (org.kie.api.definition.KiePackage)7 Map (java.util.Map)5 LeftTuple (org.drools.core.reteoo.LeftTuple)5 HashMap (java.util.HashMap)4 InternalWorkingMemory (org.drools.core.common.InternalWorkingMemory)4 RuleImpl (org.drools.core.definitions.rule.impl.RuleImpl)4 KieServices (org.kie.api.KieServices)4 HashSet (java.util.HashSet)3 Person (org.drools.compiler.Person)3 ReleaseId (org.kie.api.builder.ReleaseId)3 KieHelper (org.kie.internal.utils.KieHelper)3 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2