In systems like SIENA [Car98], ELVIN [SA97] or GRYPHON [BCM+99,SBS98], event notifications are viewed as flat structures, i.e., records with several fields . A subscription language is used to impose ranges of values for those fields. Figure 1 outlines this concept schematically. Relying on attribute-value pairs enables very efficient realizations, since computational overhead is reduced by directly accessing attributes. This approach however bears several dangers:
To increase portability of applications some engines implement standardized API's like the OMG's CORBA NOTIFICATION SERVICE [OMG00], which repairs certain lacks [SV97] of the CORBA EVENT SERVICE [OMG98]. Among the new features in [OMG00] are a content-based subscription scheme based on a simplified kind of typed events, replacing the typed events of the ancestor. These structured events are roughly composed of two types of fields, namely (1) fixed fields and (2) variable fields consisting of name-value pairs, to which applications map their specific needs. The fields of messages are seen as their attributes and are directly accessed through filter objects for content-based filtering - violating encapsulation. Patterns are expressed by strings following the DEFAULT FILTER CONSTRAINT LANGUAGE, a complex subscription language which extends the TRADER CONSTRAINT LANGUAGE.
Message m |
public class ChatMsg {
public String from; ... } |
Criteria | ``message sent by Tom'' |
Argument | String criteria = "from is Tom"; |
Evaluation | m.from.equals("Tom") |