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