On 01/06/2012 02:24, Mark Proctor wrote: > On 31/05/2012 14:43, Wolfgang Laun 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. > The xml only supports features up to 4.x. So it would be possible to > dump 5.4.x features to xml. sorry I mean it would be impossible. > > Currently there are no plans to alter this, unless someone wants to > volunteer. We are unlikely to accept a peace meal job, so if someone > volunteers, they will need to do it thoroughly and completely. > > Mark >> >> 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