On 31/05/2012, Michael Anstis <michael.ans...@gmail.com> wrote: > I have a feeling you're not going to be pleased.
'Tis not a consummation devoutly to be wished by this person. But you might warn Anirban that this isn't a matter of ripping off a simple XSLT. -W > > On 31 May 2012 14:43, Wolfgang Laun <wolfgang.l...@gmail.com> wrote: > >> 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 >> > _______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev