I've have been unable to figure out how to get drools to rescan and then use
the updated rules in a new session.  I currently have to restart jboss to
pick up the changes.  The scanning seems to happen, but I don't see the
changes that should be included.


I have looked at lots of example code on the web and also at the Switchyard
source.  When I do this in tandem with SY, I can get it to work, but I
need/want to have it work on its own.

I have tried some different combinations with no luck.

In addition to the "why doesn't it work", I would like to clearly
understand:


Do I need a KieBase, or should I just be creating sessions off of the
container?

What do I need to have in Envinonment?.
What do I need to have in ksessionConfiguration?
Related, what is the proper mechanism to pass in the Session Name?



GAD is: com.xyz.policy, cep, 1.0
Drools session is stateful and named "DroolsSession", stream processing
mode, realtime




I initialized KIE with the following.

                kieServices = KieServices.Factory.get();

                releaseId = kieServices.newReleaseId("com.xyz.policy", "cep",
                                "LATEST");

                kieFileSystem = 
kieServices.newKieFileSystem().generateAndWritePomXML(
                                releaseId);

                kieBuilder = kieServices.newKieBuilder(kieFileSystem);

                kieBuilder.buildAll();

                Results results = kieBuilder.getResults();
                if (results.hasMessages(Message.Level.ERROR)) {
                        StringBuilder sb = new StringBuilder();
                        for (Message message : 
results.getMessages(Message.Level.ERROR)) {
                                if (sb.length() != 0) {
                                        sb.append(" -- ");
                                }
                                sb.append(message.toString().trim());
                        }
                        log("Unable to initialize KIE " + sb.toString());

                } else {
                        env = kieServices.newEnvironment();

                        kieContainer = kieServices.newKieContainer(releaseId);
                        kieScanner = kieServices.newKieScanner(kieContainer);

                        kieBaseConfiguration = 
kieServices.newKieBaseConfiguration();
                        kieBase = kieContainer.newKieBase(kieBaseConfiguration);

                        kieSessionConfiguration = 
kieServices.newKieSessionConfiguration();
                        kieSessionConfiguration.setProperty("sessionName", 
"DroolsSession");
                        kieSessionConfiguration.setProperty("drools.clockType", 
"realtime");
                        
kieSessionConfiguration.setProperty("drools.evenProcessingMode",
                                        "stream");

        
Later when I determine it is time to rescan, I do the following:        
        
                                        kieScanner.scanNow();

                                        System.err.println("Scanning...");

                                        currentKieSessionThread = new 
KieSessionThread(
                                                        
kieBase.newKieSession(kieSessionConfiguration, env));

                                        
executorBean.execute(currentKieSessionThread);




--
View this message in context: 
http://drools.46999.n3.nabble.com/6-0-1-F-Need-help-in-getting-recanned-rules-into-new-session-tp4028975.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to