The result of XmlDumper in its current state may not accurately reflect all that can now (5.4.0) be written in DRL. At least I got that impression when I was looking at XmlDumper earlier (IIRC ~5.2.0) and found some glitches even then.
Mark, Michael: I'd be pleased to learn that this has been fixed. :) -W On 31/05/2012, Michael Anstis <michael.ans...@gmail.com> wrote: > The XML format produced by XmlDumper is an XML representation of various > internal Descriptors used by Drools Expert and only supports features up to > 4.0 > > It is unfortunately not the same as that stored internally in Guvnor (which > is simply a XStream representation of Guvnor's internal model). > > Furthermore Guvnor's internal representation is private and subject to > change from release to release. > > There is no easy way to convert from one to the other, other than writing > your own XSLT. > > With kind regards, > > Mike > > On 29 May 2012 13:36, Anirban Bandyopadhyay < > anirban.bandyopadh...@monitisegroup.com> wrote: > >> Hi,**** >> >> ** ** >> >> 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.**** >> >> ** ** >> >> 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:**** >> >> ** ** >> >> >> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$Unkno >> **** >> >> wnFieldException: No such field >> org.drools.ide.common.client.modeldriven.brl.Rul**** >> >> eModel.rule-attribute**** >> >> ---- Debugging information ----**** >> >> field : rule-attribute**** >> >> class : >> org.drools.ide.common.client.modeldriven.brl.RuleModel**** >> >> required-type : >> org.drools.ide.common.client.modeldriven.brl.RuleModel**** >> >> converter-type : >> com.thoughtworks.xstream.converters.reflection.ReflectionC**** >> >> onverter**** >> >> path : /rule/rule-attribute**** >> >> version : null**** >> >> -------------------------------**** >> >> at >> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv**** >> >> erter.determineType(AbstractReflectionConverter.java:449)**** >> >> at >> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv**** >> >> erter.doUnmarshal(AbstractReflectionConverter.java:290)**** >> >> at >> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv**** >> >> erter.unmarshal(AbstractReflectionConverter.java:230)**** >> >> at >> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshall**** >> >> er.java:72)**** >> >> at >> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(A**** >> >> bstractReferenceUnmarshaller.java:65)**** >> >> at >> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnm**** >> >> arshaller.java:66)**** >> >> at >> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnm**** >> >> arshaller.java:50)**** >> >> at >> com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller**** >> >> .java:134)**** >> >> at >> com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarsh**** >> >> al(AbstractTreeMarshallingStrategy.java:32)**** >> >> at >> com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1035)** >> ** >> >> at >> com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1019)** >> ** >> >> at com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)**** >> >> at com.thoughtworks.xstream.XStream.fromXML(XStream.java:886)**** >> >> at >> org.drools.ide.common.server.util.BRXMLPersistence.unmarshal(BRXMLPer**** >> >> sistence.java:191)**** >> >> at >> org.drools.guvnor.server.contenthandler.drools.BRLContentHandler.retr**** >> >> ieveAssetContent(BRLContentHandler.java:41)**** >> >> at >> org.drools.guvnor.server.RepositoryAssetService.handlePackageItem(Rep**** >> >> ositoryAssetService.java:132)**** >> >> at >> org.drools.guvnor.server.RepositoryAssetService.loadRuleAsset(Reposit**** >> >> oryAssetService.java:118)**** >> >> at >> org.drools.guvnor.server.RepositoryAssetService$Proxy$_$$_WeldClientP**** >> >> roxy.loadRuleAsset(RepositoryAssetService$Proxy$_$$_WeldClientProxy.java)* >> *** >> >> at >> org.drools.guvnor.server.RepositoryServiceServlet.loadRuleAsset(Repos**** >> >> itoryServiceServlet.java:403)**** >> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >> Method)**** >> >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.**** >> >> java:39)**** >> >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces**** >> >> sorImpl.java:25)**** >> >> at java.lang.reflect.Method.invoke(Method.java:597)**** >> >> at >> com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:5**** >> >> 69)**** >> >> at >> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(Remot**** >> >> eServiceServlet.java:208)**** >> >> at >> com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(Remot**** >> >> eServiceServlet.java:248)**** >> >> at >> com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Ab**** >> >> stractRemoteServiceServlet.java:62)**** >> >> at >> javax.servlet.http.HttpServlet.service(HttpServlet.java:637)*** >> * >> >> at >> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)*** >> * >> >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl**** >> >> icationFilterChain.java:290)**** >> >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF**** >> >> ilterChain.java:206)**** >> >> at >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV**** >> >> alve.java:233)**** >> >> at >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextV**** >> >> alve.java:191)**** >> >> at >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j**** >> >> ava:127)**** >> >> at >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j**** >> >> ava:102)**** >> >> at >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal**** >> >> ve.java:109)**** >> >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav**** >> >> a:293)**** >> >> at >> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso**** >> >> r.java:877)**** >> >> at >> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr**** >> >> ocess(Http11AprProtocol.java:594)**** >> >> at >> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:16**** >> >> 75)**** >> >> at java.lang.Thread.run(Thread.java:662)**** >> >> ** ** >> >> ** ** >> >> 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. **** >> >> ** ** >> >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>** ** >> >> ** ** >> >> public void convertDrlToBrl() throws IOException, DroolsParserException >> {* >> *** >> >> ** ** >> >> Resource fileResource = new >> ClassPathResource("Beneficiary_User_KYC_Level_3_Daily_Limit.drl");**** >> >> ** ** >> >> DrlParser parser = new DrlParser();**** >> >> XmlDumper dumper = new XmlDumper();**** >> >> ** ** >> >> Reader source = new InputStreamReader(new >> FileInputStream(fileResource.getFile()));**** >> >> PackageDescr pkg = parser.parse(source);**** >> >> ** ** >> >> String xmlString = dumper.dump(pkg);**** >> >> ** ** >> >> System.out.println(xmlString);**** >> >> }**** >> >> ** ** >> >> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<** ** >> >> ** ** >> >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>** ** >> >> ** ** >> >> public void convertBrlToDrl() throws IOException {**** >> >> ** ** >> >> Resource fileResource = new >> ClassPathResource("Beneficiary_User_KYC_Level_3_Daily_Limit_BRL.brl");**** >> >> ** ** >> >> String fileAsString = >> FileUtils.readFileToString(fileResource.getFile());**** >> >> ** ** >> >> BRDRLPersistence write = (BRDRLPersistence) >> BRDRLPersistence.getInstance();**** >> >> BRXMLPersistence read = (BRXMLPersistence) >> BRXMLPersistence.getInstance();**** >> >> ** ** >> >> RuleModel ruleModel = read.unmarshal(fileAsString);**** >> >> String outputDRL = write.marshal(ruleModel);**** >> >> ** ** >> >> System.out.println(outputDRL);**** >> >> ** ** >> >> }**** >> >> ** ** >> >> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<** ** >> >> ** ** >> >> Generated xml file:**** >> >> ** ** >> >> ===============================================**** >> >> ** ** >> >> <rule name="Beneficiary_User_KYC_Level_3_Daily_Limit_BRL">**** >> >> <rule-attribute name="dialect" value="mvel" />**** >> >> ** ** >> >> <lhs><pattern object-type="UserBean" >**** >> >> <field-constraint field-name="kycLevel"> **** >> >> <literal-restriction evaluator="==" value="KYC_LEVEL_3" />**** >> >> ** ** >> >> </field-constraint>**** >> >> <field-constraint field-name="userType"> **** >> >> <literal-restriction evaluator="==" value="BENEFICIARY" />**** >> >> ** ** >> >> </field-constraint>**** >> >> ** ** >> >> ** ** >> >> </pattern>**** >> >> ** ** >> >> <pattern object-type="Activity" >**** >> >> <field-constraint field-name="type"> **** >> >> <literal-restriction evaluator="!=" value="TRANSACTION.SEND" />**** >> >> ** ** >> >> </field-constraint>**** >> >> ** ** >> >> ** ** >> >> </pattern>**** >> >> ** ** >> >> ** ** >> >> </lhs><rhs> Limit fact0 = new Limit();**** >> >> fact0.setType( "DAILY_TRANSACTION_LIMIT" >> ); >> **** >> >> fact0.setValue( 10000 );**** >> >> fact0.setErrorMessage( "Maximum daily >> total amount of N10,000 exceeded for {0}." );**** >> >> insert(fact0 );**** >> >> </rhs>**** >> >> </rule>**** >> >> ** ** >> >> ================================================**** >> >> ** ** >> >> ** ** >> >> Am I doing something wrong? Is there a better way of converting the DRLs >> to BRLs?**** >> >> ** ** >> >> Thanks in advance!**** >> >> *Anirban Bandyopadhyay* >> >> ------------------------------ >> 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. >> >> 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. >> >> _______________________________________________ >> rules-users mailing list >> rules-us...@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> > _______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev