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(a)gmail.com
<mailto: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(a)codehaus.org
<mailto: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(a)lists.jboss.org
> <mailto:rules-users@lists.jboss.org>
>
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org <mailto:rules-users@lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/rules-users
------------------------------------------------------------------------
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users