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.anstis(a)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(a)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(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
> _______________________________________________
> rules-dev mailing list
> rules-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-dev