<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
The XML in guvnor is an xstream dump. The class model is not descr
based, there were decisions at the time to chose a simpler, flatter
model.<br>
<br>
As we've found though people do just want full drl capabilities, in
the builder. <br>
<br>
The xml parser in drools is descr dump, but only supports features
up to drools 4.x. I'm not quire sure where the xsd has done.<br>
<br>
Mark<br>
On 31/05/2012 10:34, Michael Anstis wrote:
<blockquote
cite="mid:CAAG9P0vGAxDNtdbcKoS+cDL+p2FFQ5aKFTSmRqHPiZA5BycBDQ@mail.gmail.com"
type="cite">Edson, Mark,<br>
<br>
AFAIK XmlDumpers's XML is not the same as the internal
representation used by Guvnor (that is really only an XStream
representation of Guvnor's internal model).<br>
<br>
I had a look at XmlDumper and it references a schema (that I could
not find), but it definitely follows a different mechanism to
Guvnor.<br>
<br>
Am I correct? The user below would need to write an XSLT to
transform between the two.<br>
<br>
Or is the expectation that XML from XmlDumper should be able to be
loaded into Guvnor?<br>
<br>
Thanks,<br>
<br>
Mike<br>
<br>
<div class="gmail_quote">
---------- Forwarded message ----------<br>
From: <b class="gmail_sendername">Anirban Bandyopadhyay</b> <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:Anirban.Bandyopadhyay@monitisegroup.com">Anirban.Bandyopadhyay@monitisegroup.com</a>></span><br>
Date: 29 May 2012 13:36<br>
Subject: [rules-users] DRL to XML transformation<br>
To: "<a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>"
<<a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>><br>
<br>
<br>
<div link="blue" vlink="purple" lang="EN-GB">
<div>
<p class="MsoNormal"><span style="color:#1f497d">Hi,</span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d">We have a
set of rule files in DRL format. We couldn’t find a way
(tool) of importing them into Guvnor as BRL file so that
we can edit using the designer.</span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d">We ended up
using the DrlParser and XmlDumper to transform them from
DRL to BRL. It produces the XML and when we add it to
the repository using WebDav, Guvnor lists the files
under Business Rule which is perfect. BUT when I try to
open it, it throws the following error:</span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#c0504d">com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$Unkno</span></p>
<p class="MsoNormal"><span style="color:#c0504d">wnFieldException:
No such field
org.drools.ide.common.client.modeldriven.brl.Rul</span></p>
<p class="MsoNormal"><span style="color:#c0504d">eModel.rule-attribute</span></p>
<p class="MsoNormal"><span style="color:#c0504d">----
Debugging information ----</span></p>
<p class="MsoNormal"><span style="color:#c0504d">field
: rule-attribute</span></p>
<p class="MsoNormal"><span style="color:#c0504d">class
: org.drools.ide.common.client.modeldriven.brl.RuleModel</span></p>
<p class="MsoNormal"><span style="color:#c0504d">required-type
: org.drools.ide.common.client.modeldriven.brl.RuleModel</span></p>
<p class="MsoNormal"><span style="color:#c0504d">converter-type
:
com.thoughtworks.xstream.converters.reflection.ReflectionC</span></p>
<p class="MsoNormal"><span style="color:#c0504d">onverter</span></p>
<p class="MsoNormal"><span style="color:#c0504d">path
: /rule/rule-attribute</span></p>
<p class="MsoNormal"><span style="color:#c0504d">version
: null</span></p>
<p class="MsoNormal"><span style="color:#c0504d">-------------------------------</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv</span></p>
<p class="MsoNormal"><span style="color:#c0504d">erter.determineType(AbstractReflectionConverter.java:449)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv</span></p>
<p class="MsoNormal"><span style="color:#c0504d">erter.doUnmarshal(AbstractReflectionConverter.java:290)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv</span></p>
<p class="MsoNormal"><span style="color:#c0504d">erter.unmarshal(AbstractReflectionConverter.java:230)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshall</span></p>
<p class="MsoNormal"><span style="color:#c0504d">er.java:72)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(A</span></p>
<p class="MsoNormal"><span style="color:#c0504d">bstractReferenceUnmarshaller.java:65)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnm</span></p>
<p class="MsoNormal"><span style="color:#c0504d">arshaller.java:66)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnm</span></p>
<p class="MsoNormal"><span style="color:#c0504d">arshaller.java:50)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller</span></p>
<p class="MsoNormal"><span style="color:#c0504d">.java:134)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarsh</span></p>
<p class="MsoNormal"><span style="color:#c0504d">al(AbstractTreeMarshallingStrategy.java:32)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1035)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1019)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.thoughtworks.xstream.XStream.fromXML(XStream.java:886)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.drools.ide.common.server.util.BRXMLPersistence.unmarshal(BRXMLPer</span></p>
<p class="MsoNormal"><span style="color:#c0504d">sistence.java:191)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.drools.guvnor.server.contenthandler.drools.BRLContentHandler.retr</span></p>
<p class="MsoNormal"><span style="color:#c0504d">ieveAssetContent(BRLContentHandler.java:41)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.drools.guvnor.server.RepositoryAssetService.handlePackageItem(Rep</span></p>
<p class="MsoNormal"><span style="color:#c0504d">ositoryAssetService.java:132)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.drools.guvnor.server.RepositoryAssetService.loadRuleAsset(Reposit</span></p>
<p class="MsoNormal"><span style="color:#c0504d">oryAssetService.java:118)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.drools.guvnor.server.RepositoryAssetService$Proxy$_$$_WeldClientP</span></p>
<p class="MsoNormal"><span style="color:#c0504d">roxy.loadRuleAsset(RepositoryAssetService$Proxy$_$$_WeldClientProxy.java)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.drools.guvnor.server.RepositoryServiceServlet.loadRuleAsset(Repos</span></p>
<p class="MsoNormal"><span style="color:#c0504d">itoryServiceServlet.java:403)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.</span></p>
<p class="MsoNormal"><span style="color:#c0504d">java:39)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces</span></p>
<p class="MsoNormal"><span style="color:#c0504d">sorImpl.java:25)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
java.lang.reflect.Method.invoke(Method.java:597)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:5</span></p>
<p class="MsoNormal"><span style="color:#c0504d">69)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(Remot</span></p>
<p class="MsoNormal"><span style="color:#c0504d">eServiceServlet.java:208)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(Remot</span></p>
<p class="MsoNormal"><span style="color:#c0504d">eServiceServlet.java:248)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Ab</span></p>
<p class="MsoNormal"><span style="color:#c0504d">stractRemoteServiceServlet.java:62)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl</span></p>
<p class="MsoNormal"><span style="color:#c0504d">icationFilterChain.java:290)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF</span></p>
<p class="MsoNormal"><span style="color:#c0504d">ilterChain.java:206)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV</span></p>
<p class="MsoNormal"><span style="color:#c0504d">alve.java:233)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV</span></p>
<p class="MsoNormal"><span style="color:#c0504d">alve.java:191)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j</span></p>
<p class="MsoNormal"><span style="color:#c0504d">ava:127)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j</span></p>
<p class="MsoNormal"><span style="color:#c0504d">ava:102)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal</span></p>
<p class="MsoNormal"><span style="color:#c0504d">ve.java:109)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav</span></p>
<p class="MsoNormal"><span style="color:#c0504d">a:293)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso</span></p>
<p class="MsoNormal"><span style="color:#c0504d">r.java:877)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr</span></p>
<p class="MsoNormal"><span style="color:#c0504d">ocess(Http11AprProtocol.java:594)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:16</span></p>
<p class="MsoNormal"><span style="color:#c0504d">75)</span></p>
<p class="MsoNormal"><span style="color:#c0504d"> at
java.lang.Thread.run(Thread.java:662)</span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d">I am able
to re-produce the same error when I try to convert the
BRL to DRL using BRDRLPersistence and BRXMLPersistence
marshalling and unmarshalling. I checked that the field
‘rule-attribute’ is indeed not present in
org.drools.brms.client.modeldriven.brl.RuleModel. when
I look at the example brl file from the sample mortgage,
they don’t have ‘rule-attribute’, and it’s not only that
specific node, the whole set of node names are
different.
</span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal">>>>>>>>>>>>>>>>>>>>>>>>>>>>> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">public void convertDrlToBrl() throws
IOException, DroolsParserException {</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> Resource fileResource = new
ClassPathResource("Beneficiary_User_KYC_Level_3_Daily_Limit.drl");</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> DrlParser parser = new
DrlParser();</p>
<p class="MsoNormal"> XmlDumper dumper = new
XmlDumper();</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> Reader source = new
InputStreamReader(new
FileInputStream(fileResource.getFile()));</p>
<p class="MsoNormal"> PackageDescr pkg =
parser.parse(source);</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> String xmlString =
dumper.dump(pkg);</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> System.out.println(xmlString);</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> public void convertBrlToDrl()
throws IOException {</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> Resource fileResource = new
ClassPathResource("Beneficiary_User_KYC_Level_3_Daily_Limit_BRL.brl");</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> String fileAsString =
FileUtils.readFileToString(fileResource.getFile());</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> BRDRLPersistence write =
(BRDRLPersistence) BRDRLPersistence.getInstance();</p>
<p class="MsoNormal"> BRXMLPersistence read =
(BRXMLPersistence) BRXMLPersistence.getInstance();</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> RuleModel ruleModel =
read.unmarshal(fileAsString);</p>
<p class="MsoNormal"> String outputDRL =
write.marshal(ruleModel);</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> System.out.println(outputDRL);</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< </p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d">Generated
xml file:</span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal">===============================================</p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><rule
name="Beneficiary_User_KYC_Level_3_Daily_Limit_BRL"></p>
<p class="MsoNormal"><rule-attribute name="dialect"
value="mvel" /></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><lhs><pattern
object-type="UserBean" ></p>
<p class="MsoNormal"><field-constraint
field-name="kycLevel"> </p>
<p class="MsoNormal"><literal-restriction evaluator="=="
value="KYC_LEVEL_3" /></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"></field-constraint></p>
<p class="MsoNormal"><field-constraint
field-name="userType"> </p>
<p class="MsoNormal"><literal-restriction evaluator="=="
value="BENEFICIARY" /></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"></field-constraint></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"></pattern></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><pattern object-type="Activity" ></p>
<p class="MsoNormal"><field-constraint
field-name="type"> </p>
<p class="MsoNormal"><literal-restriction evaluator="!="
value="TRANSACTION.SEND" /></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"></field-constraint></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"></pattern></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"></lhs><rhs>
Limit fact0 = new Limit();</p>
<p class="MsoNormal">
fact0.setType( "DAILY_TRANSACTION_LIMIT" );</p>
<p class="MsoNormal">
fact0.setValue( 10000 );</p>
<p class="MsoNormal">
fact0.setErrorMessage( "Maximum daily total amount of
N10,000 exceeded for {0}." );</p>
<p class="MsoNormal">
insert(fact0 );</p>
<p class="MsoNormal"></rhs></p>
<p class="MsoNormal"></rule></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d">================================================</span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d">Am I doing
something wrong? Is there a better way of converting
the DRLs to BRLs?</span></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span></p>
<p class="MsoNormal"><span style="color:#1f497d">Thanks in
advance!</span></p>
<p class="MsoNormal"><b><span
style="font-size:9.0pt;font-family:"Arial","sans-serif";color:#1f497d">Anirban
Bandyopadhyay</span><span style="color:#00b050"></span></b></p>
</div>
<br>
<hr>
<font color="Gray" face="Arial" size="1">This message contains
confidential and proprietary information of the sender, and
is intended only for the person(s) to whom it is addressed.
Any use, distribution, copying, disclosure or taking of any
action in reliance upon it by any other person is strictly
prohibited. If you have received this message in error,
please notify the e-mail sender immediately, and delete the
original message without making a copy.<br>
<br>
The Monitise group comprises: Monitise plc (Reg. No.
6011822), Monitise Group Limited (Reg. No. 5590897),
Monitise International Limited (Reg. No. 5556711) and
Monitise Europe Limited (Reg. No. 4831976). These companies
are registered in England and Wales and their registered
office address is: Warnford Court, 29 Throgmorton Street,
London, EC2N 2AT United Kingdom.<br>
</font>
</div>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a moz-do-not-send="true"
href="https://lists.jboss.org/mailman/listinfo/rules-users"
target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br>
</div>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
rules-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>