RV: [rules-users] Checking an xml field
Greg Barton
greg_barton at yahoo.com
Tue Oct 7 12:44:54 EDT 2008
Then use !GEO.isEmpty() as a condition.
--- On Tue, 10/7/08, Otaduy del Paso, Zaloa <zotaduy at indra.es> wrote:
> From: Otaduy del Paso, Zaloa <zotaduy at indra.es>
> Subject: RE: RV: [rules-users] Checking an xml field
> To: "Rules Users List" <rules-users at lists.jboss.org>
> Date: Tuesday, October 7, 2008, 10:51 AM
> Scott,
>
>
>
> The rules I have now, compile. The generated jaxb classes I
> have
> regarding to what I'm trying to do are:
>
>
>
> EVENT.java
>
>
>
> public class EVENT {
>
>
>
> @XmlElement(name = "EVENT_ID", required =
> true)
>
> protected String eventid;
>
> @XmlElementRefs({
>
> @XmlElementRef(name = "NODE_ID",
> namespace =
> "http://oasis-fp6.org/schemas/TSO/1_0", type =
> JAXBElement.class),
>
> @XmlElementRef(name = "OTHER_EVENT_ID",
> namespace =
> "http://oasis-fp6.org/schemas/TSO/1_0", type =
> JAXBElement.class)
>
> })
>
> @XmlElement(name = "GEO")
>
> protected List<EVENT.GEO> geo;
>
> @XmlElement(name = "PREDICTED_CASUALTIES")
>
> protected List<EVENT.PREDICTEDCASUALTIES>
> predictedcasualties;
>
> @XmlElement(name = "TREND")
>
> protected String trend;
>
> ........
>
>
>
>
>
>
>
> public static class GEO {
>
>
>
> @XmlElement(name = "DESCRIPTION",
> required = true)
>
> protected String description;
>
> @XmlElement(name = "POSITION", required =
> true)
>
> protected POSITION position;
>
> @XmlElement(name = "WEATHER")
>
> protected List<String> weather;
>
> @XmlElement(name = "TEXT")
>
> protected String text;
>
> }
>
>
>
> POSITION.java
>
>
>
> public class POSITION {
>
>
>
> @XmlElement(name = "LOC_ID")
>
> protected String locid;
>
> @XmlElement(name = "NAME")
>
> protected String name;
>
> @XmlElement(name = "COORD")
>
> protected POSITION.COORD coord;
>
> .......
>
>
>
> public static class COORD {
>
>
>
> @XmlElementRefs({
>
> @XmlElementRef(name = "LON",
> namespace =
> "http://oasis-fp6.org/schemas/TSO/1_0", type =
> JAXBElement.class),
>
> @XmlElementRef(name = "HEIGHT",
> namespace =
> "http://oasis-fp6.org/schemas/TSO/1_0", type =
> JAXBElement.class),
>
> @XmlElementRef(name = "LAT",
> namespace =
> "http://oasis-fp6.org/schemas/TSO/1_0", type =
> JAXBElement.class)
>
> })
>
> }
>
>
>
> I hope this is enough to understand what I'm working
> with. Sorry if I
> didn't explain myself correctly.
>
>
>
> Thanks in advance,
>
> Zaloa Otaduy del Paso
>
> ________________________________
>
> De: rules-users-bounces at lists.jboss.org
> [mailto:rules-users-bounces at lists.jboss.org] En nombre de
> Scott Reed
> Enviado el: martes, 07 de octubre de 2008 17:39
> Para: Rules Users List
> Asunto: Re: RV: [rules-users] Checking an xml field
>
>
>
> Zaloa,
> You haven't answered my question as what the problem
> is. Do these rules
> compile?
> It seems to me that you have misunderstood how the
> condition part of the
> rules work.
> I agree with David that it would help for you to study the
> manual some
> more and to work through some of the tutorials.
> Since this is a Drools forum, there are probably not a lot
> of folks who
> understand exactly how JAXP translates the XML into beans.
> You are more
> likely to get help here if you include the relevant
> portions (get
> methods) of the API output by JAXP.
>
> Otaduy del Paso, Zaloa [10/7/2008 11:22 AM] wrote:
>
> Hi David,
>
>
>
> Thanks for your helpful response. The problem was that the
> element GEO
> can appear 0 or many times so what I needed to write was
> this
>
>
>
> when
>
> OASISTSO10($e: EVENT)
>
> OASISTSO10($e.GEO[0].POSITION.LOCID
> == "40005")
>
> Then
>
> Action
>
>
>
> instead of
>
> when
>
> OASISTSO10($e: EVENT)
>
> OASISTSO10($e.GEO.POSITION.LOCID ==
> "40005")
>
> Then
>
> Action
>
>
>
> Now I'm facing another problem. I need to check if the
> element GEO
> exists before checking the POSITION, otherwise it throws an
> outofbound
> exception.
>
> I tried with:
>
>
>
> when
>
> OASISTSO10($e: EVENT)
>
> EVENT($g: GEO)
>
> OASISTSO10($e.GEO[0].POSITION.LOCID
> matches
> "40.*")
>
>
>
> But it doesn't work. Any hints on this?
>
>
>
> Thanks in advance,
>
> Zaloa Otaduy del Paso
>
> ________________________________
>
> De: rules-users-bounces at lists.jboss.org
> [mailto:rules-users-bounces at lists.jboss.org] En nombre de
> David Sinclair
> Enviado el: martes, 07 de octubre de 2008 15:58
> Para: Rules Users List
> Asunto: Re: RV: [rules-users] Checking an xml field
>
>
>
> Read the manual man. Your rules don't make any sense
>
> http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/
>
>
>
>
> On Tue, Oct 7, 2008 at 9:49 AM, Scott Reed
> <sreed at avacoda.com> wrote:
>
> What is the problem you are seeing? Do the rules compile
> ok?
>
> Otaduy del Paso, Zaloa [10/6/2008 12:08 PM] wrote:
>
> Does anybody know the answer to my question? I'm not
> able to solve this
> issue and don't find any clarifying tutorial either....
>
>
>
> Hi,
>
>
>
> I'm new in drools and I'm having some problems
> accessing an xml field.
> I'm using drools with jaxb to treat xml files that
> follow an specific
> xsd. I have the following xml (this is just a piece of the
> xml):
>
>
>
> <OASIS_TSO_1_0>
>
> <EVENT>
>
> <EVENT_ID>EVENT_ID_03/10/2008
> 10:22:36</EVENT_ID>
>
> <NODE_ID>00</NODE_ID>
>
> <OTHER_EVENT_ID>Incidente UME</OTHER_EVENT_ID>
>
> <EVENT_TYPE>POL</EVENT_TYPE>
>
> <SOURCE>HUMDED</SOURCE>
>
> <SEVERITY>EXTREM</SEVERITY>
>
> <CERTAINTY>88</CERTAINTY>
>
> <DECL_DATIME>2008-10-03T10:20:47.0000000+02:00</DECL_DATIME>
>
> <GEO>
>
> <DESCRIPTION/>
>
> <POSITION>
>
> <LOC_ID>14021</LOC_ID>
>
> <COORD>
>
> <LAT>37.9811636567434</LAT>
>
> <LON>-4.85417587343286</LON>
>
> <HEIGHT>0</HEIGHT>
>
> </COORD>
>
> </POSITION>
>
> </GEO>
>
> </EVENT>
>
> </OASIS_TSO_1_0>
>
>
>
>
>
> I already have a couple of rules working, but they are
> simple rules,
> like this one:
>
>
>
> rule "Rule1"
>
> salience 10
>
> when
>
> OASISTSO10($e: EVENT)
>
> OASISTSO10($e.SEVERITY == "EXTREM") or
> OASISTSO10($e.SEVERITY ==
> "SEVERE")
>
> then
>
> action
>
>
>
> The problem appears when I have to check the LOC_ID field
> and I don't
> know how to access to it. I have tried several things but
> none of them
> work
>
>
>
> 1.
>
> when
>
> OASISTSO10($e: EVENT)
>
> OASISTSO10($e.GEO.POSITION.LOCID ==
> "40005")
>
> then
>
> 2.
>
> when
>
> OASISTSO10($e: EVENT)
>
> OASISTSO10($g: $e.GEO)
>
> OASISTSO10($p: $g.POSITION)
>
> OASISTSO10($p.LOCID ==
> "40005")
>
> Then
>
>
>
> I have also tried with ($e.GEO.POSITION.DESCRIPTION, just
> in case the
> "_" character was the problem. But the same
> results... I have searched
> also for examples with xmls but I haven't had luck.
>
> Any help would be appreciated. Thanks in advance,
>
>
>
> Zaloa
>
>
>
>
>
>
>
>
> ________________________________
>
>
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
>
>
>
> ________________________________
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
More information about the rules-users
mailing list