<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="&#1;" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Another approach would be to use a bytecode manipulation library to generate your java beans &#8211; that is you don&#8217;t actually compile them from java code but programatically
 declare the fields (and methods if you want them) and write it straight out as a new java class .
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org]
<b>On Behalf Of </b>Wolfgang Laun<br>
<b>Sent:</b> 10 February 2011 08:02<br>
<b>To:</b> Rules Users List<br>
<b>Subject:</b> Re: [rules-users] Dynamic Fact Types<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">(Fact Templates are over and out.)<br>
<br>
You create a TypeDeclaration by writing a DRL declare, which results in a considerable number of objects being created and available at run time: TypeDeclaration, ClassDefinition, FactField and FieldDeclaration and several other objects, the &quot;accessors&quot; So,
 you could create a piece of DRL text containing &quot;declare X ... end&quot; and pass this to the builder and add the resulting package to your Knowledge Base.<br>
<br>
And then?<br>
<br>
You'll need some code to get objects of type X into Working Memory, which you can do using the reflection-like methods of FactType and FactField, but this code still has to know about &quot;X&quot; and its field names.<br>
<br>
OK, so you have some Xs in WM. And now?<br>
<br>
You'll have to write some rules referring to X and its fields, and how can you do that? More DRL text?<br>
<br>
True, rule patterns can use interface names as type names, but the DRL language doesn't let you declare a type with an &quot;implements&quot; clause, and therefore the Engine simply wouldn't know that your X implements anything.<br>
<br>
Finally, a poster on this list has stated just a few days ago that declared types are considerably slower than Java types. This hasn't been confirmed or explained by one of the developers (although the additional layers mentioned previously are certainly not
 speeding things up).<br>
<br>
I don't know enough about your problem to suggest anything. It could be that sticking with the Object/JavaBeans model and generating and compiling Java and DRL is best. Or it could be that an entirely different ontology model is advisable (even though the Drools
 fact model is clearly JavaBean-ish). Or maybe you shouldn't use rules at all ;-)<br>
<br>
-W<br>
<br>
<o:p></o:p></p>
<div>
<p class="MsoNormal">On 9 February 2011 23:02, jwillans2 &lt;<a href="mailto:james.willans@ceteva.com">james.willans@ceteva.com</a>&gt; wrote:<o:p></o:p></p>
<p class="MsoNormal"><br>
Hello,<br>
<br>
I am looking for an approach to defining fact types<br>
dynamically/programmatically. &nbsp;Having hunted about, I can see a few ways of<br>
achieving this. &nbsp;My preferred approach to doing this would be Fact Templates<br>
as described in the blog article here:<br>
<br>
<a href="http://orangemile.blogspot.com/2008/07/drools-fact-template-example.html" target="_blank">http://orangemile.blogspot.com/2008/07/drools-fact-template-example.html</a><br>
<br>
I can see two problems with this approaches. &nbsp;Firstly, it seems to be an<br>
experimental feature and generally not supported. &nbsp;Secondly, it only seems<br>
to work with primitive fields (perhaps I'm wrong here?). &nbsp;I get the<br>
impression that the preferred option is to use Type Declarations. &nbsp;In the<br>
documentation for Type Declarations, it suggests that the rules evaluate<br>
against an interface rather than an actual Java object and that the<br>
interface can be implemented using different methods (POJO, reflection ..).<br>
Is there any examples or documentation on how to do this beyond generated<br>
Java bean class? Just to be clear, I am looking to define the fact types<br>
programmatic in a similar manner to that described in the above blog link,<br>
and I am eager to avoid a compilation/class loader step.<br>
<br>
Many thanks for any help that can be offered,<br>
<br>
James<br>
<span style="color:#888888">--<br>
View this message in context: <a href="http://drools-java-rules-engine.46999.n3.nabble.com/Dynamic-Fact-Types-tp2462037p2462037.html" target="_blank">
http://drools-java-rules-engine.46999.n3.nabble.com/Dynamic-Fact-Types-tp2462037p2462037.html</a><br>
Sent from the Drools - User mailing list archive at Nabble.com.<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></span><o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</div>
<br>
<hr>
<font face="Arial" color="Gray" size="1"><br>
**************************************************************************************<br>
This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmaster@nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data
 may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary.<br>
<br>
NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00<br>
**************************************************************************************<br>
</font>
</body>
</html>