Hi, I am using spring module (with drools) to fire the rules. How can I setSource at the runtime? I am hard coding a different drl file in setSource() method yet when the rule is executed it fires the rule based on .drl set in the applicationContext.xml
My issue is that the drl file name might change frequently and on basis of that I would like to fire the rules. Is it possible to change the drl name dynamically at runtime? Any advice would be great help. -- Thanks Ck http://www.gfour.net The code is given below -- code -- public class RuleServiceDrools implements RuleService{ private DefaultRuleSource rs = null; private Jsr94Template template = null; public List fireRules(List users) { final List list = users; setSource(); // TODO Auto-generated method stub Object obj = getTemplate().executeStateless("vaccination",null,new StatelessRuleSessionCallback() { public Object execute(StatelessRuleSession session) throws InvalidRuleSessionException, RemoteException { return session.executeRules(list); } }); return (List)obj; } public void setSource() { Resource res = new FileSystemResource("/enfold/rules/vaccination2.drl"); rs = (DefaultRuleSource)getTemplate().getRuleSource(); rs.setSource(res); } public DefaultRuleSource getRs() { return rs; } public void setRs(DefaultRuleSource rs) { rs.setBindUri("what"); this.rs = rs; } public Jsr94Template getTemplate() { return template; } public void setTemplate(Jsr94Template template) { this.template = template; } } -- code end -- applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="ruleServiceProvider" class="org.springmodules.jsr94.factory.DefaultRuleServiceProviderFactoryBean"> <property name="provider"> <value>http://drools.org/</value> </property> <property name="providerClass"> <value>org.drools.jsr94.rules.RuleServiceProviderImpl</value> </property> </bean> <bean id="ruleRuntime" class="org.springmodules.jsr94.factory.RuleRuntimeFactoryBean"> <property name="serviceProvider"> <ref local="ruleServiceProvider" /> </property> </bean> <bean id="ruleAdministrator" class="org.springmodules.jsr94.factory.RuleAdministratorFactoryBean"> <property name="serviceProvider"> <ref local="ruleServiceProvider" /> </property> </bean> <bean id="ruleSource" class="org.springmodules.jsr94.rulesource.DefaultRuleSource"> <property name="ruleRuntime"> <ref local="ruleRuntime" /> </property> <property name="ruleAdministrator"> <ref local="ruleAdministrator" /> </property> <property name="source"> <value>/enfold/rules/vaccination2.drl</value> </property> <property name="bindUri"> <value>vaccination</value> </property> </bean> <bean id="jsr94Template" class="org.springmodules.jsr94.core.Jsr94Template"> <property name="ruleSource"> <ref local="ruleSource" /> </property> </bean> <bean id="ruleService" class="enfold.rules.service.impl.RuleServiceDrools"> <property name="template"> <ref local="jsr94Template" /> </property> </bean> <bean id="memberDao" class="enfold.dao.dummy.MemberDaoDummy" /> <bean id="ruleObjectbuilder" class="enfold.rules.RuleObjectBuilderDatabase"> <property name="memberDao"> <ref local="memberDao"/> </property> </bean> <bean id="service" class="enfold.rules.ServiceImpl"> <property name="ruleObjectbuilder"> <ref local="ruleObjectbuilder"/> </property> <property name="ruleService"> <ref local="ruleService"/> </property> </bean> </beans> -- View this message in context: http://www.nabble.com/dynamically-get-drl-using-spring-module-tf3778174.html#a10683653 Sent from the drools - user mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
