<br>&nbsp;&nbsp; Yes, inside the consequence you can use the single parameter modify because the engine knows how to find the fact handle.<br>&nbsp;&nbsp; In reality, the modify() block:<br><br>modify( $fact ) {<br>&nbsp;&nbsp; ...<br>}<br><br>&nbsp;&nbsp; Is nothing more than a parsing feature that gets rewritten as:<br>
<br> drools.modifyRetract($fact);<br>...<br>drools.modifyInsert($fact);<br> <br>&nbsp;&nbsp;&nbsp; []s<br>&nbsp;&nbsp;&nbsp; Edson<br><br><div><span class="gmail_quote">2008/4/3, Keith Bennett &lt;<a href="mailto:forthwind@gmail.com">forthwind@gmail.com</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Edson,<br> <br> Thanks for the reply.&nbsp;&nbsp;I took a look at your post regarding how to<br> retract then modify the fact, but I have a different situation.&nbsp;&nbsp;I<br> need to modify the fact via a function call.&nbsp;&nbsp;This is because inside<br>
 the function I have access to Spring-managed services that I use to<br> retrieve domain objects from the data access layer that I can then set<br> (i.e., modify) on the domain object (or fact, as referred to in<br> Drools).&nbsp;&nbsp;So, right now, my consequence looks like the following:<br>
 <br> drools.modifyRetract($loan);<br> functionNameThatModifiesLoan($loan);<br> drools.modifyInsert($loan);<br> <br> Does this, in effect, do the same thing that your posting shows how to<br> do.&nbsp;&nbsp;In other words, can I retract the fact, modify it, then insert it<br>
 back into the Drools engine this way?<br> <br> BTW, I will be more than happy to open a JIRA.&nbsp;&nbsp;I just want to make<br> sure that what I am doing in my consequence is correct first since the<br> modifyRetract() and modifyAssert(), which will be changed to<br>
 modifyInsert() via the JIRA, is how the user guide currently describes<br> how this should be done, not the way your posting describes.<br> <br><br> On 4/2/08, Edson Tirelli &lt;<a href="mailto:tirelli@post.com">tirelli@post.com</a>&gt; wrote:<br>
 &gt;<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;It seems the docs need to be updated. Would you plz open a JIRA to fix<br> &gt; the place you are seeing this info?<br> &gt;<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;For more current info, take a look at this blog post, specially the end<br>
 &gt; on &quot;how to disable shadow facts&quot;:<br> &gt;<br> &gt; <a href="http://blog.athico.com/2008/02/shadow-facts-what-you-always-wanted-to.html">http://blog.athico.com/2008/02/shadow-facts-what-you-always-wanted-to.html</a><br>
 &gt;<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;[]s<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;Edson<br> &gt;<br> &gt; 2008/4/2, Keith Bennett &lt;<a href="mailto:forthwind@gmail.com">forthwind@gmail.com</a>&gt;:<br> &gt; &gt;<br> &gt; &gt; I am currently using Drools to validate an extensive object graph.<br>
 &gt; &gt; When I validate a transient object graph (i.e., not persisted via<br> &gt; &gt; Hibernate) inside of a JUnit test method, validation occurs<br> &gt; &gt; successfully.&nbsp;&nbsp;However, when I retrieve the same object graph from<br>
 &gt; &gt; Hibernate and subsequently validate it, I get the stack trace that<br> &gt; &gt; I&#39;ve included below, but only when I use shadow proxies.&nbsp;&nbsp;When I turn<br> &gt; &gt; shadow proxies off, validation runs successfully against the persisted<br>
 &gt; &gt; object graph again.&nbsp;&nbsp;Of course, I&#39;m utilizing lazy association<br> &gt; &gt; fetching to improve performance and want to continue utilizing it.<br> &gt; &gt; Has anyone run into this same problem, and if so, were you able to<br>
 &gt; &gt; work around it without turning shadow proxies off?&nbsp;&nbsp;Before you ask, my<br> &gt; &gt; Hibernate session is open before and after I invoke Drools to perform<br> &gt; &gt; validation in the same unit of work (i.e., transaction), so it&#39;s not<br>
 &gt; &gt; an issue of not having an active Hibernate session available (I&#39;ve<br> &gt; &gt; verified this through testing).<br> &gt; &gt;<br> &gt; &gt; One more thing.&nbsp;&nbsp;The user guide says that if shadow proxies are turned<br>
 &gt; &gt; off that modifyRetract() should be called before an object is modified<br> &gt; &gt; and modifyAssert() should be called after it is modifed.&nbsp;&nbsp;First, what<br> &gt; &gt; is the method parameter to these two overloaded methods, Object or<br>
 &gt; &gt; FactHandle (both exist)?&nbsp;&nbsp;Second, I don&#39;t see modifyAssert() available<br> &gt; &gt; in the library, just modifyInsert().&nbsp;&nbsp;Should the documentation change<br> &gt; &gt; to read modifyInsert() instead of modifyAssert()?&nbsp;&nbsp;If so, again with<br>
 &gt; &gt; which parameter?<br> &gt; &gt;<br> &gt; &gt; I appreciate any insight you may have!<br> &gt; &gt;<br> &gt; &gt; Here&#39;s the stack trace:<br> &gt; &gt;<br> &gt; &gt; org.hibernate.LazyInitializationException: failed to<br>
 &gt; lazily initialize<br> &gt; &gt; a collection, no session or session was closed<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.hibernate.collection.PersistentSet.addAll(PersistentSet.java:244)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.util.ShadowProxyUtils.cloneObject(ShadowProxyUtils.java:76)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; com.cbi.domain.loan.indirect.IndirectLoanShadowProxy.getCustomers(Unknown<br> &gt; &gt; Source)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.base.com.cbi.domain.loan.indirect.IndirectLoan28409161$getCustomers.getValue(Unknown<br>
 &gt; &gt; Source)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:127)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.rule.Declaration.getValue(Declaration.java:198)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; LoanValidationBusinessRules.Rule_A_Loan_must_have_at_least_one_Customer_0Eval0Invoker.evaluate(Rule_A_Loan_must_have_at_least_one_Customer_0Eval0Invoker.java:12)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:72)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.EvalConditionNode.assertTuple(EvalConditionNode.java:145)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.CompositeTupleSinkAdapter.createAndPropagateAssertTuple(CompositeTupleSinkAdapter.java:73)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:116)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:318)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.Rete.assertObject(Rete.java:175)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:682)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.DroolsBusinessRulesServiceHelper.executeRules(DroolsBusinessRulesServiceHelper.java:77)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.DroolsBusinessRulesServiceHelper.validate(DroolsBusinessRulesServiceHelper.java:66)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.DroolsBusinessRulesServiceImpl.validate(DroolsBusinessRulesServiceImpl.java:97)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at $Proxy4.validate(Unknown Source)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.IndirectLoanManagementServiceImpl.submitForBooking(IndirectLoanManagementServiceImpl.java:680)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at $Proxy6.submitForBooking(Unknown Source)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.LoanManagementServiceImplTestCase.testSubmitLoanForBooking(LoanManagementServiceImplTestCase.java:116)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestCase.runTest(TestCase.java:164)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestCase.runBare(TestCase.java:130)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; junit.framework.TestResult$1.protect(TestResult.java:106)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestResult.runProtected(TestResult.java:124)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestResult.run(TestResult.java:109)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestCase.run(TestCase.java:120)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestSuite.runTest(TestSuite.java:230)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestSuite.run(TestSuite.java:225)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.Surefire.run(Surefire.java:177)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)<br> &gt; &gt; 2008-04-02 16:48:32,691 ERROR<br>
 &gt; &gt; org.hibernate.LazyInitializationException - failed to<br> &gt; lazily<br> &gt; &gt; initialize a collection, no session or session was closed<br> &gt; &gt; org.hibernate.LazyInitializationException: failed to<br>
 &gt; lazily initialize<br> &gt; &gt; a collection, no session or session was closed<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.hibernate.collection.PersistentSet.isEmpty(PersistentSet.java:146)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; LoanValidationBusinessRules.Rule_A_Loan_must_have_at_least_one_Customer_0.eval0(Rule_A_Loan_must_have_at_least_one_Customer_0.java:38)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; LoanValidationBusinessRules.Rule_A_Loan_must_have_at_least_one_Customer_0Eval0Invoker.evaluate(Rule_A_Loan_must_have_at_least_one_Customer_0Eval0Invoker.java:16)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:72)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.EvalConditionNode.assertTuple(EvalConditionNode.java:145)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.CompositeTupleSinkAdapter.createAndPropagateAssertTuple(CompositeTupleSinkAdapter.java:73)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:116)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:318)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.Rete.assertObject(Rete.java:175)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:682)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.DroolsBusinessRulesServiceHelper.executeRules(DroolsBusinessRulesServiceHelper.java:77)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.DroolsBusinessRulesServiceHelper.validate(DroolsBusinessRulesServiceHelper.java:66)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.DroolsBusinessRulesServiceImpl.validate(DroolsBusinessRulesServiceImpl.java:97)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at $Proxy4.validate(Unknown Source)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.IndirectLoanManagementServiceImpl.submitForBooking(IndirectLoanManagementServiceImpl.java:680)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at $Proxy6.submitForBooking(Unknown Source)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; com.cbi.service.loan.indirect.impl.LoanManagementServiceImplTestCase.testSubmitLoanForBooking(LoanManagementServiceImplTestCase.java:116)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestCase.runTest(TestCase.java:164)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestCase.runBare(TestCase.java:130)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; junit.framework.TestResult$1.protect(TestResult.java:106)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestResult.runProtected(TestResult.java:124)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestResult.run(TestResult.java:109)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestCase.run(TestCase.java:120)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestSuite.runTest(TestSuite.java:230)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; junit.framework.TestSuite.run(TestSuite.java:225)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.Surefire.run(Surefire.java:177)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>
 &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; java.lang.reflect.Method.invoke(Method.java:585)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br>
 &gt; org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)<br> &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<br> &gt; org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)<br> &gt; &gt; _______________________________________________<br>
 &gt; &gt; rules-users mailing list<br> &gt; &gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br> &gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
 &gt; &gt;<br> &gt;<br> &gt;<br> &gt;<br> &gt; --<br> &gt;&nbsp;&nbsp; Edson Tirelli<br> &gt;&nbsp;&nbsp; JBoss Drools Core Development<br> &gt;&nbsp;&nbsp; Office: +55 11 3529-6000<br> &gt;&nbsp;&nbsp; Mobile: +55 11 9287-5646<br> &gt;&nbsp;&nbsp; JBoss, a division of Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>
 &gt; _______________________________________________<br> &gt; rules-users mailing list<br> &gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br> &gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
 &gt;<br> &gt;<br> _______________________________________________<br> rules-users mailing list<br> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br> <a href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
 </blockquote></div><br><br clear="all"><br>-- <br>&nbsp;&nbsp;Edson Tirelli<br>&nbsp;&nbsp;JBoss Drools Core Development<br>&nbsp;&nbsp;Office: +55 11 3529-6000<br>&nbsp;&nbsp;Mobile: +55 11 9287-5646<br>&nbsp;&nbsp;JBoss, a division of Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a>