private Object newCancelFact(KieSession ksession, boolean cancel) { FactType type = ksession.getKieBase().getFactType("org.jboss.qa.brms.agendafilter", "CancelFact"); Object instance = null; try { instance = type.newInstance(); type.set(instance, "cancel", cancel); } catch (IllegalAccessException ex) { ex.printStackTrace(); } catch (InstantiationException ex) { ex.printStackTrace(); } return instance; }
private void insertMessageFromTypeDeclaration(KieSession ksession) throws InstantiationException, IllegalAccessException { FactType messageType = ksession.getKieBase().getFactType("org.drools.test", "Message"); Object message = messageType.newInstance(); messageType.set(message, "message", "Hello World"); ksession.insert(message); }
@Test public void testGeneratedBeansMVEL() throws IllegalAccessException, InstantiationException { final KieBase kbase = loadKnowledgeBase("test_GeneratedBeansMVEL.drl"); // Retrieve the generated fact type final FactType pf = kbase.getFactType("mortgages", "Applicant"); final FactType af = kbase.getFactType("mortgages", "LoanApplication"); final Object person = pf.newInstance(); pf.set(person, "creditRating", "OK"); final Object application = af.newInstance(); final KieSession ksession = createKnowledgeSession(kbase); ksession.insert(person); ksession.insert(application); ksession.fireAllRules(); }
Object parent1 = parentType.newInstance(); parentType.set(parent1, "parent", "Eva"); parentType.set(parent1, "child", "Abel"); commands.add(CommandFactory.newInsert(parent1)); Object parent2 = parentType.newInstance(); parentType.set(parent2, "parent", "Eva"); parentType.set(parent2, "child", "Kain"); commands.add(CommandFactory.newInsert(parent2)); Object parent3 = parentType.newInstance(); parentType.set(parent3, "parent", "Adam"); parentType.set(parent3, "child", "Abel"); commands.add(CommandFactory.newInsert(parent3)); parentType.set(parent4, "parent", "Adam"); parentType.set(parent4, "child", "Kain"); commands.add(CommandFactory.newInsert(parent4)); parentType.set(parent5, "parent", "Abel"); parentType.set(parent5, "child", "Josef"); commands.add(CommandFactory.newInsert(parent5)); manType.set(adam, "name", "Adam"); commands.add(CommandFactory.newInsert(adam)); womanType.set(eva, "name", "Eva"); womanType.set(eva, "age", 101); commands.add(CommandFactory.newInsert(eva));
@Test(timeout=10000) public void testWrapperEmpty() { String source = "org/drools/compiler/factmodel/traits/testTraitDon.drl"; FactType impClass = kb.getFactType( "org.drools.compiler.trait.test", "Imp" ); TraitableBean imp = (TraitableBean) impClass.newInstance(); assertFalse( wrapper.isEmpty() ); studentClass.set( proxy, "name", "john" ); assertFalse( wrapper.isEmpty() ); studentClass.set( proxy, "name", null ); assertFalse( wrapper.isEmpty() ); studentClass.set( proxy, "age", 32 ); assertFalse( wrapper.isEmpty() ); studentClass.set( proxy, "age", null );
@Test public void testGeneratedBeans1() throws Exception { KnowledgeBase kbase = loadKnowledgeBase("test_GeneratedBeans.drl"); Object cheese = cheeseFact.newInstance(); cheeseFact.set( cheese, "type", "stilton" ); "Person" ); Object ps = personType.newInstance(); personType.set( ps, "age", 42 ); Object cg = cheeseFact.newInstance(); ksession.setGlobal( "cg", cg );
Object application = appType.newInstance(); appType.set(application, "amount", 25000); appType.set(application, "deposit", 1500); appType.set(application, "lengthYears", 20); Object income = incomeType.newInstance(); incomeType.set(income, "type", "Job"); incomeType.set(income, "amount", 65000);
@Test public void testPropSpecOnBetaNode() throws Exception { String rule = "package org.drools.compiler.integrationtests\n" + KieSession ksession = kbase.newKieSession(); FactType typeA = kbase.getFactType( "org.drools.compiler.integrationtests", "A" ); FactType typeB = kbase.getFactType( "org.drools.compiler.integrationtests", "B" ); Object a1 = typeA.newInstance(); typeA.set( a1, "i", 1 ); ksession.insert( a1 ); Object a2 = typeA.newInstance(); typeA.set( a2, "i", 2 ); ksession.insert( a2 ); Object b1 = typeB.newInstance(); typeB.set( b1, "i", 1 ); typeB.set( b1, "j", 1 ); ksession.insert( b1 ); int rules = ksession.fireAllRules(); assertEquals(3, rules);
@Test public void testUnknownField() throws InstantiationException, IllegalAccessException { // DROOLS-546 String drl = "package org.test; " + "declare Pet" + " " + "end \n"; KieBuilder kieBuilder = build(drl); assertFalse( kieBuilder.getResults().hasMessages( Message.Level.ERROR ) ); KieBase kieBase = KieServices.Factory.get().newKieContainer( kieBuilder.getKieModule().getReleaseId() ).getKieBase(); FactType factType = kieBase.getFactType("org.test", "Pet"); Object instance = factType.newInstance(); factType.get(instance, "unknownField"); factType.set(instance, "unknownField", "myValue"); }
@Test public void testRecursiveDeclaration() throws Exception { String rule = "package org.drools.compiler\n" + "declare Node\n" + " value: String\n" + " parent: Node\n" + "end\n" + "rule R1 when\n" + " $parent: Node( value == \"parent\" )\n" + " $child: Node( $value : value, parent == $parent )\n" + "then\n" + " System.out.println( $value );\n" + "end"; KnowledgeBase kbase = loadKnowledgeBaseFromString( rule ); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); FactType nodeType = kbase.getFactType( "org.drools.compiler", "Node" ); Object parent = nodeType.newInstance(); nodeType.set( parent, "value", "parent" ); ksession.insert( parent ); Object child = nodeType.newInstance(); nodeType.set( child, "value", "child" ); nodeType.set( child, "parent", parent ); ksession.insert( child ); int rules = ksession.fireAllRules(); assertEquals( 1, rules ); }
private Object createDRLStock(final String name, final Double value) throws IllegalAccessException, InstantiationException { final FactType stockType = kbase.getFactType(DRL_PACKAGE_NAME, DRL_FACT_NAME); final Object stock = stockType.newInstance(); stockType.set(stock, "name", name); stockType.set(stock, "value", value); return stock; } }
@Test public void testCoercionOfStringValueWithoutQuotes() throws Exception { // JBRULES-3080 final String str = "package org.drools.compiler.test; \n" + "declare A\n" + " field : String\n" + "end\n" + "rule R when\n" + " A( field == 12 )\n" + "then\n" + "end\n"; final KieBase kbase = loadKnowledgeBaseFromString(str); final KieSession ksession = kbase.newKieSession(); final FactType typeA = kbase.getFactType("org.drools.compiler.test", "A"); final Object a = typeA.newInstance(); typeA.set(a, "field", "12"); ksession.insert(a); assertEquals(1, ksession.fireAllRules()); }
@Test(timeout=10000) public void testWrapperSize() { String source = "org/drools/compiler/factmodel/traits/testTraitDon.drl"; FactType impClass = kb.getFactType( "org.drools.compiler.trait.test", "Imp" ); TraitableBean imp = (TraitableBean) impClass.newInstance(); FactType traitClass = kb.getFactType( "org.drools.compiler.trait.test", "Student" ); assertEquals( 3, wrapper.size() ); assertEquals( 1, virtualFields.size() ); impClass.set(imp, "name", "john"); assertEquals( 3, wrapper.size() ); assertEquals( 1, virtualFields2.size() ); traitClass.set( proxy2, "name", "john" );
@Test public void testDeclareAndFrom() throws Exception { KnowledgeBase kbase = loadKnowledgeBase( "test_DeclareWithFrom.drl" ); FactType profileType = kbase.getFactType( "org.drools.compiler", "Profile" ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); Object profile = profileType.newInstance(); Map<String, Integer> map = new HashMap<String, Integer>(); map.put( "internet", Integer.valueOf( 2 ) ); profileType.set( profile, "pageFreq", map ); ksession.insert( profile ); ksession.fireAllRules(); ksession.dispose(); }
@Test public void testGeneratedBeansSerializable() throws Exception { final KieBase kbase = loadKnowledgeBase("test_GeneratedBeansSerializable.drl"); final FactType cheeseFact = kbase.getFactType("org.drools.generatedbeans", "Cheese"); assertTrue("Generated beans must be serializable", Serializable.class.isAssignableFrom(cheeseFact.getFactClass())); final Object cheese = cheeseFact.newInstance(); cheeseFact.set(cheese, "type", "stilton"); final Object cheese2 = cheeseFact.newInstance(); cheeseFact.set(cheese2, "type", "brie"); final KieSession ksession = createKnowledgeSession(kbase); final List<Number> results = new ArrayList<>(); ksession.setGlobal("results", results); ksession.insert(cheese); ksession.insert(cheese2); ksession.fireAllRules(); assertEquals(1, results.size()); assertEquals(2, results.get(0).intValue()); } }
@Test(timeout=10000) public void testWrapperClearAndRemove() { String source = "org/drools/compiler/factmodel/traits/testTraitDon.drl"; FactType impClass = kb.getFactType( "org.drools.compiler.trait.test", "Imp" ); TraitableBean imp = (TraitableBean) impClass.newInstance(); impClass.set( imp, "name", "john" ); set.add( "nfield" ); assertEquals( 6, proxy.getFields().keySet().size() ); assertEquals( set, proxy.getFields().keySet() ); assertEquals( 3, fields.size() ); assertTrue( fields.containsKey( "age" ) );
@Test public void testDRLWithoutPackageDeclaration() throws Exception { KnowledgeBase kbase = loadKnowledgeBase( "test_NoPackageDeclaration.drl" ); // no package defined, so it is set to the default final FactType factType = kbase.getFactType( "defaultpkg", "Person" ); assertNotNull( factType ); final Object bob = factType.newInstance(); factType.set( bob, "name", "Bob" ); factType.set( bob, "age", Integer.valueOf( 30 ) ); final StatefulKnowledgeSession session = createKnowledgeSession( kbase ); final List results = new ArrayList(); session.setGlobal( "results", results ); session.insert( bob ); session.fireAllRules(); assertEquals( 1, results.size() ); assertEquals( bob, results.get( 0 ) ); }
@Test(timeout = 5000) public void testPropSpecOnPatternWithThis() throws Exception { String rule = "package org.drools.compiler.integrationtests\n" + KieSession ksession = kbase.newKieSession(); FactType factTypeA = kbase.getFactType( "org.drools.compiler.integrationtests", "A" ); Object factA = factTypeA.newInstance(); factTypeA.set( factA, "i", 1 ); ksession.insert(factA); FactType factTypeB = kbase.getFactType( "org.drools.compiler.integrationtests", "B" ); Object factB = factTypeB.newInstance(); factTypeB.set( factB, "a", factA ); ksession.insert( factB ); int rules = ksession.fireAllRules(); assertEquals(1, rules);
@Test(timeout=10000) public void testWrapperKeySetAndValues() { String source = "org/drools/compiler/factmodel/traits/testTraitDon.drl"; FactType impClass = kb.getFactType( "org.drools.compiler.trait.test", "Imp" ); TraitableBean imp = (TraitableBean) impClass.newInstance(); FactType traitClass = kb.getFactType( "org.drools.compiler.trait.test", "Student" ); trait ); impClass.set( imp, "name", "john" ); set.add( "nfield" ); assertEquals( 6, proxy.getFields().keySet().size() ); assertEquals( set, proxy.getFields().keySet() ); Collections.sort( (List) col2, comp ); assertEquals( col1, col2 );
@Test public void testCircularDeclaration() throws Exception { String rule = "package org.drools.compiler.test\n" + "declare FactA\n" + " fieldB: FactB\n" + "end\n" + "declare FactB\n" + " fieldA: FactA\n" + "end\n" + "rule R1 when\n" + " $fieldA : FactA( $fieldB : fieldB )\n" + " FactB( this == $fieldB, fieldA == $fieldA )\n" + "then\n" + "end"; KnowledgeBase kbase = loadKnowledgeBaseFromString( rule ); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); FactType aType = kbase.getFactType( "org.drools.compiler.test", "FactA" ); Object a = aType.newInstance(); FactType bType = kbase.getFactType( "org.drools.compiler.test", "FactB" ); Object b = bType.newInstance(); aType.set( a, "fieldB", b ); bType.set( b, "fieldA", a ); ksession.insert( a ); ksession.insert( b ); int rules = ksession.fireAllRules(); assertEquals( 1, rules ); }