Search in sources :

Example 6 with Person

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"));
}
Also used : ArrayList(java.util.ArrayList) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) Person(org.drools.traits.compiler.Person) CommonTraitTest(org.drools.traits.compiler.CommonTraitTest) Test(org.junit.Test)

Example 7 with Person

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));
}
Also used : KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) Command(org.kie.api.command.Command) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) List(java.util.List) ArrayList(java.util.ArrayList) ByteArrayResource(org.drools.core.io.impl.ByteArrayResource) Person(org.drools.traits.compiler.Person) CommonTraitTest(org.drools.traits.compiler.CommonTraitTest) Test(org.junit.Test)

Aggregations

Person (org.drools.traits.compiler.Person)7 Test (org.junit.Test)7 CommonTraitTest (org.drools.traits.compiler.CommonTraitTest)6 KieSession (org.kie.api.runtime.KieSession)5 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)5 ArrayList (java.util.ArrayList)4 List (java.util.List)4 ByteArrayResource (org.drools.core.io.impl.ByteArrayResource)2 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)2 URI (java.net.URI)1 InternalFactHandle (org.drools.core.common.InternalFactHandle)1 InternalWorkingMemory (org.drools.core.common.InternalWorkingMemory)1 ObjectTypeConfigurationRegistry (org.drools.core.common.ObjectTypeConfigurationRegistry)1 ObjectTypeConf (org.drools.core.reteoo.ObjectTypeConf)1 InternalKnowledgeBase (org.drools.kiesession.rulebase.InternalKnowledgeBase)1 KieBase (org.kie.api.KieBase)1 KieServices (org.kie.api.KieServices)1 KieBuilder (org.kie.api.builder.KieBuilder)1 KieFileSystem (org.kie.api.builder.KieFileSystem)1 Command (org.kie.api.command.Command)1