@Test public void testSetGlobal() throws Exception { String str = ""; str += "package org.drools \n"; str += "import org.drools.Cheese \n"; str += "global java.util.List list1 \n"; str += "global java.util.List list2 \n"; str += "global java.util.List list3 \n"; str += "rule rule1 \n"; str += " when \n"; str += " $c : Cheese() \n"; str += " \n"; str += " then \n"; str += " $c.setPrice( 30 ); \n"; str += " list1.add( $c ); \n"; str += " list2.add( $c ); \n"; str += " list3.add( $c ); \n"; str += "end\n"; Cheese stilton = new Cheese("stilton", 5); List list1 = new ArrayList(); List list2 = new ArrayList(); List list3 = new ArrayList(); StatelessKnowledgeSession ksession = getSession2(ResourceFactory.newByteArrayResource(str.getBytes())); Command setGlobal1 = CommandFactory.newSetGlobal("list1", list1); Command setGlobal2 = CommandFactory.newSetGlobal("list2", list2, true); Command setGlobal3 = CommandFactory.newSetGlobal("list3", list3, "outList3"); Command insert = CommandFactory.newInsert(stilton); List cmds = new ArrayList(); cmds.add(setGlobal1); cmds.add(setGlobal2); cmds.add(setGlobal3); cmds.add(insert); ExecutionResults result = (ExecutionResults) ksession.execute(CommandFactory.newBatchExecution(cmds)); assertEquals(30, stilton.getPrice()); assertNull(result.getValue("list1")); list2 = (List) result.getValue("list2"); assertEquals(1, list2.size()); assertSame(stilton, list2.get(0)); list3 = (List) result.getValue("outList3"); assertEquals(1, list3.size()); assertSame(stilton, list3.get(0)); }
@Test public void testInsertObject() throws Exception { String str = ""; str += "package org.drools \n"; str += "import org.drools.Cheese \n"; str += "rule rule1 \n"; str += " when \n"; str += " $c : Cheese() \n"; str += " \n"; str += " then \n"; str += " $c.setPrice( 30 ); \n"; str += "end\n"; Cheese stilton = new Cheese("stilton", 5); StatelessKnowledgeSession ksession = getSession2(ResourceFactory.newByteArrayResource(str.getBytes())); GenericCommand cmd = (GenericCommand) CommandFactory.newInsert(stilton, "outStilton"); BatchExecutionCommandImpl batch = new BatchExecutionCommandImpl(Arrays.asList(new GenericCommand<?>[] {cmd})); ExecutionResults result = (ExecutionResults) ksession.execute(batch); stilton = (Cheese) result.getValue("outStilton"); assertEquals(30, stilton.getPrice()); }
protected Collection<ReportItem> evaluate(Object... elements) { StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); Collection<ReportItem> reportItems = new ArrayList<ReportItem>(); List<Command<?>> commands = new ArrayList<Command<?>>(); for (Object o : elements) { commands.add(CommandFactory.newInsert(o)); } commands.add(CommandFactory.newFireAllRules()); commands.add(CommandFactory.newQuery("reports", "getReports")); ExecutionResults results = ksession.execute(CommandFactory.newBatchExecution(commands)); // System.out.println(results.getIdentifiers()); QueryResults queryResults = (QueryResults) results.getValue("reports"); for (QueryResultsRow result : queryResults) { reportItems.add((ReportItem) result.get("item")); } return reportItems; }
@Test public void testQuery() throws Exception { String str = ""; str += "package org.drools.test \n"; str += "import org.drools.Cheese \n"; str += "query cheeses \n"; str += " stilton : Cheese(type == 'stilton') \n"; str += " cheddar : Cheese(type == 'cheddar', price == stilton.price) \n"; str += "end\n"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newByteArrayResource(str.getBytes()), ResourceType.DRL); if (kbuilder.hasErrors()) { fail(kbuilder.getErrors().toString()); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); kbase = SerializationHelper.serializeObject(kbase); StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); Cheese stilton1 = new Cheese("stilton", 1); Cheese cheddar1 = new Cheese("cheddar", 1); Cheese stilton2 = new Cheese("stilton", 2); Cheese cheddar2 = new Cheese("cheddar", 2); Cheese stilton3 = new Cheese("stilton", 3); Cheese cheddar3 = new Cheese("cheddar", 3); Set set = new HashSet(); List list = new ArrayList(); list.add(stilton1); list.add(cheddar1); set.add(list); list = new ArrayList(); list.add(stilton2); list.add(cheddar2); set.add(list); list = new ArrayList(); list.add(stilton3); list.add(cheddar3); set.add(list); List<Command> cmds = new ArrayList<Command>(); cmds.add(CommandFactory.newInsert(stilton1)); cmds.add(CommandFactory.newInsert(stilton2)); cmds.add(CommandFactory.newInsert(stilton3)); cmds.add(CommandFactory.newInsert(cheddar1)); cmds.add(CommandFactory.newInsert(cheddar2)); cmds.add(CommandFactory.newInsert(cheddar3)); cmds.add(CommandFactory.newQuery("cheeses", "cheeses")); ExecutionResults batchResult = (ExecutionResults) ksession.execute(CommandFactory.newBatchExecution(cmds)); org.drools.runtime.rule.QueryResults results = (org.drools.runtime.rule.QueryResults) batchResult.getValue("cheeses"); assertEquals(3, results.size()); assertEquals(2, results.getIdentifiers().length); Set newSet = new HashSet(); for (org.drools.runtime.rule.QueryResultsRow result : results) { list = new ArrayList(); list.add(result.get("stilton")); list.add(result.get("cheddar")); newSet.add(list); } assertEquals(set, newSet); }