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

Reply via email to