Network Deployment (Distributed operating systems), v8.0 > Develop and deploying applications > Develop web services - Notification (WS-Notification) > Develop applications that use WS-Notification


Filter the message content of publications

Rather than receiving all messages on a topic to which we have subscribed, your consuming application can use XML Path (XPath) selectors to filter the messages based upon the contents of each message. This content-based subscription gives greater flexibility in defining the type of information to receive, the applications can use it to avoid responsibility for their own filtering, and it improves performance by not flowing messages unnecessarily from the server to the application.

The WS-Notification publish and subscribe messaging model is topic-based. Each publication is classified as belonging to one of a fixed set of topics. Publishers label each publication with a topic name and consumers subscribe to all publications on a particular topic. For example a stock trading notification system might define a topic for each issue: Publishers post information labeled with the appropriate issue as the topic name, and subscribers subscribe to information regarding some issue.

We can use XPath selectors to filter messages for a given topic, by using a Boolean expression that is evaluated over the XML message content of the message body. For example, a subscriber to a topic-based publish and subscribe system for stock trading might use XPath selectors to specify constraints against three message attributes at the same time:

The resultant Boolean statement might be as follows:

(issue="IBM") and (price
<120) and (volume>1000)

You code your XPath 1.0 message content filters in the subscribing applications, by using XML Path (XPath) language, v1.0..

If your subscriber applications use message content filtering, and are coded to specify the XPath v1.0 SelectorDomain, they can also filter publications from other WS-Notification providers that are of type JMS TextMessage or BytesMessage. For more information about these JMS message types, see Topology for WS-Notification as an entry or exit point to the service integration bus.

To filter the message content of publications by using XPath selectors, complete the following steps.


Procedure

  1. Create a new application that subscribes a WS-Notification consumer.
  2. Code an XPath message content filter in the subscribing application. For example code for doing this, see Example: Subscribing a WS-Notification consumer. For an example of message content filter usage, see the example at the end of this task.
  3. Code error handling for cases where the filter is not valid.

  4. Invoke the application.


Example

This example XML code illustrates message content filtering by using XPath selectors. In this example a business, represented by a NotificationConsumer application, wants to be notified of bank transfers of over $1,000,000. The monitoring application subscribes on behalf of the NotificationConsumer specifying a valid XPath v1.0 message content filter, in the following WS-Notification subscribe message:

<wsnt:Subscribe>
<wsnt:ConsumerReference>     wsa:EndpointReference

</wsnt:ConsumerReference>
<wsnt:Filter>     [
<wsnt:TopicExpression Dialect="xsd:anyURI">
        {any} ?

</wsnt:TopicExpression> |

<wsnt:ProducerProperties Dialect="xsd:anyURI">
        {any} ?

</wsnt:ProducerProperties> |

<wsnt:MessageContent Dialect="xsd:anyURI">
        /bankTransfer[value %gt; 1,000,000]

</wsnt:MessageContent> |
      {any} *
    ] *

</wsnt:Filter> ?

<wsnt:InitialTerminationTime>
    [xsd:dateTime | xsd:duration]

</wsnt:InitialTerminationTime> ?

<wsnt:SubscriptionPolicy>     [
<wsnt:UseRaw/> |
      {any}
    ] *

</wsnt:SubscriptionPolicy> ?
  {any}*

</wsnt:Subscribe>

The WS-Notification service stores the subscription and its filter.

Another WS-Notification application then publishes a notification in which the message body contains the following information:

<bankTransfer origin="123456 87654321" target="224466 88664422">
<originName>IBM Corporation
</originName>
<targetName>Matt Roberts
</targetName>
<date>02/02/2006
</date>
<value currency="USD">100,000,000
</value>
</bankTransfer>

The WS-Notification service in the application server matches this publication to the earlier subscription and delivers the notification to the consumer specified in the subscription.
WS-Notification
WS-Notification: Overview
WS-Notification: Supported bindings
Develop applications that use WS-Notification
Use WS-Notification for publish and subscribe messaging for web services
Secure WS-Notification


Related


http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-os.pdf
http://www.w3.org/TR/1999/REC-xpath-19991116
http://www.w3.org/TR/xquery-semantics/
WS-Notification troubleshooting tips

+

Search Tips   |   Advanced Search