[rules-users] Rules in App Server Error

John McKim jmckim at comcast.net
Fri Dec 3 16:15:06 EST 2010


Thanks for the reply Mauricio.  I tried what you said using this modified
rule:

 

rule "medicalHistoryBleedingRiskFactors.gastritis rule"

salience 20

    when

        # find patients who indicated that they have
MedicalHistoryBleedingRiskFactors: gastritis

        $patient : Patient(medicalHistoryBleedingRiskFactors.gastritis > 0)

    then

        String severity =
$patient.medicalHistoryBleedingRiskFactors.gastritis; 

        $weight = 5;

        $factor = .1;

        $tempScore = $factor;

        $tempScore = $tempScore * $weight;

        $tempScore = $tempScore * $severity;

        # Now add this risk score to the accumlated risk score

        $patient.score = $patient.score + $tempScore;

        $patient.problem = new
String("MedicalHistoryBleedingRiskFactors.gastritis");

end

 

But I got this exception in the client (I am using 5.1.1 by the way):

 

Exception in thread "Thread-4" java.lang.RuntimeException: Unable to build
expression for 'consequence': [Error: Failed to compile: 1 compilation
error(s): 

 - (1,9) unqualified type in strict mode for: $severity]

[Near : {... Unknown ....}]

             ^

[Line: 1, Column: 0] '        String severity =
$patient.medicalHistoryBleedingRiskFactors.gastritis; 

        $weight = 5;

        $factor = .1;

        $tempScore = $factor;

        $tempScore = $tempScore * $weight;

        $tempScore = $tempScore * $severity;

        // Now add this risk score to the accumlated risk score

        $patient.score = $patient.score + $tempScore;

        $patient.problem = new
String("MedicalHistoryBleedingRiskFactors.gastritis");

' : [Rule name='medicalHistoryBleedingRiskFactors.gastritis rule']

 

        at
com.kai.framework.plugins.ruleengine.LocalRuleEnginePlugin.createLevel1Knowl
edgeBase(LocalRuleEnginePlugin.java:107)

        at
com.kai.framework.plugins.ruleengine.LocalRuleEnginePlugin.access$100(LocalR
uleEnginePlugin.java:22)

        at
com.kai.framework.plugins.ruleengine.LocalRuleEnginePlugin$InitializeRuleEng
ine.run(LocalRuleEnginePlugin.java:192)

 

When I took out the String severity and used just $severity:  it works fine.
Just on the App server does it fail.

 

From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Mauricio Salatino
Sent: Friday, December 03, 2010 3:36 PM
To: Rules Users List
Subject: Re: [rules-users] Rules in App Server Error

 

that's weird.. you are using a varible that you never define in the Right
Hand Side.
$severity was never defined. In the RHS remember that you can write pure
java. So if you want a variable called severity you should declare it as:
String severity = $patient.

medicalHistoryBleedingRiskFactors.gastritis; 

Greetings.

 

2010/12/3 John McKim <jmckim at comcast.net>

I'm having a problem that I can't seem to figure out.  I have rules that run
in a client program with no problem - about 125 rules in all.  When I try to
run these same rules in an App Server (GlassFish) I get several rules (about
5) that have an error on initialization.  Here is the error message followed
by the rule. 

******************************************* 
SEVERE: java.lang.RuntimeException: Unable to build expression for
'consequence': [Error: not a statement, or badly formed structure] 
[Near : {... $severity; 
                   ....}] 
                     ^ 
[Line: 1, Column: 233] '        $severity =
$patient.medicalHistoryBleedingRiskFactors.gastritis; 
        $weight = 5; 
        $factor = .1; 
        $tempScore = $factor; 
        $tempScore = $tempScore * $weight; 
        $tempScore = $tempScore * $severity; 
        // Now add this risk score to the accumlated risk score 
        $patient.score = $patient.score + $tempScore; 
        $patient.problem = new
String("MedicalHistoryBleedingRiskFactors.gastritis"); 
' : [Rule name='medicalHistoryBleedingRiskFactors.gastritis rule'] 
********************************************** 
rule "medicalHistoryBleedingRiskFactors.gastritis rule" 
salience 20 
    when 
        # find patients who indicated that they have
MedicalHistoryBleedingRiskFactors: gastritis 
        $patient : Patient(medicalHistoryBleedingRiskFactors.gastritis > 0) 
    then 
        $severity = $patient.medicalHistoryBleedingRiskFactors.gastritis; 
        $weight = 5; 
        $factor = .1; 
        $tempScore = $factor; 
        $tempScore = $tempScore * $weight; 
        $tempScore = $tempScore * $severity; 
        # Now add this risk score to the accumlated risk score 
        $patient.score = $patient.score + $tempScore; 
        $patient.problem = new
String("MedicalHistoryBleedingRiskFactors.gastritis"); 
end 

As I said, this rule runs fine in a client app - when I run the same rules
in app server I get an error.  This is only happening in 5 out of 125 rules,
and only during initialization using
builder.add(ResourceFactory.newClassPathResource(file).
Thanks.

 


_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




-- 
 - CTO @ http://www.plugtree.com  
 - MyJourney @ http://salaboy.wordpress.com
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20101203/71fee893/attachment.html 


More information about the rules-users mailing list