use of org.drools.compiler.Cheese in project drools by kiegroup.
the class DateComparisonTest method testDateComparisonAfter.
@Test
public void testDateComparisonAfter() throws Exception {
String str = "";
str += "package org.drools.compiler;\n";
str += "global java.util.List results;\n";
str += "rule \"test date greater than\"\n";
str += " when\n";
str += " $c : Cheese(type == \"Yesterday\")\n";
str += " Cheese(type == \"Tomorrow\", $c.usedBy before usedBy)\n";
str += " then\n";
str += " results.add( \"test date greater than\" );\n";
str += "end\n";
str += "rule \"test date less than\"\n";
str += " when\n";
str += " $c : Cheese(type == \"Tomorrow\")\n";
str += " Cheese(type == \"Yesterday\", $c.usedBy after usedBy);\n";
str += " then\n";
str += " results.add( \"test date less than\" );\n";
str += "end\n";
KieSession ksession = new KieHelper().addContent(str, ResourceType.DRL).build().newKieSession();
List<String> results = new ArrayList<String>();
ksession.setGlobal("results", results);
// go !
Cheese yesterday = new Cheese("Yesterday");
yesterday.setUsedBy(yesterday());
Cheese tomorrow = new Cheese("Tomorrow");
tomorrow.setUsedBy(tomorrow());
ksession.insert(yesterday);
ksession.insert(tomorrow);
ksession.fireAllRules();
assertEquals(2, results.size());
assertTrue(results.contains("test date greater than"));
assertTrue(results.contains("test date less than"));
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class DslTest method checkDSLExpanderTest.
private void checkDSLExpanderTest(KnowledgeBuilder kbuilder) throws IOException, ClassNotFoundException {
assertFalse(kbuilder.hasErrors());
final String err = kbuilder.getErrors().toString();
assertEquals("", err);
assertEquals(0, kbuilder.getErrors().size());
// the compiled package
final Collection<KiePackage> pkgs = kbuilder.getKnowledgePackages();
assertEquals(2, pkgs.size());
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(pkgs);
kbase = SerializationHelper.serializeObject(kbase);
KieSession session = createKnowledgeSession(kbase);
session.insert(new Person("Bob", "http://foo.bar"));
session.insert(new Cheese("stilton", 42));
final List messages = new ArrayList();
session.setGlobal("messages", messages);
session.fireAllRules();
assertEquals(1, messages.size());
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class EnableAuditLogCommandTest method testEnableAuditLogCommand.
@Test
public void testEnableAuditLogCommand() throws Exception {
String str = "";
str += "package org.drools.compiler.integrationtests \n";
str += "import " + Cheese.class.getCanonicalName() + " \n";
str += "rule StringRule \n";
str += " when \n";
str += " $c : Cheese() \n";
str += " then \n";
str += " System.out.println($c); \n";
str += "end \n";
KieSession kSession = new KieHelper().addContent(str, ResourceType.DRL).build().newKieSession();
List<Command> commands = new ArrayList<Command>();
commands.add(CommandFactory.newEnableAuditLog(auditFileDir, auditFileName));
commands.add(CommandFactory.newInsert(new Cheese()));
commands.add(CommandFactory.newFireAllRules());
kSession.execute(CommandFactory.newBatchExecution(commands));
kSession.dispose();
File file = new File(auditFileDir + File.separator + auditFileName + ".log");
assertTrue(file.exists());
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class DynamicRulesTest method testJBRULES_2206.
@Test(timeout = 10000)
public void testJBRULES_2206() {
KieBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
((RuleBaseConfiguration) config).setRuleBaseUpdateHandler(null);
InternalKnowledgeBase kbase = (InternalKnowledgeBase) getKnowledgeBase(config);
KieSession session = createKnowledgeSession(kbase);
AgendaEventListener ael = mock(AgendaEventListener.class);
session.addEventListener(ael);
for (int i = 0; i < 5; i++) {
session.insert(new Cheese());
}
kbase.addPackages(loadKnowledgePackages("test_JBRULES_2206_1.drl"));
((InternalAgenda) session.getAgenda()).evaluateEagerList();
// two matching rules were added, so 2 activations should have been created
verify(ael, times(2)).matchCreated(any(MatchCreatedEvent.class));
int fireCount = session.fireAllRules();
// both should have fired
assertEquals(2, fireCount);
kbase.addPackages(loadKnowledgePackages("test_JBRULES_2206_2.drl"));
((InternalAgenda) session.getAgenda()).evaluateEagerList();
// one rule was overridden and should activate
verify(ael, times(3)).matchCreated(any(MatchCreatedEvent.class));
fireCount = session.fireAllRules();
// that rule should fire again
assertEquals(1, fireCount);
session.dispose();
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class DynamicRulesTest method testDynamicRuleAdditions.
@Test(timeout = 10000)
public void testDynamicRuleAdditions() throws Exception {
InternalKnowledgeBase kbase = (InternalKnowledgeBase) SerializationHelper.serializeObject(loadKnowledgeBase("test_Dynamic1.drl"));
KieSession workingMemory = createKnowledgeSession(kbase);
workingMemory.setGlobal("total", new Integer(0));
final List<?> list = new ArrayList<Object>();
workingMemory.setGlobal("list", list);
// Adding person in advance. There is no Person() object
// type node in memory yet, but the rule engine is supposed
// to handle that correctly
final PersonInterface bob = new Person("bob", "stilton");
bob.setStatus("Not evaluated");
workingMemory.insert(bob);
final Cheese stilton = new Cheese("stilton", 5);
workingMemory.insert(stilton);
final Cheese cheddar = new Cheese("cheddar", 5);
workingMemory.insert(cheddar);
workingMemory.fireAllRules();
assertEquals(1, list.size());
assertEquals("stilton", list.get(0));
Collection<KiePackage> kpkgs = SerializationHelper.serializeObject(loadKnowledgePackages("test_Dynamic2.drl"));
kbase.addPackages(kpkgs);
workingMemory.fireAllRules();
assertEquals(5, list.size());
assertEquals("stilton", list.get(0));
assertTrue("cheddar".equals(list.get(1)) || "cheddar".equals(list.get(2)));
assertTrue("stilton".equals(list.get(1)) || "stilton".equals(list.get(2)));
list.clear();
kpkgs = SerializationHelper.serializeObject(loadKnowledgePackages("test_Dynamic3.drl"));
kbase.addPackages(kpkgs);
// Package 3 has a rule working on Person instances.
// As we added person instance in advance, rule should fire now
workingMemory.fireAllRules();
assertEquals("Rule from package 3 should have been fired", "match Person ok", bob.getStatus());
assertEquals(1, list.size());
assertEquals(bob, list.get(0));
kpkgs = SerializationHelper.serializeObject(loadKnowledgePackages("test_Dynamic4.drl"));
kbase.addPackages(kpkgs);
workingMemory.fireAllRules();
kbase = SerializationHelper.serializeObject(kbase);
assertEquals("Rule from package 4 should have been fired", "Who likes Stilton ok", bob.getStatus());
assertEquals(2, list.size());
assertEquals(bob, list.get(1));
}
Aggregations