use of org.drools.traits.compiler.Person in project drools by kiegroup.
the class TraitTest method testManyTraits.
@Test
public void testManyTraits() {
String source = "" + "import " + Message.class.getCanonicalName() + ";\n" + "" + "global java.util.List list; \n" + "" + "declare Message\n" + " @Traitable\n" + " end\n" + "\n" + " declare trait NiceMessage\n" + " message : String\n" + " end\n" + "" + "rule \"Nice\"\n" + "when\n" + " $n : NiceMessage( $m : message )\n" + "then\n" + " System.out.println( $m );\n" + "end" + "\n" + " rule load\n" + " when\n" + "\n" + " then\n" + " Message message = new Message();\n" + " message.setMessage(\"Hello World\");\n" + " insert(message);\n" + " don( message, NiceMessage.class );\n" + "\n" + " Message unreadMessage = new Message();\n" + " unreadMessage.setMessage(\"unread\");\n" + " insert(unreadMessage);\n" + " don( unreadMessage, NiceMessage.class );\n" + "\n" + " Message oldMessage = new Message();\n" + " oldMessage.setMessage(\"old\");\n" + " insert(oldMessage);\n" + " don( oldMessage, NiceMessage.class );" + " list.add(\"OK\");\n" + " end";
KieSession ksession = getSessionFromString(source);
TraitFactoryImpl.setMode(mode, ksession.getKieBase());
List list = new ArrayList();
ksession.setGlobal("list", list);
Person student = new Person("student", 18);
ksession.insert(student);
ksession.fireAllRules();
assertEquals(1, list.size());
assertTrue(list.contains("OK"));
}
use of org.drools.traits.compiler.Person in project drools by kiegroup.
the class TraitTest method traitsInBatchExecution.
// BZ #748752
@Test
public void traitsInBatchExecution() {
String str = "package org.jboss.qa.brms.traits\n" + "import org.drools.traits.compiler.Person;\n" + "import org.drools.core.factmodel.traits.Traitable;\n" + "" + "global java.util.List list;" + "" + "declare Person \n" + " @Traitable \n" + "end \n" + "" + "declare trait Student\n" + " school : String\n" + "end\n" + "\n" + "rule \"create student\" \n" + " when\n" + " $student : Person( age < 26 )\n" + " then\n" + " Student s = don( $student, Student.class );\n" + " s.setSchool(\"Masaryk University\");\n" + "end\n" + "\n" + "rule \"print student\"\n" + " when\n" + " student : Person( this isA Student )\n" + " then" + " list.add( 1 );\n" + " System.out.println(\"Person is a student: \" + student);\n" + "end\n" + "\n" + "rule \"print school\"\n" + " when\n" + " Student( $school : school )\n" + " then\n" + " list.add( 2 );\n" + " System.out.println(\"Student is attending \" + $school);\n" + "end";
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(new ByteArrayResource(str.getBytes()), ResourceType.DRL);
if (kbuilder.hasErrors()) {
throw new RuntimeException(kbuilder.getErrors().toString());
}
List list = new ArrayList();
KieBase kbase = kbuilder.newKieBase();
TraitFactoryImpl.setMode(mode, kbase);
StatelessKieSession ksession = kbase.newStatelessKieSession();
ksession.setGlobal("list", list);
List<Command<?>> commands = new ArrayList<Command<?>>();
Person student = new Person("student", 18);
commands.add(CommandFactory.newInsert(student));
System.out.println("Starting execution...");
commands.add(CommandFactory.newFireAllRules());
ksession.execute(CommandFactory.newBatchExecution(commands));
System.out.println("Finished...");
assertEquals(2, list.size());
assertTrue(list.contains(1));
assertTrue(list.contains(2));
}
Aggregations