[rules-dev] Fwd: [rules-users] DRL to XML transformation

Michael Anstis michael.anstis at gmail.com
Thu May 31 05:34:12 EDT 2012


Edson, Mark,

AFAIK XmlDumpers's XML is not the same as the internal representation used
by Guvnor (that is really only an XStream representation of Guvnor's
internal model).

I had a look at XmlDumper and it references a schema (that I could not
find), but it definitely follows a different mechanism to Guvnor.

Am I correct? The user below would need to write an XSLT to transform
between the two.

Or is the expectation that XML from XmlDumper should be able to be loaded
into Guvnor?

Thanks,

Mike

---------- Forwarded message ----------
From: Anirban Bandyopadhyay <Anirban.Bandyopadhyay at monitisegroup.com>
Date: 29 May 2012 13:36
Subject: [rules-users] DRL to XML transformation
To: "rules-users at lists.jboss.org" <rules-users at lists.jboss.org>


 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 at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20120531/67dc32f2/attachment-0001.html 


More information about the rules-dev mailing list