initialze the variables with -1 and then assert
add the following to the rules as the first eval condition
rule "gst_rate_ol"
eval(QuoteUpdater . getQuoteLevelGSTRate () == -1 )
rule "NZ_SD"
eval(
QuoteUpdater . getQuoteLevelGSTStreamRate ( ) == -1) ;
QuoteUpdater . getQuoteLevelStampDutyRate ( ) == -1);
QuoteUpdater . getQuoteLevelStampDutyAmount()==-1);
)
rule "gst_stream_rate_ol"
eval(QuoteUpdater . getQuoteLevelGSTStreamRate () == -1);
Tell me if it works
Nirmal
KAPX wrote:
Hi,
I am using drools version 3.0. I have a recursion problem while executing
a rule.
Here is the sample code.
import com.thirdpillar.QuoteUpdater
import java.lang.String
import java.math.BigDecimal
global BigDecimal TEMP
global BigDecimal GL_SD_Amt
rule "gst_rate_ol"
no-loop true
salience 50
when
QuoteUpdater:QuoteUpdater()
eval(QuoteUpdater.getCustomerTypeCountry().equals("New Zealand") &&
QuoteUpdater.isFinanceLease() == true ||
QuoteUpdater.isRental() == true ||
QuoteUpdater.isOperatingLease() == true ||
QuoteUpdater.isHirePurchase() == true)
then
System.out.println("1");
TEMP = BigDecimal . valueOf ( 0.125 ) ;
QuoteUpdater . setQuoteLevelGSTRate ( BigDecimal . valueOf ( TEMP .
doubleValue ( ) ) ) ;
modify(QuoteUpdater);
end
rule "NZ_SD"
no-loop true
salience 45
when
QuoteUpdater:QuoteUpdater()
eval(QuoteUpdater . getCustomerTypeCountry ( ).equals("New Zealand"))
then
System.out.println("2");
QuoteUpdater . setQuoteLevelGSTStreamRate ( BigDecimal . valueOf ( 0 )
) ;
QuoteUpdater . setQuoteLevelStampDutyRate ( BigDecimal . valueOf ( 0 )
) ;
GL_SD_Amt = BigDecimal . valueOf ( 0 ) ;
QuoteUpdater . setQuoteLevelStampDutyAmount ( BigDecimal . valueOf ( 0
) ) ;
modify(QuoteUpdater);
end
rule "gst_stream_rate_ol"
salience 40
no-loop true
when
QuoteUpdater:QuoteUpdater()
eval(QuoteUpdater.getCustomerTypeCountry().equals("New Zealand") &&
QuoteUpdater.isRental() == true ||
QuoteUpdater.isOperatingLease() == true)
then
System.out.println("3");
TEMP = BigDecimal . valueOf ( 0.125 ) ;
QuoteUpdater . setQuoteLevelGSTStreamRate ( BigDecimal . valueOf ( TEMP
. doubleValue ( ) ) ) ;
modify(QuoteUpdater);
end
Please help me out to resolve this problem. If you have any solution of
how to handle it please give your inputs and suggestions.
Regards,
KAPIL
--
View this message in context:
http://www.nabble.com/Recursion-problem-whilc-execution-of-rules-tf314682...
Sent from the drools - user mailing list archive at
Nabble.com.