Then use !GEO.isEmpty() as a condition. --- On Tue, 10/7/08, Otaduy del Paso, Zaloa <[EMAIL PROTECTED]> wrote:
> From: Otaduy del Paso, Zaloa <[EMAIL PROTECTED]> > Subject: RE: RV: [rules-users] Checking an xml field > To: "Rules Users List" <[email protected]> > 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: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] 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: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] 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 > <[EMAIL PROTECTED]> 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 > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > > > > > > > > ________________________________ > > > > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
