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"));
}
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());
}
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);
}
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));
}
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));
}
Aggregations