<br>   This is a bug that was fixed a few weeks ago. If you can use trunk, you will not have this problem.<br><br>   []s<br>   Edson<br><br><div class="gmail_quote">2009/5/5 Rainer Schulz <span dir="ltr">&lt;<a href="mailto:Rainer.Schulz@trivadis.com">Rainer.Schulz@trivadis.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">






<div>


<p dir="ltr"><span lang="de"></span><span lang="en-us"><font face="Calibri">Hi, </font></span></p>

<p dir="ltr"><span lang="en-us"><font face="Calibri">i have som</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">e problems with custom functions and types.</font></span><span lang="de"></span><span lang="en-us"> </span></p>


<p dir="ltr"><span lang="en-us"><font face="Calibri">I m</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">using</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> Drools 5.0 and Eclipse 3.4.2 (have to use these eclipse version, so my decision was to use the drools beta).</font></span><span lang="de"></span><span lang="en-us"></span></p>


<p dir="ltr"><span lang="de"></span><span lang="en-us"><font face="Calibri">I declared a type in my rule file like : </font></span></p>

<p dir="ltr"><span lang="de"><b></b></span><span lang="de"><b></b></span><span lang="de"><b></b></span><b><span lang="en-us"><font size="2" face="Courier New">declare</font></span></b><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New"></font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">VarHolder</font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"></span></p>


<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">   </font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">var1</font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New"> : String</font></span></p>


<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">   </font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">var2</font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New"> :</font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">Long</font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"></span></p>


<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">   </font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">var3</font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New"> :</font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">String</font></span><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"></span></p>


<p dir="ltr"><span lang="de"><b></b></span><span lang="de"><b></b></span><span lang="de"><b></b></span><b><span lang="en-us"><font size="2" face="Courier New">end</font></span></b><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="en-us"></span></p>


<p dir="ltr"><span lang="de"></span><span lang="en-us"></span></p>

<p dir="ltr"><span lang="de"></span><span lang="en-us"><font face="Calibri">also i specified a custom function in the same file, whi</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">ch i have to use in my rules</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> (</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">it’s</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">a example function)</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> : </font></span></p>


<p dir="ltr"><span lang="de"></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">function String hello(String name) {</font></span></p>

<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">   </font></span><span lang="de"> <font size="2" face="Courier New">return &quot;Hello &quot;+name+&quot;!&quot;;</font></span></p>

<p dir="ltr"><span lang="de"><font size="2" face="Courier New">}</font></span><span lang="de"></span></p>

<p dir="ltr"><span lang="de"><font size="2" face="Courier New">.</font></span></p>

<p dir="ltr"><span lang="de"></span><span lang="de"></span><span lang="en-us"><font face="Calibri">The declared Type will be used  in the java code</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">: </font></span></p>


<p dir="ltr"><span lang="de"></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">// handle the type as necessary:</font></span></p>

<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">// create instances:</font></span></p>

<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">Object</font></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">vars</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New"> =</font></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">varHolderTyp</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">.newInstance();</font></span></p>


<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">// set attributes values</font></span></p>

<p dir="ltr"><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">varHolderTyp</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">.set</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">FromMap</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">(</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">vars</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">,</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New">varMap);</font></span><span lang="de"></span><span lang="en-us"></span></p>


<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">// insert fact into a session</font></span></p>

<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">StatefulKnowledgeSession ksession = ...</font></span></p>

<p dir="ltr"><span lang="en-us"><font size="2" face="Courier New">ksession.insert(</font></span><span lang="de"></span><span lang="en-us"> <font size="2" face="Courier New">vars</font></span><span lang="de"></span><span lang="en-us"><font size="2" face="Courier New"> );</font></span></p>


<p dir="ltr"><span lang="de"></span><span lang="de"></span><span lang="de"></span><span lang="de-ch"></span></p>

<p dir="ltr"><span lang="de"></span><span lang="de"></span><span lang="de-ch"></span></p>

<p dir="ltr"><span lang="de"></span><span lang="en-us"><font face="Calibri">When it comes to the</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">“</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">setFromMap</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">”</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">, then</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">I</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> get a ClassCastException for the VarHolderTyp. But when</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">I</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> remove the declaration</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> of the function in the rule file, then everything works fine (all variables will be filled correctly). It seems, that the reflection</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">mechanism</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"></font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">will not work correctly, when drools want to create the Pojo for VarHolder and</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">the Static Method for the function. But it s very</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">difficult</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> to debug, because the exception fire</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">s in the drools engine. </font></span></p>


<p dir="ltr"><span lang="en-us"><font face="Calibri">Maybe</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">I’</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">ve make a mistake</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> so</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">anyone</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">  knows a solution for this problem or can tell me, where my mistake is.</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">It will be nice, when</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">I</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> can declare a type and a function</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">together</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"></font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">in one rule</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">file.</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"></font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri"> At the moment,</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">I</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> created a java class for VarHolder, so the exception does not appear, bu</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri">t</font></span><span lang="de"></span><span lang="en-us"> <font face="Calibri">I</font></span><span lang="de"></span><span lang="en-us"><font face="Calibri"> m losing a lot of dynamic. </font></span></p>


<p dir="ltr"><span lang="de"></span><span lang="en-us"><font face="Calibri">Please give me a hint</font></span><span lang="de"></span><span lang="en-us"></span></p>

</div>
<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" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>  Edson Tirelli<br>  JBoss Drools Core Development<br>  JBoss, a division of Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>