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-tf3146827.html#a8723907
Sent from the drools - user mailing list archive at Nabble.com.

_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to