[rules-users] Problems with int and Integer inside Return Value and Predicate Expression

Felipe Piccolini felipe.piccolini at bluesoft.cl
Wed Apr 11 18:01:38 EDT 2007


I tested this changing all attributes to Long and happens the same  
error:

s: Solicitud( sumaLCG: sumaMontoLCG < max, sumaGTIA:  
sumaMontoGarantia >= ( new Long( sumaLCG.intValue() -  min.intValue 
() )) )

public class Solicitud implements Serializable {
	private Long	 			sumaMontoLCG; // suma de los montos contenidos en  
cada LineaCredito contenida en la lista LCG
	private int				resolucion; // se guarda el RES_PUEDE_APROVAR o el  
RES_DEBE_RECOMENDAR
	private boolean			aprovada; //si esta finalmente aprovada o no.
	private Long	 			sumaMontoGarantia;//suma de montos de garantias de  
todos los productos del LCG
	
	public Solicitud(){
		this.LCG				= new ArrayList<LineaCredito>();
		this.sumaMontoLCG		= new Long(0);
		this.resolucion			= Solicitud.RES_SIN_RESOLUCION;
		this.aprovada			= false;
		this.sumaMontoGarantia	= new Long(0);
	}

	public Long getSumaMontoLCG() {
		recalculaSumaMontoLCG();
		return sumaMontoLCG;
	}

	public void setSumaMontoLCG(int sumaMontoLCG) {
		this.sumaMontoLCG = new Long(sumaMontoLCG);
	}
	
	public void setSumaMontoLCG(long sumaMontoLCG) {
		this.sumaMontoLCG = new Long(sumaMontoLCG);
	}
	
	public void setSumaMontoLCG(Long sumaMontoLCG) {
		this.sumaMontoLCG =sumaMontoLCG;
	}
....

org.drools.RuntimeDroolsException:  
java.lang.ArrayIndexOutOfBoundsException: 1
	at org.drools.rule.ReturnValueConstraint.isAllowed(Unknown Source)
	at org.drools.common.BetaNodeBinder.isAllowed(Unknown Source)
	at org.drools.reteoo.TupleSource.attemptJoin(Unknown Source)
	at org.drools.reteoo.JoinNode.assertTuple(Unknown Source)
	at org.drools.reteoo.LeftInputAdapterNode.createAndAssertTuple 
(Unknown Source)
	at org.drools.reteoo.LeftInputAdapterNode.assertObject(Unknown Source)
	at org.drools.reteoo.ObjectSource.propagateAssertObject(Unknown Source)
	at org.drools.reteoo.AlphaNode.assertObject(Unknown Source)
	at org.drools.reteoo.ObjectSource.propagateAssertObject(Unknown Source)
	at org.drools.reteoo.ObjectTypeNode.assertObject(Unknown Source)
	at org.drools.reteoo.Rete.assertObject(Unknown Source)
	at org.drools.reteoo.ReteooRuleBase.assertObject(Unknown Source)
	at org.drools.reteoo.ReteooWorkingMemory.doAssertObject(Unknown Source)
	at org.drools.common.AbstractWorkingMemory.assertObject(Unknown Source)
	at org.drools.common.AbstractWorkingMemory.assertObject(Unknown Source)
	at  
cl.bluesoft.jbrules.loader.solcred.SolcredRulesPoC.fireRulesSOLCRED 
(SolcredRulesPoC.java:83)
	at cl.bluesoft.jbrules.loader.solcred.SolcredRulesPoC.main 
(SolcredRulesPoC.java:38)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
	at org.drools.reteoo.FactHandleList.get(Unknown Source)
	at org.drools.reteoo.TupleKey.get(Unknown Source)
	at org.drools.reteoo.ReteTuple.get(Unknown Source)
	at org.drools.reteoo.ReteTuple.get(Unknown Source)
	at  
cl.bluesoft.jbrules.rules.solcred.Rule_montos_maximos_y_minimos_0ReturnV 
alue0Invoker.evaluate 
(Rule_montos_maximos_y_minimos_0ReturnValue0Invoker.java:12)
	... 17 more



On 11-04-2007, at 11:59, Felipe Piccolini wrote:

> The Solicitud object has sumaMontoLCG and sumaMontoGarantia atts as  
> int (primitives).
>
> Im using 3.0.6 and java 1.5
>
> I have this simple rule:
>
> rule "montos maximos y minimos"
> 	salience 888
> 	when
> 		a: Actor(tipo :tipoActor == Actor.JefeOficina, max: limiteMaximo,  
> min: limiteMinimo)
> 		s: Solicitud( sumaLCG: sumaMontoLCG < max, sumaGTIA:  
> sumaMontoGarantia -> ( (sumaLCG.intValue() - sumaGTIA.intValue()) <  
> min.intValue()) )
> 	then
> 		System.out.println("Suma LCG:"+sumaLCG);
> 		System.out.println("Actor lim max:"+max);
> 		System.out.println("Actor tipo:"+tipo);
> end
>
> Fire the rule shows me this error:
> org.drools.RuntimeDroolsException:  
> java.lang.ArrayIndexOutOfBoundsException: 1
> 	at org.drools.rule.PredicateConstraint.isAllowed(Unknown Source)
> 	at org.drools.common.BetaNodeBinder.isAllowed(Unknown Source)
> 	at org.drools.reteoo.TupleSource.attemptJoin(Unknown Source)
> 	at org.drools.reteoo.JoinNode.assertTuple(Unknown Source)
> 	at org.drools.reteoo.LeftInputAdapterNode.createAndAssertTuple 
> (Unknown Source)
> 	at org.drools.reteoo.LeftInputAdapterNode.assertObject(Unknown  
> Source)
> 	at org.drools.reteoo.ObjectSource.propagateAssertObject(Unknown  
> Source)
> 	at org.drools.reteoo.AlphaNode.assertObject(Unknown Source)
> 	at org.drools.reteoo.ObjectSource.propagateAssertObject(Unknown  
> Source)
> 	at org.drools.reteoo.ObjectTypeNode.assertObject(Unknown Source)
> 	at org.drools.reteoo.Rete.assertObject(Unknown Source)
> 	at org.drools.reteoo.ReteooRuleBase.assertObject(Unknown Source)
> 	at org.drools.reteoo.ReteooWorkingMemory.doAssertObject(Unknown  
> Source)
> 	at org.drools.common.AbstractWorkingMemory.assertObject(Unknown  
> Source)
> 	at org.drools.common.AbstractWorkingMemory.assertObject(Unknown  
> Source)
> 	at  
> cl.bluesoft.jbrules.loader.solcred.SolcredRulesPoC.fireRulesSOLCRED 
> (SolcredRulesPoC.java:85)
> 	at cl.bluesoft.jbrules.loader.solcred.SolcredRulesPoC.main 
> (SolcredRulesPoC.java:40)
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
> 	at org.drools.reteoo.FactHandleList.get(Unknown Source)
> 	at org.drools.reteoo.TupleKey.get(Unknown Source)
> 	at org.drools.reteoo.ReteTuple.get(Unknown Source)
> 	at org.drools.reteoo.ReteTuple.get(Unknown Source)
> 	at  
> cl.bluesoft.jbrules.rules.solcred.Rule_montos_maximos_y_minimos_0Predi 
> cate0Invoker.evaluate 
> (Rule_montos_maximos_y_minimos_0Predicate0Invoker.java:14)
> 	... 17 more
>
>
> When I change the column to:
> 	s: Solicitud( sumaLCG: sumaMontoLCG < max, sumaGTIA:  
> sumaMontoGarantia -> ( (sumaLCG - sumaGTIA) < min) )
>
> its shows this error:
> org.drools.rule.InvalidRulePackage: Rule Compilation error The  
> operator - is undefined for the argument type(s) java.lang.Integer,  
> java.lang.Integer
>
> 	at org.drools.rule.Package.checkValidity(Unknown Source)
> 	at org.drools.common.AbstractRuleBase.addPackage(Unknown Source)
> 	at cl.bluesoft.jbrules.loader.solcred.SolcredRulesPoC.readRule 
> (SolcredRulesPoC.java:60)
> 	at cl.bluesoft.jbrules.loader.solcred.SolcredRulesPoC.main 
> (SolcredRulesPoC.java:36)
>
> This happens in a predicate or in a value expression, so I cant use  
> this formula... What is wrong?
>
> Thx.
>
>
>
> Felipe Piccolini M.
> felipe.piccolini at bluesoft.cl
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users



Atentamente,
______________________
Felipe Piccolini Marfull
Jefe de Proyectos
Agustina 1141 Piso 8-B
Santiago

Fono    +(56 2) 68830837
E-mail felipe.piccolini at bluesoft.cl





-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070411/8f8d48a6/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedGraphic.tiff
Type: image/tiff
Size: 262986 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/rules-users/attachments/20070411/8f8d48a6/attachment.tiff 


More information about the rules-users mailing list