arina he wrote:
Hi,
 
I did some tailoring, the attached zip files contains three parts:
 
  1,One readme file showing the structure and how to run;
  2,The compiled class jar RuleConverter.jar which will convert given file to new one
  3,The eclipse project jar ConvertProject for any one might be interested.
 
welcome comments.
Could you update the wiki page with this information? You can upload the jar and cut and paste your instructions into the wiki page:
http://wiki.jboss.org/wiki/Wiki.jsp?page=Drools2Migration

Once you've done that I'll also do a small blog referencing that page.
 

 
On 12/22/07, arina he <arina.he@gmail.com> wrote:
Hi Mark,

I have a simple app converting around 30 drl files with about 230 rules using this xslt, I was able to run all those rules without any manually modification after covertion which was my goal -:), lazy me.  this xslt should cover most cases.

it converts two major parts: functions to package, rule to rule, and  as well as some minor tags such as import. out of those "functions" part is a little hard, but I managed do it though xslt.

since my rules are not very complex ones, I'm sure there are some case I don't cover. so  far I know two  issues:
  1, the attribute for rules is not covered since I don't local attribute for individual rule, we use global  vars,
  2, need put xml schema into header.

should be more, and that's why I put up here so that people can give comments and suggestion to make its coverage wider and more useful.

BTW, this is only for  "XML-to-XML" format, not drl format.

one thing I was impressed by the Jboss Rule 4 is the backward compatibility. we were coded against JSR94 interface, after upgrade from drools 2 to 4, I only did a minor change on global variable. it works perfectly. good work Mark.
heh, nice to have a happy customer. Drools 5.0 will have some api changes, but the basic stuff should work with no changes - actually JSR94 will now have any changes, so this won't impact you, although ofcourse you'll miss out on all the new power we are adding :) We are trying to have full backwards compatability with 4.0 DRL and 5.0 DRL



On Dec 19, 2007 12:59 PM, Mark Proctor <mproctor@codehaus.org> wrote:
arina he wrote:
I was scraping internet for one xslt when I was converting drools 2 to jboss rule 4, but couldn't find one,
did you read this?
http://wiki.jboss.org/wiki/Wiki.jsp?page=Drools2Migration
 
so I rolled up sleeves and created one by myself, put up here in case anyone need it too.
How complete is it? Do you have any unit tests? If so we should add this as a contrib project for other users.
 
welcome comments.
 
Arina.
Keep up the good work :)
 
 

<?

xml version="1.0" encoding="UTF-8"?>

<

xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs ="http://www.w3.org/2001/XMLSchema" xmlns:fn= "http://www.w3.org/2005/xpath-functions" xmlns:java= "http://drools.org/semantics/java" > <xsl:output method="xml" version="1.0" indent= "yes" omit-xml-declaration="yes"/> <xsl:template match="/" > <package name="com.sample "> <global identifier="doc" type="Document" /> <xsl:apply-templates /> </ package> </xsl:template> <xsl:template name="javaimport" match="java:import"> <import name="{.}" /> </xsl:template> <xsl:template name="javaFunction" match="java:functions"> <xsl:if test="contains(.,'public')" > <xsl:call-template name= "separate"> <xsl:with-param name="str" select="substring-after(.,'public ')" /> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="separate" > <xsl:param name="str" /> <xsl:choose> <xsl:when test="contains($str,'public')" > <xsl:call-template name= "drlFn"> <xsl:with-param name="fnBody" select="substring-before($str,'public')" /> </xsl:call-template> <xsl:call-template name= "separate"> <xsl:with-param name="str" select="substring-after($str,'public ')" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name= "drlFn"> <xsl:with-param name="fnBody" select="$str" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="drlFn" > <xsl:param name="fnBody" /> <function name="{substring-before(substring-after($fnBody,' '),'(')}" return-type="{substring-before($fnBody,' ')}"> <xsl:if test="normalize-space(substring-before(substring-after($fnBody,'(' ),')' ))!=''" > <xsl:call-template name= "params"> <xsl:with-param name="paramStr" select="normalize-space(substring-before(substring-after($fnBody,'(' ),')' ))" /> </xsl:call-template> </xsl:if> <body> <xsl:call-template name= "bdy"> <xsl:with-param name="bdyStr" select="substring-after($fnBody,'{' )" /> </xsl:call-template> </body> </function> </xsl:template> <xsl:template name="bdy" > <xsl:param name="bdyStr" /> <xsl:value-of select="substring-before($bdyStr,'}')" /> <xsl:if test="contains(substring-after($bdyStr,'}'),'}')" >

}

<xsl:call-template name= "bdy"> <xsl:with-param name="bdyStr" select="substring-after($bdyStr,'}')" /> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="params" > <xsl:param name="paramStr" /> <xsl:choose> <xsl:when test="contains($paramStr,',')" > <xsl:call-template name= "buildIdentifier"> <xsl:with-param name="tpy" select="substring-before($paramStr,' ')" /> <xsl:with-param name="idt" select="substring-after(substring-before($paramStr,','),' ')" /> </xsl:call-template> <xsl:call-template name= "params"> <xsl:with-param name="paramStr" select="normalize-space(substring-after($paramStr,','))"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name= "buildIdentifier"> <xsl:with-param name="tpy" select="substring-before($paramStr,' ')" /> <xsl:with-param name="idt" select="substring-after($paramStr,' ')" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="buildIdentifier" > <xsl:param name="tpy" /> <xsl:param name="idt" /> <parameter identifier="{$idt}" type="{$tpy}" /> </xsl:template> <xsl:template name="rules" match="rule" > <rule name="{@name}" > <xsl:if test="java:condition" > <lhs> <and-constraint-connective> <xsl:for-each select="java:condition" > <eval><xsl:value-of select="normalize-space(.)" disable-output-escaping="no" /></eval> </xsl:for-each> </and-constraint-connective> </lhs> </ xsl:if> <xsl:for-each select="java:consequence" > <rhs> <xsl:value-of select="." /> </rhs> </xsl:for-each> </rule> </xsl:template>

</

xsl:stylesheet>

_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users

 

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users