I am using hibernate with drools ...

rule "login_validation"
        when
                userRole:UserRole() from hibernateSession.createQuery("select 
userRoles
from UserAccount ua where ua.name = :name AND ua.password =
:password").setProperties( {"name" : "Hafeez" , "password" : "asdasd"
}).list()
        then
                System.out.println( "--------------------The role " +
userRole.getRoleName()+" is owned by "+userRole.getAccounts());
                
end


this rule is fired and gives me correct userRole.getRoleName()+" is owned by
"+userRole.getAccounts()
Now i want to give dynamic input to LHS.... i.e. I want to replace "Hafeez"
and "asdasd" with some function ...
for the purpose i create a class "LoginAttribs" with "userName" and
"password"

I instert the LoginAttribs loginAttr obj in knowledgebase in A.java


                        
WorkingMemory workingMemory = ruleBase.newStatefulSession();
LoginAttribs loginAttr = new LoginAttribs();
workingMemory.insert(loginAttr );


and change the rule in drl file like 

rule "login_validation"
        when
                $lg : LoginAttribs ($uN: userName , $pwd:password)
                userRole:UserRole() from hibernateSession.createQuery("select 
userRoles
from UserAccount ua where ua.name = :name AND ua.password =
:password").setProperties( {"name" : $uN , "password" : $pwd }).list()
        then
                System.out.println( "--------------------The role " +
userRole.getRoleName()+" is owned by "+userRole.getAccounts());
                
end



And then this comes

Exception caught while executing action:
org.drools.reteoo.reteooworkingmemory$workingmemoryreteassertact...@1406eb6
[Error: unable to access property (null parent): createQuery]
[Near : {... Unknown ....}]
             ^
[Line: 1, Column: 0]
        at
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:861)
        at
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:316)
        at
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:138)
        at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:133)
        at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
        at
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:107)
        at org.mvel2.MVEL.executeExpression(MVEL.java:995)
        at
org.drools.base.dataproviders.MVELDataProvider.getResults(MVELDataProvider.java:91)
        at org.drools.reteoo.FromNode.evaluateAndPropagate(FromNode.java:124)
        at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:104)
        at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:145)
        at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:57)
        at
org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:142)
        at
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)
        at 
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:185)
        at 
org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:146)
        at org.drools.reteoo.Rete.assertObject(Rete.java:113)
        at 
org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:218)
        at
org.drools.reteoo.ReteooWorkingMemory$WorkingMemoryReteAssertAction.execute(ReteooWorkingMemory.java:291)
        at
org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:1486)
        at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1051)
        at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1001)
        at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:788)
        
        
        
        
        
        by commenting the insert statement in the java file it works fine
        
        
-- 
View this message in context: 
http://n3.nabble.com/Call-class-method-from-LHS-of-a-rule-tp108383p519963.html
Sent from the Drools - User mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to