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(a)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(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users