use of org.drools.compiler.Cheese in project drools by kiegroup.
the class DynamicRulesTest method checkCollectWithDynamicRules.
private void checkCollectWithDynamicRules(String originalDrl) throws java.io.IOException, ClassNotFoundException {
InternalKnowledgeBase kbase = (InternalKnowledgeBase) loadKnowledgeBase(originalDrl);
KieSession session = createKnowledgeSession(kbase);
List<?> list = new ArrayList<Object>();
session.setGlobal("results", list);
session.insert(new Cheese("stilton", 10));
session.insert(new Cheese("brie", 10));
session.insert(new Cheese("stilton", 10));
session.insert(new Cheese("muzzarela", 10));
kbase.addPackages(loadKnowledgePackages("test_CollectDynamicRules2.drl"));
session.fireAllRules();
kbase = SerializationHelper.serializeObject(kbase);
// fire all rules is automatic
assertEquals(1, list.size());
assertEquals(2, ((List<?>) list.get(0)).size());
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class MergePackageTest method testMergingDifferentPackages2.
@Test
public void testMergingDifferentPackages2() throws Exception {
// using different builders
try {
final Collection<KiePackage> kpkgs1 = loadKnowledgePackages("test_RuleNameClashes1.drl");
KiePackage kpkg1 = kpkgs1.stream().filter(pkg -> pkg.getName().equals("org.drools.package1")).findFirst().get();
assertEquals(1, kpkg1.getRules().size());
final Collection<KiePackage> kpkgs2 = loadKnowledgePackages("test_RuleNameClashes2.drl");
KiePackage kpkg2 = kpkgs2.stream().filter(pkg -> pkg.getName().equals("org.drools.package2")).findFirst().get();
assertEquals(1, kpkg2.getRules().size());
InternalKnowledgeBase kbase = (InternalKnowledgeBase) loadKnowledgeBase();
kbase.addPackages(kpkgs1);
kbase.addPackages(kpkgs2);
kbase = SerializationHelper.serializeObject(kbase);
final KieSession ksession = createKnowledgeSession(kbase);
final List results = new ArrayList();
ksession.setGlobal("results", results);
ksession.insert(new Cheese("stilton", 10));
ksession.insert(new Cheese("brie", 5));
ksession.fireAllRules();
assertEquals(results.toString(), 2, results.size());
assertTrue(results.contains("p1.r1"));
assertTrue(results.contains("p2.r1"));
} catch (final KnowledgeBuilderImpl.PackageMergeException e) {
fail("Should not raise exception when merging different packages into the same rulebase: " + e.getMessage());
} catch (final Exception e) {
e.printStackTrace();
fail("unexpected exception: " + e.getMessage());
}
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class MoreBatchExecutionTest method testFireAllRules.
@Test
public void testFireAllRules() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("org/drools/compiler/integrationtests/drl/test_ImportFunctions.drl"), ResourceType.DRL);
if (kbuilder.hasErrors()) {
fail(kbuilder.getErrors().toString());
}
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(kbuilder.getKnowledgePackages());
ksession = createKnowledgeSession(kbase);
final Cheese cheese = new Cheese("stilton", 15);
ksession.insert(cheese);
List<?> list = new ArrayList();
ksession.setGlobal("list", list);
List<Command<?>> commands = new ArrayList<Command<?>>();
commands.add(CommandFactory.newFireAllRules("fired"));
Command<?> cmds = CommandFactory.newBatchExecution(commands);
ExecutionResults result = (ExecutionResults) ksession.execute(cmds);
assertNotNull("Batch execution result is null!", result);
Object firedObject = result.getValue("fired");
assertTrue("Retrieved object is null or incorrect!", firedObject != null && firedObject instanceof Integer);
assertEquals(4, firedObject);
list = (List<?>) ksession.getGlobal("list");
assertEquals(4, list.size());
assertEquals("rule1", list.get(0));
assertEquals("rule2", list.get(1));
assertEquals("rule3", list.get(2));
assertEquals("rule4", list.get(3));
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class QueryBuilderTest method testQuery.
@Test
public void testQuery() throws Exception {
final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl();
final PackageDescr packageDescr = new PackageDescr("p1");
final QueryDescr queryDescr = new QueryDescr("query1");
queryDescr.addParameter("String", "$type");
packageDescr.addRule(queryDescr);
final AndDescr lhs = new AndDescr();
queryDescr.setLhs(lhs);
final PatternDescr pattern = new PatternDescr(Cheese.class.getName(), "stilton");
lhs.addDescr(pattern);
pattern.addConstraint(new ExprConstraintDescr("type == $type"));
// Another query, no parameters
QueryDescr queryDescr2 = new QueryDescr("query2");
packageDescr.addRule(queryDescr2);
AndDescr lhs2 = new AndDescr();
queryDescr2.setLhs(lhs2);
PatternDescr pattern2 = new PatternDescr(Cheese.class.getName());
lhs2.addDescr(pattern2);
builder.addPackage(packageDescr);
assertLength(0, builder.getErrors().getErrors());
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(Arrays.asList(new KiePackage[] { builder.getPackage(packageDescr.getName()) }));
final KieSession session = kbase.newKieSession();
session.insert(new Cheese("stilton", 15));
QueryResults results = session.getQueryResults("query1", "stilton");
assertEquals(1, results.size());
Object object = results.iterator().next().get("stilton");
assertEquals(new Cheese("stilton", 15), object);
results = session.getQueryResults("query1", new Object[] { "cheddar" });
assertEquals(0, results.size());
session.insert(new Cheese("dolcelatte", 20));
results = session.getQueryResults("query2", new Object[] {});
assertEquals(2, results.size());
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class AccumulateTest method testAccumulateReturningNull.
@Test(timeout = 10000)
public void testAccumulateReturningNull() throws Exception {
// read in the source
KieSession wm = getKieSessionFromResources("test_AccumulateReturningNull.drl");
final List<?> results = new ArrayList<Object>();
wm.setGlobal("results", results);
wm.insert(new Cheese("stilton", 10));
}
Aggregations