Hi Edson,
sorry for a late reply. I found out that there is problem in DRL file i.e. i
cannot use
package com.sample.mypackage
rule "Apply discount"
no-loop true
when
$order: Order();
$items : ArrayList() from collect (OrderItem() from $order.items)
then
#apply discount
end
when i try to remove previous package from ruleBase object, i get the error:
java.lang.IllegalArgumentException: Cannot remove a sink, when the list of
sinks is null
at org.drools.reteoo.ObjectSource.removeObjectSink(ObjectSource.java:116)
at org.drools.reteoo.AlphaNode.remove(AlphaNode.java:181)
at
org.drools.reteoo.LeftInputAdapterNode.remove(LeftInputAdapterNode.java:204)
at org.drools.reteoo.FromNode.remove(FromNode.java:153)
at
org.drools.reteoo.RightInputAdapterNode.remove(RightInputAdapterNode.java:167)
at org.drools.reteoo.BetaNode.remove(BetaNode.java:186)
at org.drools.reteoo.RuleTerminalNode.remove(RuleTerminalNode.java:461)
at org.drools.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java:224)
at org.drools.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java:272)
at
org.drools.common.AbstractRuleBase.removePackage(AbstractRuleBase.java:460)
...
instead, i implemented the same thing this way:
package com.sample.mypackage
rule "Explode Cart"
salience 11
dialect "java"
when
$order: Order()
$item : OrderItem() from $order.items
then
insert( $item );
end
rule "Apply discount"
no-loop true
when
$order : Order();
$items : ArrayList() from collect (OrderItem())
then
#apply discount
end
if this is a bug, i hope it'll help finding it and fixing.
Kind regards!
Edson Tirelli-3 wrote:
Igor,
Looks like a bug to me... can you please open a JIRA and attach a self
contained test case showing the problem? This will speed up the
resolution...
Thanks
Edson
2007/11/1, igor_b <igorbolic(a)gmail.com>:
>
>
> Hi Edson,
>
> thanx for answering, i've tried 4.0.3, but i get the following error when
> i
> try to refresh my rules:
>
> java.lang.IllegalArgumentException: Cannot remove a sink, when the list
> of
> sinks is null
> at org.drools.reteoo.ObjectSource.removeObjectSink(
> ObjectSource.java:116)
> at org.drools.reteoo.AlphaNode.remove(AlphaNode.java:192)
> at
> org.drools.reteoo.LeftInputAdapterNode.remove(LeftInputAdapterNode.java
> :189)
> at org.drools.reteoo.BetaNode.remove(BetaNode.java:173)
> at
> org.drools.reteoo.RuleTerminalNode.remove(RuleTerminalNode.java
> :466)
> at org.drools.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java
> :224)
> at
> org.drools.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java
> :270)
> at org.drools.common.AbstractRuleBase.removeRule(
> AbstractRuleBase.java:614)
> at
> org.drools.common.AbstractRuleBase.removePackage(AbstractRuleBase.java
> :531)
> ...
>
>
> During refresh i do the following:
> public void refresh() {
> try {
> ruleBase.removePackage("org.sample.mypackage");
>
> // reading drl files from direcotry and puting
> them
> in the package
>
> ...
> for(int i = 0; i < size; i++ ) {
> builder.addPackageFromDrl( new
> InputStreamReader(getClass().getResourceAsStream( "package" + i +
".drl"
> )
> )
> );;
>
> }
> if(ruleBase == null) {
> ruleBase = RuleBaseFactory.newRuleBase();
> }
> ruleBase.addPackage(builder.getPackage());
>
>
> } catch(Exception e) {
> log.error("Error while refreshing rules: ", e);
> }
> }
>
> and one of my .drl files (they all belong to the same package) looks
> something like this:
>
> package org.sample.mypackage
>
> import org.sample.Orders;
> import org.sample.OrderItem;
> import org.sample.service.OrderService;
>
> import java.util.ArrayList
> import org.apache.log4j.Logger
>
> global OrderService orderService
> global Logger log
>
> rule "Apply Discount"
> when
> orders : Orders();
> items : ArrayList() from collect (
> OrderItem(value > 100)
> from order.items)
> then
> log.debug("Apply Discount");
> orderService.applyDiscount(items);
> end
>
> were OrderService is a service class that i'm using to do some
> calculating.
>
> Do you have some idea about what could be causing this error?
>
>
>
>
>
>
>
> Edson Tirelli-3 wrote:
> >
> > Can you try 4.0.3? There was some fix for package management
> included
> > in
> > 4.0.2 if I'm not mistaken...
> >
> > []s
> > Edson
> >
> > 2007/10/31, igor_b <igorbolic(a)gmail.com>:
> >>
> >>
> >> Hi,
> >>
> >> I'm using drools 4.0.1. I'm first adding one package to my RuleBase
> >> object,
> >> and everything works just fine:
> >>
> >> ...
> >> builder.addPackageFromDrl(new
> InputStreamReader(resource.getInputStream
> >> ()));
> >>
> >> if(ruleBase == null) {
> >> ruleBase = RuleBaseFactory.newRuleBase();
> >> }
> >> ruleBase.addPackage(builder.getPackage());
> >>
> >>
> >> But after some time i need to refresh my rules, so i'm using following
> >> code
> >> to remove previous package:
> >>
> >> ruleBase.removePackage("org.sample.mypackage");
> >>
> >> and i'm getting the following error:
> >>
> >> java.lang.NullPointerException
> >> at org.drools.reteoo.ReteooBuilder.removeRule(
> ReteooBuilder.java
> >> :222)
> >> at
> >> org.drools.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java
> >> :272)
> >> at
> >> org.drools.common.AbstractRuleBase.removePackage(AbstractRuleBase.java
> >> :460)
> >> at
> >> com.diosphere.diomedia.common.drools.impl.RulesServiceImpl.refresh(
> >> RulesServiceImpl.java:121)
> >> at
> >> com.diosphere.diomedia.service.impl.PromotionManagerImpl.refreshDRLs(
> >> PromotionManagerImpl.java:39)
> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> at
> >> sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java
> >> :39)
> >> at
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(
> >> DelegatingMethodAccessorImpl.java:25)
> >> at java.lang.reflect.Method.invoke(Method.java:597)
> >> at
> >> uk.ltd.getahead.dwr.impl.ExecuteQuery.execute(ExecuteQuery.java
> >> :170)
> >> at
> >> uk.ltd.getahead.dwr.impl.DefaultProcessor.doExec(DefaultProcessor.java
> >> :552)
> >> at
> >> uk.ltd.getahead.dwr.impl.DefaultProcessor.handle(DefaultProcessor.java
> :88)
> >> at uk.ltd.getahead.dwr.DWRServlet.doPost(DWRServlet.java:178)
> >> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
> >> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> >> at
> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> >> ApplicationFilterChain.java:290)
> >> at
> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> >> ApplicationFilterChain.java:206)
> >> at
> >> com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(
> >> PageFilter.java:118)
> >> at
> >> com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(
> >> PageFilter.java:52)
> >> at
> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> >> ApplicationFilterChain.java:235)
> >> at
> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> >> ApplicationFilterChain.java:206)
> >> at
> >> net.sf.acegisecurity.util.FilterChainProxy.doFilter(
> FilterChainProxy.java
> >> :167)
> >> at
> >> net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(
> >> FilterToBeanProxy.java:120)
> >> at
> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> >> ApplicationFilterChain.java:235)
> >> at
> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> >> ApplicationFilterChain.java:206)
> >> at
> >> org.apache.catalina.core.StandardWrapperValve.invoke(
> >> StandardWrapperValve.java:230)
> >> at
> >> org.apache.catalina.core.StandardContextValve.invoke(
> >> StandardContextValve.java:175)
> >> at
> >> org.apache.catalina.core.StandardHostValve.invoke(
> StandardHostValve.java
> >> :128)
> >> at
> >> org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java
> >> :104)
> >> at
> >> org.apache.catalina.core.StandardEngineValve.invoke(
> >> StandardEngineValve.java:109)
> >> at
> >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
> >> :261)
> >> at
> >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
> :844)
> >> at
> >>
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process
> (
> >> Http11Protocol.java:581)
> >> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(
> >> JIoEndpoint.java:447)
> >> at java.lang.Thread.run(Thread.java:619)
> >>
> >> Does anyone have a clue what might be the problem, and how to fix it?
> >> Kind regards!
> >> --
> >> View this message in context:
> >>
>
http://www.nabble.com/Problem-with-removePackage%28%29-tf4727072.html#a13...
> >> Sent from the drools - user mailing list archive at
Nabble.com.
> >>
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users(a)lists.jboss.org
> >>
https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >
> >
> >
> > --
> > Edson Tirelli
> > Software Engineer - JBoss Rules Core Developer
> > Office: +55 11 3529-6000
> > Mobile: +55 11 9287-5646
> > JBoss, a division of Red Hat @
www.jboss.com
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
> --
> View this message in context:
>
http://www.nabble.com/Problem-with-removePackage%28%29-tf4727072.html#a13...
> Sent from the drools - user mailing list archive at
Nabble.com.
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users