Hi all,
Finally the solution was
this:
when
OASISTSO10($e:
EVENT)
eval($e.getGEO().size()
> 0)
OASISTSO10($e.GEO[0].POSITION.LOCID
matches "40.*")
then
System.out.println("Rule
executed");
Thanks a lot for your
help!
Zaloa Otaduy del
Paso
De: rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] En
nombre de Scott Reed
Enviado el: martes, 07 de octubre
de 2008 18:56
Para: Rules Users List
Asunto: Re: RV: [rules-users]
Checking an xml field
Yes, my suggestion would need to use the access
methods (e.g. getGEO()) but I don't know what their names are.
Otaduy del Paso, Zaloa [10/7/2008 12:38 PM] wrote:
I have tried
OASISTSO10($e: EVENT)
EVENT($g: $e.GEO[0])
OASISTSO10($e.GEO[0].POSITION.LOCID matches "40.*")
It makes sense to me,
since
OASISTSO10($e: EVENT)
OASISTSO10($e.GEO[0].POSITION.LOCID matches "40.*")
Is working and what I
want to check is the field GEO from $e. The issue is that doing what you
suggested (the first code lines) I get the following error:
org.drools.rule.InvalidRulePackage:
Unable to create Field Extractor for '$e.GEO[0]' : [Rule
name=DistribuirPorProvincia2, agendaGroup=MAIN, salience=2, no-loop=false]
org.drools.RuntimeDroolsException: org.drools.RuntimeDroolsException: org.drools.RuntimeDroolsException: Field/method '$e' not found for class 'es.indra.simge.businessrules.jaxb.tso.EVENT'
at org.drools.rule.Package.checkValidity(Package.java:424)
I have also tried
Scott’s suggestion:
OASISTSO10($e: EVENT)
eval($e.GEO[0].POSITION.LOCID.equals("40005"))
but I also get the
compilation error:
org.drools.rule.InvalidRulePackage:
Rule Compilation error : [Rule name=DistribuirPorProvincia2, agendaGroup=MAIN,
salience=2, no-loop=false]
es/indra/simge/businessrules/jaxb/tso/Rule_DistribuirPorProvincia2_0.java (9:441)
: $e.GEO cannot be resolved or is not a field
at org.drools.rule.Package.checkValidity(Package.java:424)
I’m pretty confused
because sometimes the $e is recognized as an event, the rules I already have
work, but in other cases the $e.FIELD
returns a compilation error.
Zaloa Otaduy del
Paso
Consultoría Tecnológica
De: rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org]
En nombre de Knapp, Barry
Enviado el: martes, 07 de octubre
de 2008 18:17
Para: Rules Users List
Asunto: RE: RV: [rules-users]
Checking an xml field
Might be worth
trying
OASISTSO10($e: EVENT)
EVENT($g: $e.GEO[0])
OASISTSO10($e.GEO[0].POSITION.LOCID matches "40.*")
Barry
From:
rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org]
On Behalf Of Otaduy del Paso,
Zaloa
Sent: Tuesday, October 07, 2008
11:23 AM
To: Rules Users List
Subject: RE: RV: [rules-users]
Checking an xml field
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
== “
Then
Action
instead of
when
OASISTSO10($e: EVENT)
OASISTSO10($e.GEO.POSITION.LOCID == “
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@lists.jboss.org
[mailto:rules-users-bounces@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@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
<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@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users