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());
}
}
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();
}
}
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();
}
}
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();
}
}
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"));
}
}
Aggregations