[rules-users] Basic question

Davide Sottara dsotty at gmail.com
Sun Apr 7 14:40:07 EDT 2013


As Wolfgang recommends, please double-check your java code.. it would be
useful to see how you build
the KnowledgeBase and the KnowledgeSession, as well as the **full** DRL
file(s) you are loading.
In particular:

- check that the KnowledgeBuilder does not return any error
(kbuilder.getErrors()). It will not throw exceptions,
but you would get a "best effort" KB which is unsafe to use.
- check that you are not loading other DRLs, *** especially with rules
retracting your RatingMessages ***.
- check that you are not importing a stale RatingMessage class, with the
same name but in a different package.
- provide information on the version you are using

Otherwise, this would be an END-OF-THE-UNIVERSE bug and no Drools-based
application could possibly work, which
is extremely unlikely...

Best
Davide

On 04/07/2013 08:20 AM, Wolfgang Laun wrote:
> Once again: the code you are posting isn't consistent in itself. You
> are changing either the DRL or the Java code from what you actually
> run.
>
> As I said: either post complete and accurate code that reproduces the
> problem or stop posting.
>
> -W
>
>
>
> On 07/04/2013, goforcrazy <goforcrazy at gmail.com> wrote:
>> Hello,
>>
>> Since I wanted to highlight what the problem was, I didnt quite give the
>> entire source code. Let me be clear now.
>>
>> IN the drl file:
>> rule "Rating"
>>
>>         when
>>                 m : RatingMessage()
>>         then
>>                 System.out.println("Rating inserted as: "+ m.getid() + "
>> and
>> rating: " +
>> m.getRating());
>>
>> end
>>
>> I have a Java file by name RatingMessage.java, the source code of which is
>> pasted below:
>>
>> public class RatingMessage {
>> 	private int mid;
>> 	private double rating;
>>
>> 	
>> 	public RatingMessage(int mid, double rating) {
>> 		//super();
>> 		this.mid = mid;
>> 		this.rating = rating;
>> 	}
>> 	public int getMid() {
>> 		return mid;
>> 	}
>> 	public void setMid(int mid) {
>> 		this.mid = mid;
>> 	}
>> 	public double getRating() {
>> 		return rating;
>> 	}
>> 	public void setRating(float rating) {
>> 		this.rating = rating;
>> 	}
>> }
>>
>>
>> In this case public RatingMessage(int mid, double rating) method is invoked
>> and when I am calling the methods in the main java file as
>>
>> insertRating(101, 1.0);
>> insertRating(102, 1.0);
>> ksession.fireAllRules();
>>
>> Randomly 101 or 102 is being picked and I am getting only one of these as
>> the output. Since each insertRating will invoke ksession.insert twice I was
>> expecting to see both ratings inserted.
>>
>>
>> public RatingMessage insertRating(int mid, double d) {
>> 		RatingMessage msg = new RatingMessage(mid,d);
>> 		ksession.insert(msg);
>> 		return msg;
>> 	}
>>
>>
>> Let me know if you need anything else to figure out the problem in the
>> code.
>>
>> Thanks
>>
>>
>>
>> --
>> View this message in context:
>> http://drools.46999.n3.nabble.com/Basic-question-tp4023234p4023238.html
>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



More information about the rules-users mailing list