Search in sources :

Example 51 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class Misc2Test method testFactStealing.

@Test
public void testFactStealing() throws Exception {
    String drl = "package org.drools.test; \n" + "import org.drools.mvel.compiler.Person; \n " + "global java.util.List list; \n" + "\n" + "\n" + "rule Sleep \n " + "salience 1000 \n" + "when then \n" + "  System.out.println( Thread.currentThread().getName() + \"Zlip\" ); \n" + "  Thread.sleep( 100 ); \n" + "end \n" + "" + "rule FireAtWill\n" + "when  \n" + "  $p : Person( $n : name ) \n" + "then \n" + "  System.out.println( Thread.currentThread().getName() + \" Ill continue later \" ); \n" + "  Thread.sleep( 100 ); \n" + "  System.out.println( Thread.currentThread().getName() + \" Hello >> \" + $n );\n" + "  list.add( $n ); \n" + "end\n" + "\n" + "rule ImDone\n" + "timer( expr:0 )\n" + "when\n" + "  $p : Person()\n" + "then\n" + "  System.out.println( Thread.currentThread().getName() + \"Take out \" + $p ); \n" + "  delete( $p );\n" + "  System.out.println( Thread.currentThread().getName() + \"Taken out \" + $p ); \n" + "  if ( list.isEmpty() ) { list.add( $p.getName() ); } \n" + "end\n" + "\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
    KieSession knowledgeSession = kbase.newKieSession();
    ArrayList list = new ArrayList();
    knowledgeSession.setGlobal("list", list);
    knowledgeSession.insert(new Person("mark", 67));
    knowledgeSession.fireAllRules();
    Thread.sleep(500);
    assertEquals(1, list.size());
    assertTrue(list.contains("mark"));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) FactWithString(org.drools.mvel.integrationtests.facts.FactWithString) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 52 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class Misc2Test method testKieHelperKieModuleModel.

@Test
public void testKieHelperKieModuleModel() throws Exception {
    // Test to check whether verify method writes KieModuleModel to KieFileSystem
    final String drl = "import " + Address.class.getCanonicalName() + ";\n" + "import " + Person.class.getCanonicalName() + ";\n" + "rule R when\n" + "    $alice : Person(name == \"Alice\")\n" + "    $bob : Person(name == \"Bob\", addresses supersetOf $alice.addresses)\n" + "then\n" + "end\n";
    KieModuleModel kModuleModel = KieServices.get().newKieModuleModel();
    kModuleModel.setConfigurationProperty(EvaluatorOption.PROPERTY_NAME + "supersetOf", org.drools.compiler.integrationtests.CustomOperatorTest.SupersetOfEvaluatorDefinition.class.getName());
    KieHelper kHelper = new KieHelper();
    Results results = kHelper.setKieModuleModel(kModuleModel).addContent(drl, ResourceType.DRL).verify();
    List<org.kie.api.builder.Message> errors = results.getMessages(org.kie.api.builder.Message.Level.ERROR);
    assertTrue(errors.toString(), errors.isEmpty());
}
Also used : Message(org.drools.mvel.compiler.Message) Results(org.kie.api.builder.Results) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieHelper(org.kie.internal.utils.KieHelper) FactWithString(org.drools.mvel.integrationtests.facts.FactWithString) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 53 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class Misc2Test method testCorrectDeclarationsInConsequence.

@Test
public void testCorrectDeclarationsInConsequence() {
    // This showed up a bug where consequences declarations were being held onto and not replaced
    Address barcelonaCityCenter;
    Address cottageInMountains;
    Address cottageInDesert;
    Person johnFromBarcelona;
    Person elizabeth35Years;
    Person william25Years;
    Person peter70Years;
    Person mary33Years;
    barcelonaCityCenter = new Address("City Center", 1, "Barcelona");
    cottageInMountains = new Address("Mountains", 999, "Small Village");
    cottageInDesert = new Address("Sand Street", 1, "Desert Town");
    johnFromBarcelona = new Person("John", 18);
    peter70Years = new Person("Peter", 70);
    mary33Years = new Person("Mary", 33);
    johnFromBarcelona.setAddress(barcelonaCityCenter);
    elizabeth35Years = new Person("Elizabeth", 35);
    william25Years = new Person("William", 25);
    String str = "package org.drools.testcoverage.functional;\n" + "\n" + "import " + Address.class.getCanonicalName() + ";\n" + "import " + Person.class.getCanonicalName() + "\n" + "import java.lang.Integer;" + "" + "rule \"Row 1 moveToBiggerCities\"\n" + "dialect \"mvel\"\n" + "  when\n" + "    $address : Address( $city : city)\n" + "    $inhabitantsCount : Integer( intValue() > 50000 , intValue() <= 100000 ) " + "           from accumulate ( $person : Person( address.city == $city ),\n" + "                             count($person)) \n" + "    $otherAddress : Address( $otherCity : city, this != $address )\n" + "    $person : Person( address == $otherAddress , likes == \"big city\" )\n" + "then\n" + "    $person.setAddress( $address );\n" + "end\n" + "";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    final Address brno = producePeopleInCity(ksession, "Brno", 7000);
    final Address prague = producePeopleInCity(ksession, "Prague", 30000);
    final Address london = producePeopleInCity(ksession, "London", 60000);
    final Address smallCity = new Address();
    smallCity.setCity("city with just one person");
    peter70Years.setAddress(smallCity);
    peter70Years.setLikes("big city");
    william25Years.setAddress(brno);
    william25Years.setLikes("big city");
    mary33Years.setAddress(prague);
    mary33Years.setLikes("big city");
    elizabeth35Years.setAddress(london);
    elizabeth35Years.setLikes("big city");
    ksession.insert(smallCity);
    final FactHandle peter = ksession.insert(peter70Years);
    final FactHandle wiliam = ksession.insert(william25Years);
    final FactHandle mary = ksession.insert(mary33Years);
    final FactHandle elizabeth = ksession.insert(elizabeth35Years);
    Assertions.assertThat(ksession.fireAllRules()).isEqualTo(3);
}
Also used : Address(org.drools.mvel.compiler.Address) InternalFactHandle(org.drools.core.common.InternalFactHandle) FactHandle(org.kie.api.runtime.rule.FactHandle) DefaultFactHandle(org.drools.core.common.DefaultFactHandle) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) FactWithString(org.drools.mvel.integrationtests.facts.FactWithString) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 54 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class JpaPersistentStatefulSessionTest method testSharedReferences.

@Test
public void testSharedReferences() {
    KieServices ks = KieServices.Factory.get();
    KieBase kbase = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()).getKieBase();
    KieSession ksession = ks.getStoreServices().newKieSession(kbase, null, env);
    Person x = new Person("test");
    List test = new ArrayList();
    List test2 = new ArrayList();
    test.add(x);
    test2.add(x);
    assertSame(test.get(0), test2.get(0));
    ksession.insert(test);
    ksession.insert(test2);
    ksession.fireAllRules();
    KieSession ksession2 = ks.getStoreServices().loadKieSession(ksession.getIdentifier(), kbase, null, env);
    Iterator c = ksession2.getObjects().iterator();
    List ref1 = (List) c.next();
    List ref2 = (List) c.next();
    assertSame(ref1.get(0), ref2.get(0));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) Iterator(java.util.Iterator) KieServices(org.kie.api.KieServices) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 55 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class JpaPersistentStatefulSessionTest method testSharedReferences.

@Test
public void testSharedReferences() {
    final KieBase kbase = new KieHelper().getKieContainer().getKieBase();
    final KieSession ksession = KieServices.get().getStoreServices().newKieSession(kbase, null, env);
    final Person x = new Person("test");
    final List<Person> test = new ArrayList<>();
    final List<Person> test2 = new ArrayList<>();
    test.add(x);
    test2.add(x);
    assertThat(test.get(0)).isSameAs(test2.get(0));
    ksession.insert(test);
    ksession.insert(test2);
    ksession.fireAllRules();
    final StatefulKnowledgeSession ksession2 = JPAKnowledgeService.loadStatefulKnowledgeSession(ksession.getIdentifier(), kbase, null, env);
    final Iterator c = ksession2.getObjects().iterator();
    final List ref1 = (List) c.next();
    final List ref2 = (List) c.next();
    assertThat(ref1.get(0)).isSameAs(ref2.get(0));
}
Also used : KieBase(org.kie.api.KieBase) CommandBasedStatefulKnowledgeSession(org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession) StatefulKnowledgeSession(org.kie.internal.runtime.StatefulKnowledgeSession) ArrayList(java.util.ArrayList) Iterator(java.util.Iterator) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Aggregations

Person (org.drools.mvel.compiler.Person)196 Test (org.junit.Test)185 KieSession (org.kie.api.runtime.KieSession)178 KieBase (org.kie.api.KieBase)171 ArrayList (java.util.ArrayList)98 List (java.util.List)72 Cheese (org.drools.mvel.compiler.Cheese)46 FactHandle (org.kie.api.runtime.rule.FactHandle)38 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)34 Address (org.drools.mvel.compiler.Address)33 FactWithString (org.drools.mvel.integrationtests.facts.FactWithString)24 InternalFactHandle (org.drools.core.common.InternalFactHandle)23 KiePackage (org.kie.api.definition.KiePackage)18 InternalKnowledgeBase (org.drools.kiesession.rulebase.InternalKnowledgeBase)16 IteratorToList (org.drools.mvel.integrationtests.IteratorToList)15 HashMap (java.util.HashMap)12 ObjectTypeNode (org.drools.core.reteoo.ObjectTypeNode)12 Collection (java.util.Collection)11 DefaultFactHandle (org.drools.core.common.DefaultFactHandle)8 AlphaNode (org.drools.core.reteoo.AlphaNode)8