Hi Edson! as I've already mentioned I've modified the sample so, if you get the StockTick sample and replace the Main class this will run fine. The sample shuts down fine but as I saw it sets the JFrame uses frame.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE ); which in turn makes the trick.
Below the code of my modified main class: package org.drools.examples.broker; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseConfiguration; import org.drools.KnowledgeBaseFactory; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.conf.EventProcessingOption; import org.drools.examples.broker.model.Company; import org.drools.examples.broker.model.CompanyRegistry; import org.drools.examples.broker.model.StockTick; import org.drools.io.ResourceFactory; import org.drools.runtime.StatefulKnowledgeSession; import org.drools.runtime.rule.WorkingMemoryEntryPoint; public class Main { private static final String RULES_FILE = "/broker.drl"; static StatefulKnowledgeSession session; static WorkingMemoryEntryPoint tickStream; /** * @param args */ public static void main(String[] args) throws Exception { // set up and show main window CompanyRegistry companies = new CompanyRegistry(); KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(); try { builder.add( ResourceFactory.newInputStreamResource( Main.class.getResourceAsStream( RULES_FILE ) ), ResourceType.DRL); } catch ( Exception e ) { e.printStackTrace(); } if( builder.hasErrors() ) { System.err.println(builder.getErrors()); System.exit( 0 ); } KnowledgeBaseConfiguration conf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); conf.setOption( EventProcessingOption.STREAM ); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( conf ); kbase.addKnowledgePackages( builder.getKnowledgePackages() ); session = kbase.newStatefulKnowledgeSession(); session.setGlobal( "services", new BrokerServices() { public void log(String message) { System.out.println(message); } }); for( Company company : companies.getCompanies() ) { session.insert( company ); } session.fireAllRules(); tickStream = session.getWorkingMemoryEntryPoint( "StockTick stream" ); for (int i=10;i>0;i--) { tickStream.insert(new StockTick("RHT", i*10, System.currentTimeMillis())); session.getAgenda().getAgendaGroup( "evaluation" ).setFocus(); session.fireAllRules(); } session.dispose(); session.halt(); System.out.println("Still running..."); } } regards, Rafael Ribeiro 2009/7/16 Edson Tirelli <tire...@post.com> > > Hi Rafael, > > Are you setting the MultithreadEvaluation option or is this using > default options? Do you have an example code that shows this behavior? > > Thanks, > Edson > > 2009/7/16 Rafael Ribeiro <rafae...@gmail.com> > >> >> Hi all, >> >> I've downloaded Drools fusion sample and started to make some changes to >> the code (first of all wipe out the UI so I can test it easier). >> I tried to get to a minimal set so I can run a console main class and see >> what happens but I am facing a strange behaviour. >> As soon as I start pushing events into the WorkingMemoryEntryPoint >> ("StockTick stream") a Thread - not daemonized since it blocks shutdown >> from >> ending - is spawned and this prevents my JVM from shutting down (obviously >> if I call System.exit(0) it will but I am avoiding this). >> I've tried both to halt and dispose the session that this entry point >> belongs but with no success. Does anyone know how could I get rid of this >> thread? >> >> best regards, >> -- >> > > > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > http://lists.jboss.org/mailman/listinfo/rules-users > >
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org http://lists.jboss.org/mailman/listinfo/rules-users