I have a feeling you're not going to be pleased.

On 31 May 2012 14:43, Wolfgang Laun <wolfgang.laun@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.anstis@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.Bandyopadhyay@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-users@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