OK. I am using the following environment items:
Eclipse: 3.3.2.
Plugins/Features from the link you provided below.
Drools runtime 5.0.1
I still see the same error in Eclipse, however, I am able to compile the
code using through my application using the
ResourceFactory.newClassPathResource call and adding it to my
KnowledgeBuilder. So, the problem is definitely with the Eclipse Drools
plugin. Could Eclipse 3.3.2 be the problem? I will upgrade and test when I
have time, but maybe someone else can confirm.
Thanks.
2010/3/5 Edson Tirelli <ed.tirelli(a)gmail.com>
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/t...
Eclipse 3.5.2.
Drools runtime 5.0.1.
Edson
2010/3/5 Moe Alkhafaji <moe.alkhafaji(a)medcpu.com>
> Edson,
>
> Just to make sure, can you please send me the link of where you downloaded
> your Eclipse plugin from? Also, what version of Eclipse are you using?
> Thanks.
>
>
> 2010/3/5 Edson Tirelli <ed.tirelli(a)gmail.com>
>
>>
>> :) I do believe you are seeing this errors, but I have no idea why. I
>> just created a new drools project in my eclipse environment, set the target
>> runtime to Drools 5.0.1, and copy and pasted your rules bellow. I executed a
>> the rules and I got the correct results:
>>
>> ----------
>>
>> Rule Definitions TermContractions 1.1 Executed
>> ----------
>>
>> I have no error in my eclipse either, so I guess you have some other
>> problem (maybe in your environment) going on there...
>>
>>
>> Edson
>>
>>
>> 2010/3/5 Moe Alkhafaji <moe.alkhafaji(a)medcpu.com>
>>
>>> Thanks Edson. I wish I can send a screen shot, but I just had a bunch of
>>> white lines in the file on top of this. I removed all the bad lines, and
>>> simplified the rule to isolate any potential problem outside of this. Here
>>> is the simplified version (entire content of the rule file):
>>>
>>> #created on: Jun 23, 2009
>>> package com.medcpu.eephratobmain
>>>
>>>
>>> rule "Definitions TermContractions 1.1"
>>> when
>>> eval(1 == 1)
>>> then
>>> System.out.println("Rule Definitions TermContractions 1.1
>>> Executed");
>>>
>>> end
>>>
>>> rule "TermContractions 2.8" extends "Definitions
TermContractions
>>> 1.1" <=== Line 11
>>> when
>>> eval(2 == 3)
>>> then
>>> System.out.println("Rule TermContractions 2.8 Executed");
>>> end
>>>
>>> And here are the errors again:
>>>
>>>
>>> nds.when cannot be resolved to a
>>> type MPU/src/rules
>>> EEphratOBMain.drl line 11
>>> Syntax error on token ""Definitions TermContractions
1.1"", .
>>> expected MPU/src/rules EEphratOBMain.drl line 11
>>> Syntax error on token "then", invalid
>>> AssignmentOperator MPU/src/rules
>>> EEphratOBMain.drl line 11
>>> Syntax error, insert ";" to complete
>>> BlockStatements MPU/src/rules
>>> EEphratOBMain.drl line 11
>>> The left-hand side of an assignment must be a
>>> variable MPU/src/rules EEphratOBMain.drl
>>> line 11
>>> unknown:11:28 mismatched token:
[@42,260:266='extends',<7>,11:28];
>>> expecting type THEN MPU/src/rules EEphratOBMain.drl
>>>
>>>
>>> 2010/3/5 Edson Tirelli <ed.tirelli(a)gmail.com>
>>>
>>>>
>>>> These error messages don't make much sense to me, but it is
accusing
>>>> error on line 19 now... considering that I removed lines and the error
>>>> before was on line 11, isn't this another problems in rules down in
the
>>>> file?
>>>>
>>>>
>>>> Edson
>>>>
>>>> 2010/3/5 Moe Alkhafaji <moe.alkhafaji(a)medcpu.com>
>>>>
>>>>> Thanks Edson,
>>>>>
>>>>> I tried using the rules you pasted below, and here are the errors
>>>>> again (same line)
>>>>>
>>>>>
>>>>> nds.when cannot be resolved to a
>>>>> type MPU/src/rules
>>>>> EEphratOBMain.drl line 19
>>>>> Syntax error on token ""Definitions TermContractions
1.1"", .
>>>>> expected MPU/src/rules EEphratOBMain.drl line 19
>>>>> Syntax error on token "then", invalid
>>>>> AssignmentOperator MPU/src/rules
>>>>> EEphratOBMain.drl line 19
>>>>> Syntax error, insert ";" to complete
>>>>> BlockStatements MPU/src/rules
>>>>> EEphratOBMain.drl line 19
>>>>> The left-hand side of an assignment must be a
>>>>> variable MPU/src/rules
EEphratOBMain.drl
>>>>> line 19
>>>>> unknown:19:28 mismatched token:
[@134,611:617='extends',<7>,19:28];
>>>>> expecting type THEN MPU/src/rules EEphratOBMain.drl
>>>>>
>>>>>
>>>>> I also understand about what you saying regarding additional things
I
>>>>> have to do to ensure that only the child rule executes, but I want to
go
>>>>> through the first step first :) Thanks!
>>>>>
>>>>>
>>>>> 2010/3/5 Edson Tirelli <ed.tirelli(a)gmail.com>
>>>>>
>>>>>>
>>>>>> Hmmm, you should be receiving a duplicate variable
declaration
>>>>>> error... would you please open a JIRA for us to double check what
is
>>>>>> happening and fix the error message?
>>>>>>
>>>>>> Meanwhile, try without repeating the constraints on the
parent
>>>>>> rule in the child rule:
>>>>>>
>>>>>>
>>>>>> rule "Definitions TermContractions 1.1"
>>>>>> when
>>>>>> mpr : MPUFacade()
>>>>>>
>>>>>>
eval(!mpr.isImportant(Constants.FINDING_KEYWORD_Contractions_Frequency))
>>>>>> then
>>>>>> mpr.print("Rule Definitions TermContractions 1.1
Executed");
>>>>>> end
>>>>>>
>>>>>> rule "TermContractions 2.8" extends "Definitions
TermContractions
>>>>>> 1.1"
>>>>>> when
>>>>>>
>>>>>> eval(!mpr.isImportant(Constants.FINDING_KEYWORD_TEST))
>>>>>> then
>>>>>> mpr.print("Rule TermContractions 2.8
Executed");
>>>>>> end
>>>>>>
>>>>>> Also, remember that unless you use some of the tricks I
mentioned
>>>>>> before, both rules will fire.
>>>>>>
>>>>>> []s
>>>>>> Edson
>>>>>>
>>>>>>
>>>>>> 2010/3/5 Moe Alkhafaji <moe.alkhafaji(a)medcpu.com>
>>>>>>
>>>>>> Here are the rules that I created (sorry for breaking that in
>>>>>>> multiple emails), I hope this is all the information needed:
>>>>>>>
>>>>>>> rule "Definitions TermContractions 1.1"
>>>>>>> when
>>>>>>> mpr : MPUFacade()
>>>>>>>
>>>>>>>
eval(!mpr.isImportant(Constants.FINDING_KEYWORD_Contractions_Frequency))
>>>>>>> then
>>>>>>> mpr.print("Rule Definitions TermContractions
1.1
>>>>>>> Executed");
>>>>>>> end
>>>>>>>
>>>>>>> rule "TermContractions 2.8" extends
"Definitions TermContractions
>>>>>>> 1.1" <=== Line 11
>>>>>>> when
>>>>>>> mpr : MPUFacade()
>>>>>>>
>>>>>>>
eval(!mpr.isImportant(Constants.FINDING_KEYWORD_Contractions_Frequency))
>>>>>>>
eval(!mpr.isImportant(Constants.FINDING_KEYWORD_TEST))
>>>>>>> then
>>>>>>> mpr.print("Rule TermContractions 2.8
Executed");
>>>>>>> end
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Mar 5, 2010 at 12:33 PM, Moe Alkhafaji <
>>>>>>> moe.alkhafaji(a)medcpu.com> wrote:
>>>>>>>
>>>>>>>> Specifically speaking, here is what I get on Eclipse when
I do
>>>>>>>> that:
>>>>>>>>
>>>>>>>>
>>>>>>>> nds.when cannot be resolved to a
>>>>>>>> type
MPU/src/rules
>>>>>>>> EEphratOBMain.drl line 11
>>>>>>>> Syntax error on token ":", ;
>>>>>>>> expected
MPU/src/rules
>>>>>>>> EEphratOBMain.drl line 11
>>>>>>>> Syntax error on token ""Definitions
TermContractions 1.1"", .
>>>>>>>> expected MPU/src/rules EEphratOBMain.drl line
11
>>>>>>>> Syntax error on token "then", invalid
>>>>>>>> AssignmentOperator MPU/src/rules
>>>>>>>> EEphratOBMain.drl line 11
>>>>>>>> Syntax error, insert ";" to complete
>>>>>>>> Statement
MPU/src/rules
>>>>>>>> EEphratOBMain.drl line 11
>>>>>>>> Syntax error, insert ";" to complete
>>>>>>>> Statement
MPU/src/rules
>>>>>>>> EEphratOBMain.drl line 11
>>>>>>>> Syntax error, insert ";" to complete
>>>>>>>> Statement
MPU/src/rules
>>>>>>>> EEphratOBMain.drl line 11
>>>>>>>>
>>>>>>>> Line 11 is:
>>>>>>>>
>>>>>>>> * rule "TermContractions 2.8" extends
"Definitions
>>>>>>>> TermContractions 1.1"*
>>>>>>>>
>>>>>>>> and "Definitions TermContractions 1.1" is
another rule defined in
>>>>>>>> the same drl.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Mar 5, 2010 at 12:04 PM, Moe Alkhafaji <
>>>>>>>> moe.alkhafaji(a)medcpu.com> wrote:
>>>>>>>>
>>>>>>>>> Thanks Edson, I will try that. However, I have one
follow up
>>>>>>>>> question. I tried to use the "extends"
command and it did not work (it gave
>>>>>>>>> me a syntax error). I am using the latest Drools 5.0
M1. Could it be because
>>>>>>>>> the Eclipse Drools plugin does not support this
feature yet and if I ignore
>>>>>>>>> this error on Eclipse it would still work at
runtime?
>>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>>
>>>>>>>>> 2010/3/5 Edson Tirelli <ed.tirelli(a)gmail.com>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Although I noticed the other day that this
is not
>>>>>>>>>> documented yet, Drools 5.0.x does support rule
inheritance. In your case, it
>>>>>>>>>> would be written as:
>>>>>>>>>>
>>>>>>>>>> rule r1
>>>>>>>>>> when
>>>>>>>>>> A()
>>>>>>>>>> then
>>>>>>>>>> // do something
>>>>>>>>>> end
>>>>>>>>>>
>>>>>>>>>> rule r2 extends r1
>>>>>>>>>> when
>>>>>>>>>> B()
>>>>>>>>>> then
>>>>>>>>>> // do something else
>>>>>>>>>> end
>>>>>>>>>>
>>>>>>>>>> When using inheritance, the subrule will
inherit the whole
>>>>>>>>>> LHS of the parent rule.
>>>>>>>>>>
>>>>>>>>>> Integration test here:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler...
>>>>>>>>>>
>>>>>>>>>>
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler...
>>>>>>>>>>
>>>>>>>>>> In your case, you have an extra requirement
that if a child
>>>>>>>>>> rule fires, you don't want the parent rule to
fire. My suggestion is either
>>>>>>>>>> doing this with a logical condition, or adding
drools.halt() on the
>>>>>>>>>> consequence of rules that should stop subsequent
firings, or using
>>>>>>>>>> activation-groups + salience. Example, in the
above case, you could have:
>>>>>>>>>>
>>>>>>>>>> rule r1
>>>>>>>>>> activation-group "example rules"
>>>>>>>>>> salience 10
>>>>>>>>>> when
>>>>>>>>>> A()
>>>>>>>>>> then
>>>>>>>>>> // do something
>>>>>>>>>> end
>>>>>>>>>>
>>>>>>>>>> rule r2 extends r1
>>>>>>>>>> activation-group "example rules"
>>>>>>>>>> salience 20
>>>>>>>>>> when
>>>>>>>>>> B()
>>>>>>>>>> then
>>>>>>>>>> // do something else
>>>>>>>>>> end
>>>>>>>>>>
>>>>>>>>>> Since rule 2 has a higher salience, if it
activates it will
>>>>>>>>>> fire first, and due to the activation-group, it
will cancel the activation
>>>>>>>>>> of r1 preventing it to fire.
>>>>>>>>>>
>>>>>>>>>> Hope it helps.
>>>>>>>>>>
>>>>>>>>>> Edson
>>>>>>>>>>
>>>>>>>>>> 2010/3/5 malkhafaji
<moe.alkhafaji(a)medcpu.com>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Hello,
>>>>>>>>>>>
>>>>>>>>>>> I know, from searching this forum and posting
before, that the
>>>>>>>>>>> concept of
>>>>>>>>>>> inheritance does not exist today in Drools.
However, I have a
>>>>>>>>>>> need for it.
>>>>>>>>>>> Here is my specific situation:
>>>>>>>>>>>
>>>>>>>>>>> I have certain rules that have some generic
conditions to be
>>>>>>>>>>> fired:
>>>>>>>>>>>
>>>>>>>>>>> Rule 1
>>>>>>>>>>> If A Then X end
>>>>>>>>>>>
>>>>>>>>>>> Rule 2
>>>>>>>>>>> If A, B Then Y end
>>>>>>>>>>>
>>>>>>>>>>> What I would like to do is, if Rule 2 is
true, then I don't want
>>>>>>>>>>> Rule 1 to
>>>>>>>>>>> execute. I have many and many of those rules,
so combining all
>>>>>>>>>>> the
>>>>>>>>>>> conditions in less number of rules violates
our design having
>>>>>>>>>>> rules being
>>>>>>>>>>> mutually exclusive. That is why I wanted to
include this
>>>>>>>>>>> behavior as a
>>>>>>>>>>> natural inheritance behavior rather than
forcing the flow with
>>>>>>>>>>> logic inside
>>>>>>>>>>> the rule itself (you will make rules aware of
others this way).
>>>>>>>>>>>
>>>>>>>>>>> So, since there is not built-in feature that
allows you to do
>>>>>>>>>>> that, do
>>>>>>>>>>> people suggest anything that I can do without
having to mix Rule
>>>>>>>>>>> 1 and Rule
>>>>>>>>>>> 2 into one rule with complex conditional
statements? Any ideas?
>>>>>>>>>>>
>>>>>>>>>>> The only thing I can think of is taking this
logic processing
>>>>>>>>>>> outside of
>>>>>>>>>>> drools, which is something that I am not too
excited about.
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> View this message in context:
>>>>>>>>>>>
http://n3.nabble.com/Inheritance-Like-Design-Question-tp430848p430848.html
>>>>>>>>>>> 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
>>>>>>>>>> JBoss Drools Core Development
>>>>>>>>>> JBoss by Red Hat @
www.jboss.com
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> rules-users mailing list
>>>>>>>>>> rules-users(a)lists.jboss.org
>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Moe Alkhafaji
>>>>>>>>> Chief Technology Officer, MedCPU
>>>>>>>>> Phone: (630) 290-1113
>>>>>>>>> Email: cto(a)medcpu.com
>>>>>>>>>
>>>>>>>>> This message contains information which may be
confidential.
>>>>>>>>> Unless you are the addressee, you may not use, copy
or disclose to anyone
>>>>>>>>> the message or any information contained in this
message. If you have
>>>>>>>>> received this email in error, please notify
cto(a)medcpu.com and
>>>>>>>>> please delete the message immediately. In order for
the contents of this
>>>>>>>>> message to be binding on behalf of MedCPU it must be
confirmed in writing by
>>>>>>>>> an authorized signatory of MedCPU. Our company
accepts no liability for the
>>>>>>>>> content of this email unless it is so confirmed. The
views or opinions
>>>>>>>>> presented herein do not necessarily represent those
of the company.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Moe Alkhafaji
>>>>>>>> Chief Technology Officer, MedCPU
>>>>>>>> Phone: (630) 290-1113
>>>>>>>> Email: cto(a)medcpu.com
>>>>>>>>
>>>>>>>> This message contains information which may be
confidential. Unless
>>>>>>>> you are the addressee, you may not use, copy or disclose
to anyone the
>>>>>>>> message or any information contained in this message. If
you have received
>>>>>>>> this email in error, please notify cto(a)medcpu.com and
please
>>>>>>>> delete the message immediately. In order for the contents
of this message to
>>>>>>>> be binding on behalf of MedCPU it must be confirmed in
writing by an
>>>>>>>> authorized signatory of MedCPU. Our company accepts no
liability for the
>>>>>>>> content of this email unless it is so confirmed. The
views or opinions
>>>>>>>> presented herein do not necessarily represent those of
the company.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Moe Alkhafaji
>>>>>>> Chief Technology Officer, MedCPU
>>>>>>> Phone: (630) 290-1113
>>>>>>> Email: cto(a)medcpu.com
>>>>>>>
>>>>>>> This message contains information which may be confidential.
Unless
>>>>>>> you are the addressee, you may not use, copy or disclose to
anyone the
>>>>>>> message or any information contained in this message. If you
have received
>>>>>>> this email in error, please notify cto(a)medcpu.com and please
delete
>>>>>>> the message immediately. In order for the contents of this
message to be
>>>>>>> binding on behalf of MedCPU it must be confirmed in writing
by an authorized
>>>>>>> signatory of MedCPU. Our company accepts no liability for the
content of
>>>>>>> this email unless it is so confirmed. The views or opinions
presented herein
>>>>>>> do not necessarily represent those of the company.
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> rules-users mailing list
>>>>>>> rules-users(a)lists.jboss.org
>>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Edson Tirelli
>>>>>> JBoss Drools Core Development
>>>>>> JBoss by Red Hat @
www.jboss.com
>>>>>>
>>>>>> _______________________________________________
>>>>>> rules-users mailing list
>>>>>> rules-users(a)lists.jboss.org
>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Moe Alkhafaji
>>>>> Chief Technology Officer, MedCPU
>>>>> Phone: (630) 290-1113
>>>>> Email: cto(a)medcpu.com
>>>>>
>>>>> This message contains information which may be confidential. Unless
>>>>> you are the addressee, you may not use, copy or disclose to anyone
the
>>>>> message or any information contained in this message. If you have
received
>>>>> this email in error, please notify cto(a)medcpu.com and please delete
>>>>> the message immediately. In order for the contents of this message to
be
>>>>> binding on behalf of MedCPU it must be confirmed in writing by an
authorized
>>>>> signatory of MedCPU. Our company accepts no liability for the content
of
>>>>> this email unless it is so confirmed. The views or opinions presented
herein
>>>>> do not necessarily represent those of the company.
>>>>>
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users(a)lists.jboss.org
>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Edson Tirelli
>>>> JBoss Drools Core Development
>>>> JBoss by Red Hat @
www.jboss.com
>>>>
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>
>>>
>>> --
>>> Moe Alkhafaji
>>> Chief Technology Officer, MedCPU
>>> Phone: (630) 290-1113
>>> Email: cto(a)medcpu.com
>>>
>>> This message contains information which may be confidential. Unless you
>>> are the addressee, you may not use, copy or disclose to anyone the message
>>> or any information contained in this message. If you have received this
>>> email in error, please notify cto(a)medcpu.com and please delete the
>>> message immediately. In order for the contents of this message to be binding
>>> on behalf of MedCPU it must be confirmed in writing by an authorized
>>> signatory of MedCPU. Our company accepts no liability for the content of
>>> this email unless it is so confirmed. The views or opinions presented herein
>>> do not necessarily represent those of the company.
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>>
>> --
>> Edson Tirelli
>> JBoss Drools Core Development
>> JBoss by Red Hat @
www.jboss.com
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
>
> --
> Moe Alkhafaji
> Chief Technology Officer, MedCPU
> Phone: (630) 290-1113
> Email: cto(a)medcpu.com
>
> This message contains information which may be confidential. Unless you
> are the addressee, you may not use, copy or disclose to anyone the message
> or any information contained in this message. If you have received this
> email in error, please notify cto(a)medcpu.com and please delete the
> message immediately. In order for the contents of this message to be binding
> on behalf of MedCPU it must be confirmed in writing by an authorized
> signatory of MedCPU. Our company accepts no liability for the content of
> this email unless it is so confirmed. The views or opinions presented herein
> do not necessarily represent those of the company.
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @
www.jboss.com
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Moe Alkhafaji
Chief Technology Officer, MedCPU
Phone: (630) 290-1113
Email: cto(a)medcpu.com
This message contains information which may be confidential. Unless you are
the addressee, you may not use, copy or disclose to anyone the message or
any information contained in this message. If you have received this email
in error, please notify cto(a)medcpu.com and please delete the message
immediately. In order for the contents of this message to be binding on
behalf of MedCPU it must be confirmed in writing by an authorized signatory
of MedCPU. Our company accepts no liability for the content of this email
unless it is so confirmed. The views or opinions presented herein do not
necessarily represent those of the company.