|
List Info
Thread: Re: DRL authoring help
|
|
| Re: DRL authoring help |
  United States |
2007-06-18 11:01:17 |
|
Hi Krishnan, I need the class itself to be global as I might have to access other functions of it as I go along in the effort. I cannot seem to be able to call the methods of this global class. I have also added a snippet of the code. Thanks Smitha Here is my drl drl= package test.tools.rulesengine import test.tools.rulesengine.Utilities; global test.tools.rulesengine.Utilities util; rule "Rule1" when $Position1 : PosReport() eval($Position1.getName() == "POS_0_1") then util.setColor($Position1, "red"); end try { builder.addPackageFromDrl(new StringReader( drl)
); if(firstCall){ ruleBase = RuleBaseFactory.newRuleBase(); ruleBase.addPackage( builder.getPackage() ); workingMemory = ruleBase.newWorkingMemory(); Utilities util = new Utilities(); workingMemory.setGlobal("util", util); firstCall = false; }else ruleBase.addPackage( builder.getPackage() ); //workingMemory = ruleBase.newWorkingMemory(); } catch (DroolsParserException e1)
{ // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Krishnan <krishiyer gmail.com> wrote: Hi Smitha,
They way I understand, in the then clause you would like to call a static function from some class. So, then you can add that to the import and access it directly. It does not have to be global. However, if for some reason you do need to add it as a global,, let me know.
send that when part of the rule again.
-Krishnan.
On 6/18/07, Smitha Bhat < bhat_smitha yahoo.com">bhat_smitha yahoo.com > wrote: Hi Krishnan, I need the functionality of being able to call methods of a global class in the 'then' piece of the drl. I had defined the drl file as: package test.tools.rulesengine import test.tools.rulesengine.Utilities; global test.tools.rulesengine.Utilities util; rule "Rule1"................. When I debug the 'when' piece, I see that the method to check the name is being called, but tfter that, the global util's class method is not called. Any pointers would be
helpful. Thanks, Hi Smitha,
Rewrite the rule as follows :-
rule "Rule1" when $Position1 : Position ( name matches "POS-RPT_0_1" ) then
$Position.setColor("red"); end Note : You had something called util, unless it is a global, it will not work. -Krishnan.
On 6/18/07, Smitha Bhat <yahoo.com" target=_blank> bhat_smitha yahoo.com> wrote: Hi, I am new to JBoss rules. I have a .drl as given below: rule "Rule1" when $Position1 : Position() eval($Position1.getName() contains "POS-RPT_0_1") then util.setColor($Position1, "red"); end Before firing the rules, I assert my object as posIn = new Position(name, id, symbolCode, lonDouble, latDouble, elevDouble, reportDate, this); workingMemory.assertObject ( posIn ); workingMemory.fireAllRules(); I get the following error.
org.drools.rule.InvalidRulePackage: Rule Compilation error The left-hand side of an assignment must be a variable Syntax error on token "contains", invalid AssignmentOperator at org.drools.rule.Package.checkValidity(Unknown Source) at org.drools.common.AbstractRuleBase.addPackage(Unknown Source) What is wrong with my drl? I have a Utilities class that I have defined as global. Thanks Looking for a deal? Find great prices on flights and hotels with Yahoo! FareChase. _______________________________________________ rules-users mailing list lists.jboss.org" target=_blank>rules-users lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
-- Sivaramakrishna Iyer Krishnan (Anand)
Never assume the obvious is true.
- William Safire _______________________________________________ rules-users mailing list lists.jboss.org" target=_blank>rules-users lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Need a vacation? Get
great deals to amazing places on Yahoo! Travel. _______________________________________________ rules-users mailing list lists.jboss.org">rules-users lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
-- Sivaramakrishna Iyer Krishnan (Anand)
Never assume the obvious is true. - William Safire _______________________________________________ rules-users mailing list rules-users lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
;
Get the Yahoo! toolbar and be alerted to new email wherever you're surfing.
|
| Re: DRL authoring help |

|
2007-06-18 11:34:45 |
|
hi smitha,
how do you know that setColor() is not getting called ?. Is it because you have a break point inside this method. Let me try this experiment and get back to you about whether it is working for me or not. Also, which version of
drools are you using ?
-Krishnan.
On 6/18/07, Smitha Bhat < bhat_smitha yahoo.com">bhat_smitha yahoo.com> wrote:
Hi Krishnan, I need the class itself to be global as I might have to access other functions of it as I go along in the effort.
I cannot seem to be able to call the methods of this global class. I have also added a snippet of the code. Thanks Smitha Here is my drl
drl= package test.tools.rulesengine import test.tools.rulesengine.Utilities; global test.tools.rulesengine.Utilities util;
rule "Rule1" when $Position1 : PosReport() eval($Position1.getName() == "POS_0_1")
then util.setColor($Position1, "red");
end try { builder.addPackageFromDrl
(new StringReader( drl)
); if(firstCall){ ruleBase = RuleBaseFactory.newRuleBase(); ruleBase.addPackage( builder.getPackage() ); workingMemory = ruleBase.newWorkingMemory(); Utilities util = new Utilities();
workingMemory.setGlobal("util", util); firstCall = false; }else ruleBase.addPackage( builder.getPackage() ); //workingMemory = ruleBase.newWorkingMemory
(); } catch (DroolsParserException e1)
{ // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (Exception e1) { // TODO Auto-generated catch block
e1.printStackTrace(); } Krishnan < krishiyer gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
krishiyer gmail.com> wrote: Hi Smitha,
They way I understand, in the then clause you would like to call a static function from some class. So, then you can add that to the import and access it directly. It does not have to be global. However, if for some reason you do need to add it as a global,, let me know.
send that when part of the rule again.
-Krishnan.
On 6/18/07, Smitha Bhat < bhat_smitha yahoo.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
bhat_smitha yahoo.com > wrote: Hi Krishnan, I need the functionality of being able to call methods of a global class in the 'then' piece of the drl. I had defined the drl file as:
package test.tools.rulesengine import test.tools.rulesengine.Utilities; global test.tools.rulesengine.Utilities util; rule "Rule1".................
When I debug the 'when' piece, I see that the method to check the name is being called, but tfter that, the global util's class method is not called. Any pointers would be
helpful. Thanks, Smitha
Krishnan < krishiyer gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> krishiyer gmail.com
> wrote: Hi Smitha,
Rewrite the rule as follows :-
rule "Rule1" when $Position1 : Position ( name matches "POS-RPT_0_1" ) then
$Position.setColor("red"); end Note : You had something called util, unless it is a global, it will not work.
-Krishnan.
On 6/18/07, Smitha Bhat < bhat_smitha yahoo.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> bhat_smitha yahoo.com
> wrote: Hi, I am new to JBoss rules. I have a .drl as given below:
rule "Rule1" when $Position1 : Position()
eval($Position1.getName() contains "POS-RPT_0_1") then
util.setColor($Position1, "red"); end
Before firing the rules, I assert my object as posIn = new Position(name,
id, symbolCode, lonDouble, latDouble, elevDouble, reportDate, this); workingMemory.assertObject ( posIn ); workingMemory.fireAllRules();
I get the following error.
org.drools.rule.InvalidRulePackage: Rule Compilation error The left-hand side of an assignment must be a variable Syntax error on token "contains", invalid AssignmentOperator
at org.drools.rule.Package.checkValidity(Unknown Source)
at org.drools.common.AbstractRuleBase.addPackage(Unknown Source)
What is wrong with my drl? I have a Utilities class that I have defined as global.
Thanks Looking for a deal?
Find great prices on flights and hotels with Yahoo! FareChase. _______________________________________________ rules-users mailing list rules-users lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
rules-users lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
-- Sivaramakrishna Iyer Krishnan (Anand)
Never assume the obvious is true.
- William Safire _______________________________________________
rules-users mailing list rules-users lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">rules-users lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
Need a vacation?
Get
great deals to amazing places on Yahoo! Travel. _______________________________________________ rules-users mailing list rules-users lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
rules-users lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
-- Sivaramakrishna Iyer Krishnan (Anand)
Never assume the obvious is true.
- William Safire _______________________________________________
rules-users mailing list rules-users lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">rules-users lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
Get the Yahoo! toolbar and
be alerted to new email wherever you're surfing. _______________________________________________ rules-users mailing list lists.jboss.org">
rules-users lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
-- Sivaramakrishna Iyer Krishnan (Anand)
Never assume the obvious is true. - William Safire
|
| Re: DRL authoring help |
  United Kingdom |
2007-06-18 11:29:34 |
|
class instances are globals, classes themselves aren't.
Mark
Smitha Bhat wrote:
web60316.mail.yahoo.com"
type="cite">
Hi Krishnan,
I need the class itself to be global as I might have to access
other functions of it as I go along in the effort.
I cannot seem to be able to call the methods of this global
class. I have also added a snippet of the code.
Thanks
Smitha
Here is my drl
drl=
package test.tools.rulesengine
import test.tools.rulesengine.Utilities;
global test.tools.rulesengine.Utilities util;
rule "Rule1"
when
$Position1 : PosReport()
eval($Position1.getName() == "POS_0_1")
then
util.setColor($Position1, "red");
end
try {
builder.addPackageFromDrl(new StringReader( drl) );
if(firstCall){
ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( builder.getPackage() );
workingMemory = ruleBase.newWorkingMemory();
Utilities util = new Utilities();
workingMemory.setGlobal("util", util);
firstCall = false;
}else
ruleBase.addPackage( builder.getPackage() );
//workingMemory = ruleBase.newWorkingMemory();
} catch (DroolsParserException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Hi Smitha,
They way I understand, in the then clause you would like to call a
static function from some class. So, then you can add that to the
import and access it directly. It does not have to be global. However,
if for some reason you do need to add it as a global,, let me know.
send that when part of the rule again.
-Krishnan.
On 6/18/07, Smitha Bhat <yahoo.com">bhat_smitha yahoo.com >
wrote:
Hi Krishnan,
I need the functionality of being able to call methods of a
global class in the 'then' piece of the drl. I had defined the drl file
as:
package test.tools.rulesengine
import test.tools.rulesengine.Utilities;
global test.tools.rulesengine.Utilities util;
rule "Rule1".................
When I debug the 'when' piece, I see that the method to
check the name is being called, but tfter that, the global util's class
method is not called. Any pointers would be helpful.
Thanks,
Hi Smitha,
Rewrite the rule as follows :-
rule "Rule1"
when
$Position1 : Position ( name matches
"POS-RPT_0_1" )
then
$Position.setColor("red");
end
Note : You had something called util, unless it is a global, it will
not work.
-Krishnan.
On 6/18/07, Smitha Bhat <yahoo.com" target="_blank">
bhat_smitha yahoo.com> wrote:
Hi,
I am new to JBoss rules. I have a .drl as given below:
rule "Rule1"
when
$Position1 : Position()
eval($Position1.getName() contains
"POS-RPT_0_1")
then
util.setColor($Position1, "red");
end
Before firing the rules, I assert my
object as
posIn = new Position(name,
id,
symbolCode,
lonDouble,
latDouble,
elevDouble,
reportDate,
this);
workingMemory.assertObject ( posIn );
workingMemory.fireAllRules();
I get the following error.
org.drools.rule.InvalidRulePackage: Rule Compilation
error The left-hand side of an assignment must be a variable Syntax
error on token "contains", invalid AssignmentOperator
at
org.drools.rule.Package.checkValidity(Unknown Source)
at
org.drools.common.AbstractRuleBase.addPackage(Unknown Source)
What is
wrong with my drl? I have a Utilities class that I have defined as
global.
Thanks
Looking for a deal? Find great prices on flights and hotels with
Yahoo! FareChase.
_______________________________________________
rules-users mailing list
lists.jboss.org" target="_blank">rules-users lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Sivaramakrishna Iyer Krishnan (Anand)
Never assume the obvious is true.
- William Safire _______________________________________________
rules-users mailing list
lists.jboss.org" target="_blank">rules-users lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
Need a vacation? Get great deals to amazing places on Yahoo!
Travel.
_______________________________________________
rules-users mailing list
lists.jboss.org">rules-users lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Sivaramakrishna Iyer Krishnan (Anand)
Never assume the obvious is true.
- William Safire _______________________________________________
rules-users mailing list
lists.jboss.org">rules-users lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
Get the Yahoo! toolbar and be
alerted to new email wherever you're surfing.
_______________________________________________
rules-users mailing list
lists.jboss.org">rules-users lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
|
[1-3]
|
|