commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Soaring Eagle <comfortable.n...@gmail.com>
Subject [Digester] [repost] Using digester to select events (tags) based on parent events (tags)
Date Thu, 14 Apr 2005 14:19:59 GMT
Hello,

I am using Digester to create a rules engine for an application. This
rules engine should be capable of determining what should be done for
certain financial securities based on their type and the
business event that has occured. Such rules are maintained in XML. How
do I apply digester rules based on nested criteria in this case?

For example, in the XML below, I would like to instantiate the class
com.services.EmailAction only if the type of security is "MEGA" and
the action is "Publish". How do i do that?

This is how I am achieving the desired effect right now:
I am extending the Rule abstract class and in the begin event for
Security and Event tags, I check for required conditions. If
conditions match, I add a boolean true object on a named object stack
(named as "SecurityEventMatch"). I have another Rule object that looks
for the body of a "ClassName" tag and then instantiates the class in
the ClassName tag only of all objects on the SecurityEventMatch stack
are true. In this process, I remove all objects from the
SecurityEventMatch stack.

The above approach works fine, but is highly dependent on the xml
contents (i.e. this is not generic), is dependent on the names I use
in code.

I am thinking that this may be a usual problem for many developers and
am hoping to find a design pattern that will help here.

<Services>
       <Security type="DUSARM">
               <Event type="Preview">
                       <Action>
                               <ClassName>
                                       com.services.EmailAction
                               </ClassName>
                               <ClassName>
                                       com.services.EmailAction
                               </ClassName>
                       </Action>
               </Event>
       </Security>
       <Security type="MEGA">
               <Event type="Preview">
                       <Action>
                               <ClassName>
                                       com.services.EmailAction
                               </ClassName>
                               <ClassName>
                                       com.services.EmailAction
                               </ClassName>
                       </Action>
               </Event>
       </Security>
</Services>


--
Thanks in advance!
Eagle

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Mime
View raw message