Felipe,

 In 3.0.6 you can't use inside a predicate any value bound in the same
pattern, except the one directly bound to the predicate. This limitation was
removed in 3.1M1.

  []s
  Edson

2007/4/11, Felipe Piccolini <[EMAIL PROTECTED]>:

forgot to delete the signature (large image), so I forward this email...

Still waiting for an answer... I need to put this rule logic IN the Rule,
not in the Bean.


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_0ReturnValue0Invoker.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_0Predicate0Invoker.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.*
[EMAIL PROTECTED]



                                                                        *Felipe
Piccolini M.*
[EMAIL PROTECTED]





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




--
 Edson Tirelli
 Software Engineer - JBoss Rules Core Developer
 Office: +55 11 3124-6000
 Mobile: +55 11 9218-4151
 JBoss, a division of Red Hat @ www.jboss.com
_______________________________________________
rules-users mailing list
[EMAIL PROTECTED]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to