public void execute(Object object) { delegate.execute(object); }
public void execute(Iterable objects) { delegate.execute(objects); }
// Create a new knowledge session from an existing knowledge base StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); // Create a validation request PaymentValidationRequest request = new PaymentValidationRequest(payment); // A stateless session is executed with a collection of Objects, so we // create that collection containing just our request. List<Object> facts = new ArrayList<Object>(); facts.add(request); // And execute the session with that request ksession.execute(facts); // At this point, rules such as that above should have been activated. // The rules modify the original request fact, setting a flag to indicate // whether it is valid and adding annotations to indicate if/why not. // They may have added annotations to the request, which we can now read. FxPaymentValidationResult result = new FxPaymentValidationResult(); // Get the annotations that were added to the request by the rules. result.addAnnotations(request.getAnnotations()); return result;
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); try { kbuilder.add(ResourceFactory.newInputStreamResource(new FileInputStream(new File("C:/IotHub/conf/"+deviceID))), ResourceType.DRL ); } catch (FileNotFoundException e) { } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); // StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); ksession.execute(bean);
StatelessKnowledgeSession ksession = this.kbase.newStatelessKnowledgeSession(); KnowledgeRuntimeLogger klogger = configureKnowledgeRuntimeLogger(ksession); List<Command> commands = new ArrayList<Command>(); commands.add(CommandFactory.newInsert(inputObj, "inputObj")); commands.add(CommandFactory.newFireAllRules()); commands.add(CommandFactory.newQuery("outputObj", "GetOutputObj")); ExecutionResults results = ksession.execute(CommandFactory.newBatchExecution(commands)); QueryResults queryResults = ((NativeQueryResults)results.getValue("baseTrade")).getResults(); try { Iterator iter = queryResults.iterator(); while(iter.hasNext()) { QueryResult result = iter.next(); //There can be only one... just like Highlander //Could switch this up and return a list, but we only expect one thing from here. return (BaseTrade) result.get("baseTrade"); } } finally { if(klogger != null) { klogger.close(); } }
... @Test public void testLocationRules() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("locations.drl"), ResourceType.DRL); if (kbuilder.hasErrors()) { KnowledgeBuilderErrors errors = kbuilder.getErrors(); System.out.println(errors.toString()); throw new RuntimeException(errors.toString()); } KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(); knowledgeBase.addKnowledgePackages(kbuilder.getKnowledgePackages()); StatelessKnowledgeSession session = knowledgeBase.newStatelessKnowledgeSession(); session.setGlobal("user", new User()); List<VisitedLocation> facts = new ArrayList<VisitedLocation>(); facts.add(new VisitedLocation("Berlin")); facts.add(new VisitedLocation("Paris")); facts.add(new VisitedLocation("San Francisco")); facts.add(new VisitedLocation("Saigon")); session.execute(facts); } ...
@Test public void testNotInStatelessSession() throws Exception { KieBaseConfiguration kbc = org.kie.internal.KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kbc.setOption( RuleEngineOption.RETEOO ); kbc.setOption( SequentialOption.YES ); KnowledgeBase kbase = SerializationHelper.serializeObject( loadKnowledgeBase( kbc, "test_NotInStatelessSession.drl" ) ); StatelessKnowledgeSession session = createStatelessKnowledgeSession( kbase ); List list = new ArrayList(); session.setGlobal( "list", list ); session.execute( "not integer" ); assertEquals( "not integer", list.get( 0 ) ); }
session.setGlobal("logger", logger); session.execute(getFacts(taxon, zones, date, biocacheData));