<div class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="d0e1"></a><span class="emphasis"><em>QCG-Notification</em></span> v. 2.6 Technical Guide and
Manual</h2></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Bartosz</span> <span class="surname">Bosak</span></h3><code class="email"><<a class="email" href="mailto:bbosak@man.poznan.pl">bbosak@man.poznan.pl</a>></code></div><div class="author"><h3 class="author"><span class="firstname">Krzysztof</span> <span class="surname">Kurowski</span></h3><code class="email"><<a class="email" href="mailto:krzysztof.kurowski@man.poznan.pl">krzysztof.kurowski@man.poznan.pl</a>></code></div></div></div><div><p class="releaseinfo">2.6.3</p></div><div><p class="copyright">Copyright © 2008-2012 Poznan Supercomputing and Networking Center</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#d0e37">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e48">1.1. Motivations</a></span></dt><dt><span class="sect2"><a href="#d0e56">1.2. Purpose of the Document</a></span></dt><dt><span class="sect2"><a href="#d0e71">1.3. Status</a></span></dt></dl></dd><dt><span class="sect1"><a href="#d0e76">2. Terminology and WS-Notification Concept</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e84">2.1. WS-Notification Concept</a></span></dt><dd><dl><dt><span class="sect3"><a href="#d0e87">2.1.1. WS-Notification Fundamentals</a></span></dt><dt><span class="sect3"><a href="#d0e130">2.1.2. WS-BaseNotification</a></span></dt><dt><span class="sect3"><a href="#d0e192">2.1.3. WS-BrokeredNotification</a></span></dt><dt><span class="sect3"><a href="#d0e270">2.1.4. WS-Topics</a></span></dt><dt><span class="sect3"><a href="#d0e324">2.1.5. Base of QCG-Notification</a></span></dt></dl></dd><dt><span class="sect2"><a href="#d0e416">2.2. UML-style Diagrams</a></span></dt><dd><dl><dt><span class="sect3"><a href="#d0e457">2.2.1. `Main Use Cases</a></span></dt><dt><span class="sect3"><a href="#d0e490">2.2.2. Main Sequence Diagrams</a></span></dt></dl></dd></dl></dd><dt><span class="sect1"><a href="#d0e499">3. User Guide for a Publisher, Subscriber and
NotificationConsumer </a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e504">3.1. Prefixes and Namespaces</a></span></dt><dt><span class="sect2"><a href="#d0e582">3.2. Interaction with QCG-Notification</a></span></dt><dd><dl><dt><span class="sect3"><a href="#d0e592">3.2.1. Publisher Interaction</a></span></dt><dt><span class="sect3"><a href="#d0e606">3.2.2. Subscriber interaction</a></span></dt><dt><span class="sect3"><a href="#d0e631">3.2.3. NotificationConsumer Interaction</a></span></dt></dl></dd><dt><span class="sect2"><a href="#ted">3.3. Topics, TopicExpressions and Dialects</a></span></dt><dt><span class="sect2"><a href="#d0e685">3.4. Extensions</a></span></dt><dd><dl><dt><span class="sect3"><a href="#d0e693">3.4.1. TopicExpression</a></span></dt><dt><span class="sect3"><a href="#d0e704">3.4.2. QCG-Notification Extensions</a></span></dt></dl></dd><dt><span class="sect2"><a href="#d0e715">3.5. Methods Description</a></span></dt><dd><dl><dt><span class="sect3"><a href="#d0e749">3.5.1. SubscribeRequest</a></span></dt><dt><span class="sect3"><a href="#d0e856">3.5.2. SubscribeResponse</a></span></dt><dt><span class="sect3"><a href="#d0e904">3.5.3. RenewRequest</a></span></dt><dt><span class="sect3"><a href="#d0e945">3.5.4. RenewResponse</a></span></dt><dt><span class="sect3"><a href="#d0e989">3.5.5. UnsubscribeRequest</a></span></dt><dt><span class="sect3"><a href="#d0e1022">3.5.6. UnsubscribeResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1043">3.5.7. RegisterPublisherRequest</a></span></dt><dt><span class="sect3"><a href="#d0e1096">3.5.8. RegisterPublisherResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1141">3.5.9. Notify</a></span></dt><dt><span class="sect3"><a href="#d0e1225">3.5.10. DestroyRegistrationRequest</a></span></dt><dt><span class="sect3"><a href="#d0e1258">3.5.11. DestroyRegistrationResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1279">3.5.12. CreatePullPointRequest</a></span></dt><dt><span class="sect3"><a href="#d0e1303">3.5.13. CreatePullPointResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1333">3.5.14. GetMessages</a></span></dt><dt><span class="sect3"><a href="#d0e1366">3.5.15. GetMessagesResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1443">3.5.16. DestroyPullPointRequest</a></span></dt><dt><span class="sect3"><a href="#d0e1464">3.5.17. DestroyPullPointResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1485">3.5.18. GetCurrentMessageRequest</a></span></dt><dt><span class="sect3"><a href="#d0e1532">3.5.19. GetCurrentMessageResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1598">3.5.20. ListSubscriptions</a></span></dt><dt><span class="sect3"><a href="#d0e1700">3.5.21. ListSubscriptionsResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1797">3.5.22. ListPublishersRegistrations</a></span></dt><dt><span class="sect3"><a href="#d0e1878">3.5.23. ListPublisherRegistrationsResponse</a></span></dt><dt><span class="sect3"><a href="#d0e1952">3.5.24. ListPullPoints</a></span></dt><dt><span class="sect3"><a href="#d0e2033">3.5.25. ListPullPointsResponse</a></span></dt><dt><span class="sect3"><a href="#d0e2107">3.5.26. ListTopicNamespaces</a></span></dt><dt><span class="sect3"><a href="#d0e2147">3.5.27. ListTopicNamespacesResponse</a></span></dt><dt><span class="sect3"><a href="#d0e2206">3.5.28. AddTopicNamespace</a></span></dt><dt><span class="sect3"><a href="#d0e2243">3.5.29. AddTopicNamespaceResponse</a></span></dt><dt><span class="sect3"><a href="#d0e2268">3.5.30. RemoveTopicNamespace</a></span></dt><dt><span class="sect3"><a href="#d0e2302">3.5.31. RemoveTopicNamespaceResponse</a></span></dt></dl></dd></dl></dd><dt><span class="sect1"><a href="#d0e2324">4. Administration Guide of
QCG-Notification</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2329">4.1. Prerequisites</a></span></dt><dd><dl><dt><span class="sect3"><a href="#d0e2337">4.1.1. QCG Core library</a></span></dt></dl></dd><dt><span class="sect2"><a href="#d0e2355">4.2. Building</a></span></dt><dt><span class="sect2"><a href="#d0e2416">4.3. Creating database for QCG-Notification - the
PostgreSQL example</a></span></dt></dl></dd><dt><span class="sect1"><a href="#configuration">5. Configuration of QCG-Notification</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2506">5.1. Configuration File: qcg-ntfd.xml</a></span></dt><dt><span class="sect2"><a href="#moduleoptions">5.2. Module configuration</a></span></dt><dd><dl><dt><span class="sect3"><a href="#d0e2838">5.2.1. Publisher modules</a></span></dt></dl></dd><dt><span class="sect2"><a href="#d0e3097">5.3. WS-Topics management</a></span></dt><dt><span class="sect2"><a href="#d0e3125">5.4. Starting QCG-Notification</a></span></dt><dt><span class="sect2"><a href="#d0e3148">5.5. Stopping QCG-Notification</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e37"></a>1. Introduction</h2></div></div></div><p><span class="bold"><strong>QCG-Notification</strong></span> is a reference
implementation of a set of industry Web Service specifications (<a class="link" href="#WS-Notification"></a><a class="ulink" href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsn" target="_top">WS-Notification
OASIS standard)</a><a class="link" href="#WS-Notification"></a> for message push/pull-style notification,
using a topic-based publish/subscribe pattern. It supports standard
message exchanges to be implemented by any Web Service providers
(including also services within QCG Service Bus), that wish to participate
in notifications, standard message exchanges for a notification-broker
service provider (allowing publication of messages from entities that are
not themselves service providers), operational requirements expected of
service providers and requesters that participate in notifications, and an
XML model that describes topics (i.e., items of interest for
subscriptions.).</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e48"></a>1.1. Motivations</h3></div></div></div><p>Reliable notification and messaging services are key components in
service-oriented architectures (SOA) and distributed computing. However,
early Web Services, such as those for getting stock or whether daily
reports, were seemingly all remote procedure calls (RPC) oriented. In
RPC systems, the receiver typically performs the requested Web Service
and sends a response back to the consumer over the same connection on
which the request arrived. Communication in this case is fully
synchronous, and often also called a pull-style message exchange. Today,
many existing SOA environments are based on synchronous message
exchange, but in the future we expect more and more needs for
asynchronous push Web Services. Moreover, existing approaches in a
relatively simple and often non standard based way provide notification
capabilities for distributed Web Services. Available reference
implementations of industry standards, e.g. defined by OASIS
standardization body, either implement only partially notification
standards or do not meet high performance requirements. Therefore, our
main motivation was to design and implement
<span class="emphasis"><em>QCG-Notification</em></span> to offer more advanced push/pull
(synchronous/asynchronous) standard notification routines for QCG
Service Bus services as well as any third party Web Services.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e56"></a>1.2. Purpose of the Document</h3></div></div></div><p>The main goal of this document is to define a set of initial use
cases, scenarios and specify software requirements for
<span class="emphasis"><em>QCG-Notification</em></span>, its programming application
interface, functional units and the integration with both internal and
external modules.</p><p>The document is aimed at software architects and programmers who
will be developing software components based on this document. Many
requirements and <span class="emphasis"><em>QCG-Notification </em></span>concept itself
might be interesting for developers and end users of any Web
Services.</p><p>This document assumes that the reader has at least a basic
background in Web Service and SOA technologies.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e71"></a>1.3. Status</h3></div></div></div><p>This document is updated periodically on no particular
schedule.</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e76"></a>2. Terminology and WS-Notification Concept</h2></div></div></div><p>The aim of this section is to capture high-level functionality of
<span class="emphasis"><em>QCG-Notification</em></span> and/or interaction without providing
excessive implementation or technical details of the system.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e84"></a>2.1. WS-Notification Concept</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e87"></a>2.1.1. WS-Notification Fundamentals</h4></div></div></div><p>Notification-based pattern is commonly used for
interaction between distributed objects. WS-Notification is a family
of related specifications that standardizes notification concept and
topic-based information distribution in SOA and Web Service based
systems. There are three normative OASIS specifications:
WS-BaseNotification, WS-BrokeredNotification and WS-Topics.</p><div class="variablelist"><dl><dt><span class="term">WS-BaseNotification</span></dt><dd><p>Standardizes the terminology, concepts, operations, WSDL
and XML needed to express the basic roles involved in Web
services publish and subscribe for notification message
exchange.</p><p>Specification URL:</p><p><a class="ulink" href="http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-pr-0.2.pdf" target="_top">http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-os.pdf</a></p></dd></dl></div><div class="variablelist"><dl><dt><span class="term">WS-BrokeredNotification</span></dt><dd><p>Describes specific objectives for expanded version of
notification messages exchange with indirect NotificationBroker
service.</p><p>Specification URL:</p><p><a class="ulink" href="http://docs.oasis-open.org/wsn/wsn-ws_brokered_notification-1.3-spec-pr-0.2.pdf" target="_top">http://docs.oasis-open.org/wsn/wsn-ws_brokered_notification-1.3-spec-os.pdf</a></p></dd></dl></div><div class="variablelist"><dl><dt><span class="term"><a name="WS-topics"></a>WS-Topics</span></dt><dd><p>Defines mechanism to organize and categorize items of
interest for subscriptions known as "topics".</p><p>Specification URL:</p><p><a class="ulink" href="http://docs.oasis-open.org/wsn/wsn-ws_topics-1.3-spec-pr-0.2.pdf" target="_top">http://docs.oasis-open.org/wsn/wsn-ws_topics-1.3-spec-os.pdf</a></p></dd></dl></div><p>The next subsections will present main notification concepts
defined in the mentioned specifications.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e130"></a>2.1.2. WS-BaseNotification</h4></div></div></div><p>The WS-BaseNotification document is a basic reference on which
all the other specifications in the standard WS-Notification family
depend. In fact, it defines precisely two important notification
roles/actors called respectively NotificationProducer and
NotificationConsumer. An example system architecture based on
WS-BaseNotification is presented below.</p><div class="figure"><a name="BaseEntities"></a><p class="title"><b>Figure 1. Web Services BaseNotification entities</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/smn_baseentities.png" align="middle" width="324" alt="Web Services BaseNotification entities"></div></div></div><p><br class="figure-break">The basic terminology related to the WS-BaseNotification is
following:</p><div class="variablelist"><dl><dt><span class="term">Situation</span></dt><dd><p>Some occurrence known by a NotificationProducer. A
Situation is a reason of dispatching a Notification.</p></dd><dt><span class="term">Notification</span></dt><dd><p><a name="a"></a>An artifact of a Situation containing information
about that Situation. A Notification is represented as an XML
element and dispatched by a NotificationProducer.</p></dd><dt><span class="term">Subscription</span></dt><dd><p>Represents relations between a NotificationProducer and
a NotificationConsumer. A Subscription is created by a
Subscriber and is consisted with filtering parameters such as
a Topic, policies or context information.</p></dd><dt><span class="term">Subscriber</span></dt><dd><p>An unit that creates Subscriptions. It sends the
SubscribeRequest message to a NotificationProducer
service.</p></dd><dt><span class="term">NotificationProducer</span></dt><dd><p>Produces Notifications. In other words
NotificationProducer detects Situation(s) and translates it to
Notification message(s). It is also a Web Service responsible
for creating Subscriptions by the SubscribeRequest
message.</p></dd><dt><span class="term">NotificationConsumer</span></dt><dd><p>An endpoint designated to receive Notifications produced
by a NotificationProducer as a result of a
Subscription.</p></dd><dt><span class="term">PullPoint</span></dt><dd><p>The purpose of PullPoints is enabling pull-style
notifications. In general, PullPoints accumulate notifications
and offer an interface for retrieving these notifications by
remote consumers. Since a PullPoint implements a
NotificationConsumer interface it can be selected in a
Subscription as a receiver of notifications.</p></dd><dt><span class="term">CurrentMessages</span></dt><dd><p>CurrentMessages is a buffer that keeps the latest
messages produced on each topic. A new notification replaces
the previous related to the same topic and currently buffered
in CurrentMessages.</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e192"></a>2.1.3. WS-BrokeredNotification</h4></div></div></div><p>In a nutshell, the WS-BrokeredNotification specification is an
extension of described above the WS-BaseNotification concept. However,
it introduces a new important notification role called
NotificationBroker and defines more advanced notification scenarios.
The figure below shows an example scenario and notification message
flow where NotificationBroker is present.</p><div class="figure"><a name="d0e198"></a><p class="title"><b>Figure 2. Web Services BrokeredNotification entities -
QCG-Notification entities</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/smn_brokeredentities.png" align="middle" width="324" alt="Web Services BrokeredNotification entities - QCG-Notification entities"></div></div></div><p><br class="figure-break">Note, that there are some important enlargements and
modifications in the WS-BrokeredNotificatison terminology. Below the
most relevant definitions are presented.</p><div class="variablelist"><dl><dt><span class="term">Situation</span></dt><dd><p>Some occurrence, known by a Publisher. A Situation is a
reason of dispatching a Notification.</p></dd><dt><span class="term">Notification</span></dt><dd><p>An artifact of a Situation containing information about
that Situation. A Notification is represented as an XML element,
dispatched by a Publisher and redistributed by a
NotificationBroker.</p></dd><dt><span class="term">Publisher</span></dt><dd><p>An unit that creates Notification(s) - detects
Situation(s) and translates it to Notification message(s). It
doesn't have to be a Web Service.</p></dd><dt><span class="term">Subscription</span></dt><dd><p>Represents relations between a Publisher and a
NotificationConsumer. A Subscription is created by a Subscriber
and is consisted with filtering parameters such as a Topic,
policies or a context information.</p></dd><dt><span class="term">Subscriber</span></dt><dd><p>An unit that creates Subscriptions. It sends the
SubscribeRequest message to a SubscriptionManager
interface.</p></dd><dt><span class="term">NotificationBroker</span></dt><dd><p>An intermediary Web service that decouples Publishers and
NotificationConsumers. It redistributes Notifications received
from Publishers to NotificationConsumers on the basis of
Subscriptions' parameters.</p></dd><dt><span class="term">NotificationConsumer</span></dt><dd><p>An endpoint designated to receive Notifications produced
by a Publisher and later redistributed by a NotificationBroker
as a result of a Subscription.</p></dd><dt><span class="term">PullPoint</span></dt><dd><p>The purpose of PullPoints is enabling pull-style
notifications. In general, PullPoints accumulate notifications
and offer an interface for retrieving these notifications by
remote consumers. Since a PullPoint implements a
NotificationConsumer interface it can be selected in a
Subscription as a receiver of notifications.</p></dd><dt><span class="term">CurrentMessages</span></dt><dd><p>CurrentMessages is a buffer that keeps the latest messages
published on each topic. A new notification replaces the
previous related to the same topic and currently buffered in
CurrentMessages.</p></dd></dl></div><p>The main difference between WS-Base and WS-Brokered Notification
specifications is that in the second case NotificationProducers do not
have to be implemented as a Web Services. Publishers do not have to
implement and be compliant with defined NotificationProducer
interfaces. Finally, having a NotificationBroker as a mediator between
different actors in a notification flow, NotificationConsumers are
fully separated and do not have to know details about
NotificationProducers.</p><p>Depending on distributed system requirements and use cases
various notification routines, objects, and roles are usually
involved. For instance, in the simplest case where an asynchronous
communication is required, there is no need to use a notification
mechanisms defined by WS-BrokeredNotification and basic notification
routines defined by WS-BaseNotification are good enough to satisfy
distributed system needs. The example scenario is presented on <a class="link" href="#BaseEntities" title="Figure 1. Web Services BaseNotification entities">Figure 1</a>. For more advanced notification
scenarios in service oriented systems we recommend to use notification
capabilities defined in WS-BrokeredNotification. One of the main
scenario defined by WS-BrokeredNotification is presented on <a class="link" href="#BrokeredEntities">Figure 2</a> .</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e270"></a>2.1.4. WS-Topics</h4></div></div></div><p>The third important notification specification document called
WS-Topics is strictly associated with WS-BaseNotification and
precisely defines a "topics" mechanism. Important definitions used in
the WS-Topics specification are presented below:</p><div class="variablelist"><dl><dt><span class="term">Topic</span></dt><dd><p>A concept used to categorize Notifications and their
related Notification schemes. Topics are used to determine which
subscribing NotificationConsumers should receive a specific
Notification.</p></dd><dt><span class="term">Topic Tree</span></dt><dd><p>A hierarchical group of Topics.</p></dd><dt><span class="term">Topic Namespace</span></dt><dd><p>A forest of Topic Trees grouped into one namespace</p></dd><dt><span class="term">TopicExpression</span></dt><dd><p>An expression that identifies Topics from a Topic
Namespace</p></dd><dt><span class="term">Dialect</span></dt><dd><p>Identifies the type of a grammar used in a
TopicExpression. The specification defines four Dialects:
<span class="emphasis"><em>Simple</em></span>, <span class="emphasis"><em>Concrete</em></span>,
<span class="emphasis"><em>Full</em></span> and <span class="emphasis"><em>XPath</em></span>.</p></dd></dl></div><div class="figure"><a name="d0e318"></a><p class="title"><b>Figure 3. Example Topic Namespace</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/smn_topicnamespace.png" align="middle" width="324" alt="Example Topic Namespace"></div></div></div><br class="figure-break"></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e324"></a>2.1.5. Base of <span class="emphasis"><em>QCG-Notification</em></span></h4></div></div></div><p><span class="emphasis"><em>QCG-Notification</em></span> is a reference
implementation of WS-BaseNotification, WS-BrokeredNotification and
WS-Topics OASIS industry standards. As a consistent and highly
efficient notification system it supports advanced brokered Web
Service notification push/pull scenarios described in the <a class="link" href="#brokerednotifications">Section 2.1.3</a>. It has been
designed to satisfy notification requirements and demands of large
scale Web Service based systems, SOA environments and it acts as a
core component in QCG Service Bus. To meet security requirements,
<span class="emphasis"><em>QCG-Notification</em></span> (or <span class="emphasis"><em>QCG-Notification
Provider</em></span>) exposes well defined Web Service and programming
interfaces over QCG security mechanisms for dynamic notification,
subscription, registration, forwarding, etc. As it was explained in
the previous sections it can be used and integrated with various
external third party Web Services playing roles of a notification
Publisher, Subscriber or Consumer.</p><p>A flexible plug-in architecture of <span class="emphasis"><em>QCG-Notification
</em></span>enables using different communication protocols for
messages transmission. Currently messages can be transported between
<span class="emphasis"><em>QCG-Notification</em></span> and third party entities not
only through HTTP protocol, but also through XMPP (jabber) as well as
SMTP (e-mail) protocols. It is possible to variously mix channels of
communication, for example a notification sent by a Publisher being
WS-Client as a HTTP message can be distributed over XMPP to jabber
consumers.</p><p>Below we present a set of Web Service notification use cases
demonstrating capabilities offered by
<span class="emphasis"><em>QCG-Notification</em></span>.</p><div class="figure"><a name="notificationConsumers"></a><p class="title"><b>Figure 4. Notification with multiple Publishers and multiple
NotificationConsumers</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/smn_example1.png" align="middle" width="324" alt="Notification with multiple Publishers and multiple NotificationConsumers"></div></div></div><br class="figure-break"><p>The <a class="link" href="#notificationConsumers" title="Figure 4. Notification with multiple Publishers and multiple NotificationConsumers">diagram 4</a> shows
one of the basic notification flows supported by
<span class="emphasis"><em>QCG-Notification</em></span>. Depending on records,
Notifications produced by a Publisher and received by the
<span class="emphasis"><em>QCG-Notification</em></span> may or may not be dispatched to
concrete NotificationConsumer. Note, that Subscriptions represent
relationships between Topics and NotificationConsumers in this
scenario. Before any Notification is delivered to a
NotificationConsumer, a Subscriber has to send first a
SubscribeRequest message to <span class="emphasis"><em>QCG-Notification</em></span> in
which all parameters of a Subscription are specified. Main parameters
of a SubscribeRequest message are ConsumerReference and
TopicExpression defined according to the specific Dialect type. On the
other hand, before a Publisher starts sending Notifications it may be
obligated to register himself in
<span class="emphasis"><em>QCG-Notification</em></span>. The diagram below shows a
sequence of events in order to initialize an asynchronous process of
notifications between a Publisher and a NotificationConsumer.</p><div class="figure"><a name="d0e378"></a><p class="title"><b>Figure 5. Message flows: creating a Subscription, notifying
NotificationConsumers</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/smn_example2.png" align="middle" width="324" alt="Message flows: creating a Subscription, notifying NotificationConsumers"></div></div></div><br class="figure-break"><div class="orderedlist"><ol type="1"><li><p>A Subscriber sends the SubscribeRequest message with a
NotificationConsumer location and TopicExpression parameters to
<span class="emphasis"><em>QCG-Notification</em></span>.</p></li><li><p><span class="emphasis"><em>QCG-Notification</em></span> prepares appropriate
records for a Subscription.</p></li><li><p>A Publisher register himself in
<span class="emphasis"><em>QCG-Notification</em></span> by sending the
RegisterPublisher message.</p></li><li><p>A registered Publisher sends the Notify message on a
specified Topic to a <span class="emphasis"><em>QCG-Notification
</em></span>service.</p></li><li><p><span class="emphasis"><em>QCG-Notification</em></span> checks if there are
NotificationConsumers subscribed on a specified Topic. If so,
<span class="emphasis"><em>QCG-Notification</em></span> sends asynchronous
Notifications to these NotifcationConsumers.</p></li></ol></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e416"></a>2.2. UML-style Diagrams</h3></div></div></div><p>The document uses UML-style use-case diagrams to illustrate
high-level use cases. The following list is probably sufficient for this
version of the document:</p><div class="itemizedlist"><ul type="disc"><li><p>Stick figures represents actors or roles in a scenario. These
can be human beings or software systems.</p></li><li><p>Ellipses represent use cases, i.e. actions or units of
functionality in a system.</p></li><li><p>Lines between actors and use cases indicate a participation of
the actor in the use case. At this level, no direction or payload of
data flow is expressed by the lines between actors and use
cases.</p></li></ul></div><p>The document uses UML-style sequence diagrams to illustrate
detailed use case scenarios and later in the next sections. Meanings of
graphics in these diagrams are as follows:</p><div class="itemizedlist"><ul type="disc"><li><p>Boxes at the top of the diagram represent an actor in the
scenario.</p></li><li><p>Arrows with a solid head represent a message sent from one
actor to another. The arrow points from sender to receiver.</p></li><li><p>Arrows with a line head represent the return value of a
message. The arrow points from the receiver of the earlier message
to the sender.</p></li><li><p>A dotted line running down the diagram from a box indicates
that arrows whose endpoints (tail or head) is on the line apply to
that actor.</p></li><li><p>Intersections between arrows and dotted lines are
meaningless.</p></li><li><p>Vertical layout represents time. Messages (arrows) farther
down on the page happen after messages higher on the page.</p></li><li><p>Horizontal layout has no formal meaning. Since right-pointing
arrows look better, actors that initiate a scenario tend to appear
leftward of actors they send messages to.</p></li></ul></div><p>Sequence diagrams are used in this document for more concrete
design, and that actors and messages are often objects and object
methods. They provide value for this document in that they give a
clearly ordered message layout and connections among functional units.
The actors and messages in the sequence diagrams are more properly roles
in a scenario and actions associated with that scenario.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e457"></a>2.2.1. `Main Use Cases</h4></div></div></div><div class="figure"><a name="d0e460"></a><p class="title"><b>Figure 6. Use case diagram for a Publisher</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/use_publisher.png" align="middle" width="432" alt="Use case diagram for a Publisher"></div></div></div><br class="figure-break"><div class="figure"><a name="d0e466"></a><p class="title"><b>Figure 7. Use case diagram for a Subscriber</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/use_subscriber.png" align="middle" width="432" alt="Use case diagram for a Subscriber"></div></div></div><br class="figure-break"><div class="figure"><a name="d0e472"></a><p class="title"><b>Figure 8. Use case diagram for a NotificationConsumer</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/use_consumer.png" align="middle" width="432" alt="Use case diagram for a NotificationConsumer"></div></div></div><br class="figure-break"><div class="figure"><a name="d0e478"></a><p class="title"><b>Figure 9. Use case diagram for QCG-Notification</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/use_qcgnotification.png" align="middle" width="432" alt="Use case diagram for QCG-Notification"></div></div></div><br class="figure-break"><div class="figure"><a name="d0e484"></a><p class="title"><b>Figure 10. Use case diagram for a QCG-Notification Administrator</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/use_administrator.png" align="middle" width="432" alt="Use case diagram for a QCG-Notification Administrator"></div></div></div><br class="figure-break"></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e490"></a>2.2.2. Main Sequence Diagrams</h4></div></div></div><div class="figure"><a name="d0e493"></a><p class="title"><b>Figure 11. General sequence diagram</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/seq_all.png" align="middle" width="432" alt="General sequence diagram"></div></div></div><br class="figure-break"></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e499"></a>3. User Guide for a Publisher, Subscriber and
NotificationConsumer<span class="emphasis"><em> </em></span></h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e504"></a>3.1. Prefixes and Namespaces</h3></div></div></div><p>The following table presents namespaces tied with prefixes. The
prefixes are used in example SOAP messages presented in the further
sections.</p><div class="table"><a name="d0e509"></a><p class="title"><b>Table 1. Prefixes and Namespaces</b></p><div class="table-contents"><table summary="Prefixes and Namespaces" border="1"><colgroup><col width="12%" align="left"><col width="88%"></colgroup><tbody><tr><td align="left"><span class="bold"><strong>Prefix</strong></span></td><td><span class="bold"><strong>Namespace</strong></span></td></tr><tr><td align="left">SOAP-ENV</td><td>http://schemas.xmlsoap.org/soap/envelope/</td></tr><tr><td align="left">SOAP-ENC</td><td>http://schemas.xmlsoap.org/soap/encoding/</td></tr><tr><td align="left">xsi</td><td>http://www.w3.org/2001/XMLSchema-instance</td></tr><tr><td align="left">xsd</td><td>http://www.w3.org/2001/XMLSchema</td></tr><tr><td align="left">wsa</td><td>http://www.w3.org/2005/08/addressing</td></tr><tr><td align="left">wsbf</td><td>http://docs.oasis-open.org/wsrf/bf-2</td></tr><tr><td align="left">wstop</td><td>http://docs.oasis-open.org/wsn/t-1</td></tr><tr><td align="left">wsr</td><td>http://docs.oasis-open.org/wsrf/r-2</td></tr><tr><td align="left">wsnt</td><td>http://docs.oasis-open.org/wsn/b-2</td></tr><tr><td align="left">wsntw</td><td>http://docs.oasis-open.org/wsn/bw-2</td></tr><tr><td align="left">wsnbr</td><td>http://docs.oasis-open.org/wsn/br-2</td></tr><tr><td align="left">smn-ext</td><td>http://schemas.qoscosgrid.org/ntf/2011/04/extensions</td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e582"></a>3.2. Interaction with <span class="emphasis"><em>QCG-Notification</em></span></h3></div></div></div><p>In the next subsections an issue of cooperation with
<span class="emphasis"><em>QCG-Notification</em></span> is presented independently for a
Publisher, Subscriber and NotificationConsumer. Although a conceptual
style of interaction is described here in details, technical
particularities of constructing messages are presented later.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e592"></a>3.2.1. Publisher Interaction</h4></div></div></div><div class="figure"><a name="d0e595"></a><p class="title"><b>Figure 12. Publisher interaction sequence diagram</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/seq_publisher.png" align="middle" width="432" alt="Publisher interaction sequence diagram"></div></div></div><br class="figure-break"><p>In the most general configuration of the service, a Publisher
has to be registered before it starts sending Notifications. In this
situation, a Publisher sends the RegisterPublisherRequest message to
<span class="emphasis"><em>QCG-Notification</em></span>. If everything goes well it
receives the RegisterPublisherResponse message with a session ID. From
this time a Publisher is entitled for sending Notify messages - the
Notify message has to include received session ID in its content. The
notifications can be forwarded to remote Notification Consumers or
buffered locally in PullPoints. Moreover, every new notification
replaces the old one in CurrentMessages. After work, a Publisher
should unregister himself by sending DestroyRegistration. This message
has to include a session ID likewise.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e606"></a>3.2.2. Subscriber interaction</h4></div></div></div><div class="figure"><a name="d0e609"></a><p class="title"><b>Figure 13. Subscriber interaction sequence diagram</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/seq_subscriber.png" align="middle" width="432" alt="Subscriber interaction sequence diagram"></div></div></div><br class="figure-break"><p>When a Subscriber wants to create a Subscription, it sends the
SubscribeRequest message to <span class="emphasis"><em>QCG-Notification</em></span>.
This message should contain an address of NotificationConsumer and a
TopicExpression that specifies a Topic or a set of Topics on which
NotificationConsumer should receive Notifications. Additionally a
Subscriber can define a boolean XPath expression that will be
evaluated over Notification Messages for more sophisticated filtering.
From the version 2.5.0 of the system, the Subscriber may specify XSLT
document that will be used to transform message content by certain
publishing modules. After creation of a Subscription
<span class="emphasis"><em>QCG-Notification</em></span> sends the SubscribeResponse
message with a created Subscription ID. This ID should be attached to
the UnsubscribeRequest message when a Subscription is not wanted and
the Renew message when a Subscription should be refreshed. A
Subscriber is allowed to create many equal Subscriptions.</p><p>If a scenario requires pull-style of notifications, a Subscriber
can create a set of PullPoints. In a such situation, it has to invoke
the CreatePullPoint method offered by <span class="emphasis"><em>QCG-Notification.
<span class="emphasis"><em>The response parameter of this method will be an address to
the newly created <span class="emphasis"><em>PullPoint resource (Subscribers can assign
this resources as NotificationConsumers in theirs Subscriptions). A
PullPoint resource can be destroyed by the DestroyPullPoint message
sent directly to this resource.
</em></span></em></span></em></span></p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e631"></a>3.2.3. NotificationConsumer Interaction</h4></div></div></div><div class="figure"><a name="d0e635"></a><p class="title"><b>Figure 14. NotificationConsumer interaction sequence diagram</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="http://apps.man.poznan.pl/trac/qcg-notification/raw-attachment/wiki/technicalGuideAndManual/seq_consumer.png" align="middle" width="432" alt="NotificationConsumer interaction sequence diagram"></div></div></div><p><br class="figure-break">The main capability of a NotificationConsumer is a
receiving of Notify messages. A NotificationConsumer can implement an
interface for receiving Notify messages sending by
<span class="emphasis"><em>QCG-Notification</em></span> or can be a client of a
PullPoint. In the second case, a NotificationConsumer can invoke
GetMessages method offered by a certain PullPoint. Messages buffered
in the PullPoint will be removed from the buffer and delivered in
GetMessagesResponse to the consumer.</p><p>On the other hand, when a NotificationConsumer wants to receive
the last Notification message sent on a specific Topic, it can do this
by sending GetCurrentMessageRequest to
<span class="emphasis"><em>QCG-Notification</em></span>. Requested Notification will be
supplied in the GetCurrentMessageResponse message.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ted"></a>3.3. Topics, TopicExpressions and Dialects</h3></div></div></div><p>Before start-up of a <span class="emphasis"><em>QCG-Notification</em></span>
service, there should be defined Topic Namespaces in a system. Topic
Namespaces should be created (usually by Publishers) and delivered to
a<span class="emphasis"><em> QCG-Notification</em></span> administrator in a form of XML
documents. A following record presents a sample Topic Namespace
identified by
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics.</em></span></p><pre class="programlisting"><wstop:TopicNamespace
xmlns:wstop="http://docs.oasis-open.org/wsn/t-1"
targetNamespace="http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics">
<wstop:Topic name="House">
<wstop:Topic name="Kitchen">
<wstop:Topic name="Friedge"/>
<wstop:Topic name="Cook"/>
<wstop:Topic name="Light"/>
</wstop:Topic>
<wstop:Topic name="Toilet">
<wstop:Topic name="Light"/>
</wstop:Topic>
<wstop:Topic name="Room1">
<wstop:Topic name="Light"/>
</wstop:Topic>
<wstop:Topic name="Room2">
<wstop:Topic name="Light"/>
</wstop:Topic>
</wstop:Topic>
</wstop:TopicNamespace></pre><p><span class="emphasis"><em>QCG-Notification </em></span>supports three types of
dialects: <span class="emphasis"><em>Simple</em></span>, <span class="emphasis"><em>Concrete</em></span> and
<span class="emphasis"><em>Full</em></span>. If a message refer to Topics, it has to
define TopicExpression that identifies one or more Topics (note there
are situations when TopicExpression has to refer to exactly one Topic).
TopicExpression has to be written in a supported Dialect. Further more
TopicExpression has to define Topics from supported Topic Namespaces. To
select an appropriate Topic Namespace, the first part of TopicExpression
should be presented in a form of a prefix that refers to this
namespace.</p><p>For more details see: <a class="ulink" href="http://docs.oasis-open.org/wsn/wsn-ws_topics-1.3-spec-pr-0.2.pdf" target="_top">http://docs.oasis-open.org/wsn/wsn-ws_topics-1.3-spec-os.pdf</a>
and check out examples of methods in the <a class="link" href="#methodsdescription">section 3.4.</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e685"></a>3.4. Extensions</h3></div></div></div><p>The Oasis standard for notifications doesn't define details for
lower Levels of functionality so an architect of system is obligated to
introduce some extensions and clarifications. In the
<span class="emphasis"><em>QCG-Notification </em></span>scenario there are several
messages that have to be expanded with additional information written as
embedded XML. Some of these extensions are related with other Oasis
standards but some are quite new. Technical details are described in the
successive subsections.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e693"></a>3.4.1. TopicExpression</h4></div></div></div><p><span class="emphasis"><em>QCG-Notification </em></span>remote peers have to use
an appropriate TopicExpression XML element. The schema of this element
is defined according to Oasis standard in<a class="ulink" href="http://docs.oasis-open.org/wsn/b-2.xsd" target="_top"></a><a class="ulink" href="http://docs.oasis-open.org/wsn/b-2.xsd" target="_top">
http://docs.oasis-open.org/wsn/b-2.xsd</a><a class="ulink" href="http://docs.oasis-open.org/wsn/b-2.xsd" target="_top"></a>. Please note
here that the Nofity and GetCurrentMessageRequest messages contain a
Topic element which contains a required @Dialect attribute. Also
TopicExpression has to define a @Dialect attribute. For conformity
with the WSDL document, a @Dialect from the Topic element is
significant. It is not necessary but preferred to attach the same
@Dialect in the TopicExpression element against.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e704"></a>3.4.2. <span class="emphasis"><em>QCG-Notification</em></span> Extensions</h4></div></div></div><p><span class="emphasis"><em>QCG-Notification</em></span> introduces some extensions
to WSDL as well as schema documents related to the Oasis standard. The
following schema defines these extensions. The first three elements
named RegisterPublisherID, SubscriptionID and PullPointID are IDs for
Publisher Registrations, created Subscriptions and PullPoints.
CurrentMessage is used for supplementation of
GetCurrentMessageResponse. The rest of the elements is utilized in the
managing methods, the elements are used in order to: listing
Subscriptions, listing PublisherRegistrations and listing
PullPoints.</p><pre class="programlisting"><?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns="http://schemas.qoscosgrid.org/ntf/2011/04/extensions"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2"
targetNamespace="http://schemas.qoscosgrid.org/ntf/2011/04/extensions"
elementFormDefault="qualified">
<xsd:import namespace="http://docs.oasis-open.org/wsn/b-2"
schemaLocation="http://docs.oasis-open.org/wsn/b-2.xsd"/>
<xsd:element name="RegisterPublisherID" type="ID"/>
<xsd:element name="SubscriptionID" type="ID"/>
<xsd:element name="PullPointID" type="ID"/>
<xsd:element name="CurrentMessage" type="CM"/>
<xsd:element name="XSLTTranslation" type="XSLTTrans"/>
<xsd:simpleType name="ID">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="32"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CM">
<xsd:all>
<xsd:element name="NotifyTime" type="xsd:dateTime" minOccurs="0"/>
<xsd:element ref="wsnt:ProducerReference" minOccurs="0" maxOccurs="1"/>
<xsd:element name="Message" type="MSG" minOccurs="1"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="MSG">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="XSLTTrans">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4096"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ================= QCG-Notification manager : ListPullPoints ================== -->
<xsd:complexType name="ListSubscriptionsFilter">
<xsd:sequence>
<xsd:element name="SubscriptionID" type="ID" minOccurs="0" maxOccurs="1"/>
<xsd:element name="ConsumerReference" type="wsa:EndpointReferenceType"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="CreationTimeMin" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="CreationTimeMax" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTimeMin" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTimeMax" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="wsnt:Filter" minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListSubscriptions">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Filter" type="ListSubscriptionsFilter"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="MaxNumber" type="xsd:integer"
minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="Subscription">
<xsd:sequence>
<xsd:element name="SubscriptionID" type="ID"/>
<xsd:element name="ConsumerReference" type="wsa:EndpointReferenceType"
minOccurs="0" maxOccurs="1" />
<xsd:element name="CreationTime" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTime" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="wsnt:Filter" minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListSubscriptionsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Subscription" type="Subscription"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- ================= QCG-Notification manager : ListPublishersRegistrations ================== -->
<xsd:complexType name="ListPublishersRegistrationsFilter">
<xsd:sequence>
<xsd:element name="PublisherRegistrationID" type="ID"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="PublisherReference" type="wsa:EndpointReferenceType"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="CreationTimeMin" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="CreationTimeMax" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTimeMin" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTimeMax" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListPublishersRegistrations">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Filter" type="ListPublishersRegistrationsFilter"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="MaxNumber" type="xsd:integer"
minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="PublisherRegistration">
<xsd:sequence>
<xsd:element name="PublisherRegistrationID" type="ID"/>
<xsd:element name="PublisherReference" type="wsa:EndpointReferenceType"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="CreationTime" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTime" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListPublishersRegistrationsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PublisherRegistration" type="PublisherRegistration"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- ================= QCG-Notification manager : ListPullPoints ================== -->
<xsd:complexType name="ListPullPointsFilter">
<xsd:sequence>
<xsd:element name="PullPointID" type="ID"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="PullPointReference" type="wsa:EndpointReferenceType"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="CreationTimeMin" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="CreationTimeMax" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTimeMin" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTimeMax" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListPullPoints">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Filter" type="ListPullPointsFilter"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="MaxNumber" type="xsd:integer"
minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="PullPoint">
<xsd:sequence>
<xsd:element name="PullPointID" type="ID"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="PullPointReference" type="wsa:EndpointReferenceType"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="CreationTime" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:element name="TerminationTime" type="wsnt:AbsoluteOrRelativeTimeType"
nillable="true" minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListPullPointsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PullPoint" type="PullPoint"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- ================= QCG-Notification manager : ListTopicNamespaces ================== -->
<xsd:complexType name="ListTopicNamespacesFilter">
<xsd:sequence>
<xsd:element name="targetNamespace" type="xsd:anyURI"
minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListTopicNamespaces">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Filter" type="ListTopicNamespacesFilter"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="MaxNumber" type="xsd:integer"
minOccurs="0" maxOccurs="1"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="TopicNamespace">
<xsd:sequence>
<xsd:element name="targetNamespace" type="xsd:anyURI" use="required"/>
<xsd:element name="Topics" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListTopicNamespacesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TopicNamespace" type="TopicNamespace"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- ================= QCG-Notification manager : AddTopicNamespace ================== -->
<xsd:element name="AddTopicNamespace">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="wstop:TopicNamespace"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AddTopicNamespaceResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- ================= QCG-Notification manager : RemoveTopicNamespace ================== -->
<xsd:element name="RemoveTopicNamespace">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="targetNamespace" type="xsd:anyURI"
use="required"/>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RemoveTopicNamespaceResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema></pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e715"></a>3.5. Methods Description</h3></div></div></div><p>The main idea of this chapter is to present the types of messages
used in the <span class="emphasis"><em>QCG-Notification</em></span> scenario as well as
introduce how to construct and interpret these messages. The majority of
them is two-way style and initiated by
<span class="emphasis"><em>QCG-Notification</em></span> clients. Exception is the Notify
message that is one-way style. In the first phase it is transported from
a Publisher to <span class="emphasis"><em>QCG-Notification</em></span> and in the second
it is transported from <span class="emphasis"><em>QCG-Notification</em></span> to
subscribed NotificationConsumers.</p><p>All supported by <span class="emphasis"><em>QCG-Notification</em></span> message
types are presented and explained below.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><div class="itemizedlist"><ul type="disc"><li><p>The key information are thick;</p></li><li><p>A base of the messages structure is a delivered WSDL file,
however there are also extensions;</p></li><li><p>For all messages it is important to set a correct
WS-Addressing Action property which should be the same as SOAP
Action.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e749"></a>3.5.1. SubscribeRequest</h4></div></div></div><p>SubscribeRequest is sent by a Subscriber to
<span class="emphasis"><em>QCG-Notification</em></span>. The message should contain
information about a NotificationConsumer and an expression defining
Topic or Topics that the Subscription will affect. If a message
processing is successful, a Subscription is created. It is possible to
create many equal Subscriptions by sending numerously the same
SubscribeRequest message.</p><pre class="programlisting">SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
NotificationProducer/SubscribeRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:Subscribe>
<wsnt:ConsumerReference>
<wsa:Address>
<span class="bold"><strong>https://localhost:2233</strong></span>
</wsa:Address>
</wsnt:ConsumerReference>
<wsnt:Filter>
<wsnt:TopicExpression
<span class="bold"><strong>xmlns:tns="<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics</strong></span>"</strong></span>
Dialect=<span class="bold"><strong>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full"</strong></span>>
<span class="bold"><strong>tns://*</strong></span>
</wsnt:TopicExpression>
<wsnt:MessageContent
<span class="bold"><strong>xmlns:smnex=http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousemessage</strong></span>
Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116">
<span class="bold"><strong>boolean(//smnex:State[text()="on"])</strong></span>
</wsnt:MessageContent>
</wsnt:Filter>
<wsnt:InitialTerminationTime>
<span class="bold"><strong>2007-07-23T10:24:14+02:00</strong></span>
</wsnt:InitialTerminationTime>
<smn-ext:XSLTTranslation>
<![CDATA[<span class="bold"><strong>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version 1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmln:s=http://schemas.qoscosgrid.org/ntf/1011/04/sample/myhousemessage">
<xsl:output method="text"/>
<xsl:template match="/">
### Sample QCG-Notification message ###
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="s:State">
Value of State is: <xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet></strong></span>
]]>
</smn-ext:XSLTTranslation>
</wsnt:Subscribe>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/
NotificationProducer/SubscribeRequest. <span class="emphasis"><em>If differ, a
fault will be returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:Subscribe/wsnt:ConsumerReference/wsa:Address</em></span></p><p>A Consumer address. It is significant to specify a correct
prefix (http, https, xmpp). The prefix should be adequate to the
expected type of connection between
<span class="emphasis"><em>QCG-Notification</em></span> and NotificationConsumer(s):
http for anonymous, https for ssl-based and xmpp for sending
notifications to jabber clients.</p></li><li><p><span class="emphasis"><em>//wsnt:Subscribe/wsnt:Filter</em></span></p><p>In this element, a Subscriber defines filtering parameters
to the Subscription being created. In other words, it identifies a
type of Notifications that should be forwarded to the selected
Notification Consumer.</p></li><li><p><span class="emphasis"><em>//wsnt:Subscribe/wsnt:Filter/wsnt:TopicExpression</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>This element defines Topic or Topics
that Subscription should affect. Topics should come from supported
Topic Namespaces that are also defined for the element.
TopicExpression may be defined in two ways: (1) using prefixed
form (e.g. tns://*) - the topicNamespace is defined in a
TopicExpression element and assigned to some prefix (e.g. tns) or
(2) using inline form (e.g.
{http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics}//*).</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:Subscribe/wsnt:Filter/wsnt:TopicExpression/@Dialect</em></span></p><p>URI that specifies a TopicExpression Dialect type. Allowed
Dialects types are as follows:
<span class="emphasis"><em>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple",
"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete",
"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full"</em></span></p></li><li><p><span class="emphasis"><em>//wsnt:Subscribe/wsnt:Filter/wsnt:MessageContent</em></span></p><p>An optional element. If present, the MessageContent should
define an XPath boolean expression that will be evaluated over
redistributed Notificatiom Messages to true or false. If such an
evaluation returns true, the message is forwarded, otherwise it is
not. The namespaces used in the expression may be defined inside
the MessageContent element as additional attributes or using
in-line form e.g.
boolean(//{http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousemessage}State[text()="on"].The
Dialect should always be:
<span class="emphasis"><em>http://www.w3.org/TR/1999/REC-xpath-19991116</em></span></p></li><li><p><span class="emphasis"><em>//wsnt:Subscribe/wsnt:InitialTerminationTime</em></span></p><p>An optional element. If present, must contain a Subscriber
suggestion for the termination time of the Subscription being
created (expressed as a local time with timezone). If not present,
the termination time is determined automatically -
<span class="emphasis"><em>QCG-Notification <span class="emphasis"><em>specify a default time
period</em></span></em></span> for the Subscription to be
valid.</p></li><li><p><span class="emphasis"><em>//wsnt:Subscribe/smn-ext:XSLTTranslation</em></span></p><p>An optional element. Inside the XSLTTranslation a Subscriber
may deliver an XSLT document that will be used by some publishing
modules to transform notification messages to a different form
(for example user readable). Note that an actual XSLT document
should be enclosed in <![CDATA[ and ]]> markers.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e856"></a>3.5.2. SubscribeResponse</h4></div></div></div><p>In answer on SubscribeRequest there is sent the
SubscribeResponse message. <span class="emphasis"><em>QCG-Notification</em></span>
deliver in this message a reference to the created Subscription. This
ID can be used for manipulation and to remove the Subscription.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
NotificationProducer/SubscribeResponse</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:SubscribeResponse>
<wsnt:SubscriptionReference>
<wsa:Address>
<span class="bold"><strong>http://some.address</strong></span>
</wsa:Address>
<wsa:ReferenceParameters>
<span class="bold"><strong><SubscriptionID
xmlns="http://schemas.qoscosgrid.org/ntf/2011/04/extensions">
506435877
</SubscriptionID></strong></span>
</wsa:ReferenceParameters>
</wsnt:SubscriptionReference>
</wsnt:SubscribeResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/
NotificationProducer/SubscribeResponse. <span class="emphasis"><em>If differ, a
fault will be returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:SubscribeResponse/wsnt:SubscriptionReference/wsa:Address</em></span></p><p>An address of a SubscriptionManager interface. In the
current solution it is the <span class="emphasis"><em>QCG-Notification</em></span>
service address.</p></li><li><p><span class="emphasis"><em>//wsnt:SubscribeResponse/wsnt:SubscriptionReference/</em></span></p><p><span class="emphasis"><em>wsa:ReferenceParameters/SubscriptionID</em></span></p><p>An extensive element in xsd:any that contains Subscription
ID. At this time it is at most 32 char long string.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e904"></a>3.5.3. RenewRequest</h4></div></div></div><p>When a Subscriber wants to renew a Subscription, it can send the
RenewRequest message to <span class="emphasis"><em>QCG-Notification</em></span>. The
message should contain the Subscription ID element and a new
termination time suggesation.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
SubscriptionManager/RenewRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:Renew>
<wsnt:TerminationTime>
<span class="bold"><strong>2007-07-25T12:24:14+02:00</strong></span>
</wsnt:TerminationTime>
<smn-ext:SubscriptionID>
<span class="bold"><strong>506435877</strong></span>
</smn-ext:SubscriptionID>
</wsnt:Renew>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/
SubscriptionManager/RenewRequest. <span class="emphasis"><em>If differ, a fault
will be returned.</em></span></em></span></p></li><li><p>//wsnt:Renew/wsnt:TerminationTime</p><p>A Subscriber suggestion for the new termination time of the
Subscription being renewed (expressed as a local time with
timezone).</p></li><li><p><span class="emphasis"><em>//wsnt:Renew/smn-ext:SubscriptionID</em></span></p><p>A Subscription ID that was received in the SubscribeResponse
message.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e945"></a>3.5.4. RenewResponse</h4></div></div></div><p>An answer to the RenewRequest message is RenewResponse. The
message contains a termination time for the renewed
Subscription.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong> http://docs.oasis-open.org/wsn/bw-2/
SubscriptionManager/RenewResponse</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:RenewResponse>
<wsnt:TerminationTime>
<span class="bold"><strong>2007-07-25T10:24:14Z</strong></span>
</wsnt:TerminationTime>
<wsnt:CurrentTime>
<span class="bold"><strong>2007-07-24T10:24:14Z</strong></span>
</wsnt:CurrentTime>
</wsnt:RenewResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/
SubscriptionManager/RenewResponse. <span class="emphasis"><em>If differ, a fault
will be returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:RenewResponse/wsnt:TerminationTime</em></span></p><p>A new termination time for the renewed Subscription
(expressed as UTC Time).</p></li></ul></div><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//wsnt:RenewResponse/wsnt:CurrentTime</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>A
</em></span>QCG-Notification's</em></span> time when the
Subscription was renewing (expressed as UTC Time).</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e989"></a>3.5.5. UnsubscribeRequest</h4></div></div></div><p>When a Subscriber wants to terminate a Subscription, it has to
send the UnsubscribeRequest message to
<span class="emphasis"><em>QCG-Notification</em></span>. The parameter attached to this
request is a Subscription ID.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
SubscriptionManager/UnsubscribeRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:Unsubscribe>
<smn-ext:SubscriptionID>
<span class="bold"><strong>506435877</strong></span>
</smn-ext:SubscriptionID>
</wsnt:Unsubscribe>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/
SubscriptionManager/UnsubscribeRequest. <span class="emphasis"><em>If differ, a
fault will be returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:Unsubscribe/smn-ext:SubscriptionID</em></span></p><p>A Subscription ID that was received in the SubscribeResponse
message.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1022"></a>3.5.6. UnsubscribeResponse</h4></div></div></div><p>UnsubscribeResponse is returned to a Subscriber after
successfully processing the UnsubscribeRequest message.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstAand="1">
<span class="bold"><strong> http://docs.oasis-open.org/wsn/bw-2/
SubscriptionManager/UnsubscribeResponse</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:UnsubscribeResponse>
</wsnt:UnsubscribeResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/
SubscriptionManager/UnsubscribeResponse. <span class="emphasis"><em>If differ, a
fault will be returned.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1043"></a>3.5.7. RegisterPublisherRequest</h4></div></div></div><p>In order to sending Notifications, a Publisher can be obligated
to register himself previosly in
<span class="emphasis"><em>QCG-Notification</em></span>. For this purpose, it sends the
RegisterPublisherRequest message to
<span class="emphasis"><em>QCG-Notification</em></span>.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/brw-2/
RegisterPublisher/RegisterPublisherRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnbr:RegisterPublisher>
<wsnbr:Demand>
<span class="bold"><strong>false</strong></span>
</wsnbr:Demand>
<wsnbr:InitialTerminationTime>
<span class="bold"><strong>2007-07-23T10:24:14+02:00</strong></span>
</wsnbr:InitialTerminationTime>
</wsnbr:RegisterPublisher>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/brw-2/
RegisterPublisher/RegisterPublisherRequest. <span class="emphasis"><em>If differ, a
fault will be returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnbr:RegisterPublisher/wsnbr:Demand</em></span></p><p>Determine a demand-based pattern. At this time this pattern
isn't supported so default <span class="emphasis"><em>false</em></span> is the sole
accepted value.</p></li><li><p><span class="emphasis"><em>//wsnbr:RegisterPublisher/wsnbr:InitialTerminationTime</em></span></p><p>An optional element. If present, must contain the requester
suggestion for the termination time of the Registration being
created (expressed as a local time with timezone). If not present,
the termination time is determined automatically -
<span class="emphasis"><em>QCG-Notification <span class="emphasis"><em>specify the default time
period</em></span></em></span> for the Registration to be valid.
Every Notify message renews the termination time.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1096"></a>3.5.8. RegisterPublisherResponse</h4></div></div></div><p>In a response to a successful registration process,
<span class="emphasis"><em>QCG-Notification</em></span> sends RegisterPublisherResponse.
This message contains a reference to the created Registration. The
attached ID is necessary to send any Notification message.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/brw-2/
RegisterPublisher/RegisterPublisherResponse</strong></span>
</wsa:Action>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnbr:RegisterPublisherResponse>
<wsnbr:PublisherRegistrationReference>
<wsa:Address>
<span class="bold"><strong>http://some.address</strong></span>
</wsa:Address>
<wsa:ReferenceParameters>
<span class="bold"><strong><RegisterPublisherID
xmlns="http://schemas.qoscosgrid.org/ntf/2011/04/extensions">
1207382668
</RegisterPublisherID></strong></span>
</wsa:ReferenceParameters>
</wsnbr:PublisherRegistrationReference>
</wsnbr:RegisterPublisherResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherResponse.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnbr:RegisterPublisherResponse/wsnbr:PublisherRegistrationReference/wsa:Address</em></span></p><p>An address of a PublisherRegistration Manager interface. In
the current solution it is the
<span class="emphasis"><em>QCG-Notification</em></span> service address.</p></li><li><p><span class="emphasis"><em>//wsnbr:RegisterPublisherResponse/wsnbr:PublisherRegistrationReference/wsa:ReferenceParameters/RegisterPublisherID</em></span></p><p>An extensive element in xsd:any that contains a Publisher
Registration ID. It defines a session that is created after
registration and removed by sending the DestroyRegistration
message. At this time it is at most 32 char long string.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1141"></a>3.5.9. Notify</h4></div></div></div><p>Notify consists of one or many NotificationMessages. Any of them
is a separate Notification message and is processed independently.
NotificationMessage should define a single Topic it concerns.
TopicExpression should be written in the same Dialect that the
Subscription was created in. The Publisher Registration ID has to be
attached to Notify messages.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
NotificationConsumer/Notify</strong></span>
</wsa:Action>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:Notify>
<wsnt:NotificationMessage>
<wsnt:Topic
Dialect=<span class="bold"><strong>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full"</strong></span><span class="bold"><strong>
xmlns:tns="<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics</strong></span>">
tns:House/Kitchen/Light</strong></span>
</wsnt:Topic>
<wsnt:ProducerReference>
<wsa:Address>
<span class="bold"><strong>http://some.address
</strong></span><wsa:Address>
<wsnt:ProducerReference>
<wsnt:Message>
<span class="bold"><strong><smnex:State
xmlns:smnex="http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousemessage">
on
</smnex:State></strong></span>
</wsnt:Message>
</wsnt:NotificationMessage>
<smn-ext:RegisterPublisherID>
<span class="bold"><strong>1207382668</strong></span>
</smn-ext:RegisterPublisherID>
</wsnt:Notify>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:Notify</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>A set of Notification
messages.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:Notify/wsnt:NotificationMessage</em></span></p><p>A single Notification message.</p></li><li><p><span class="emphasis"><em>//wsnt:Notify/wsnt:NotificationMessage/wsnt:Topic</em></span></p><p>The content of this element is an expression that defines
exactly one Topic in a specified Dialect type. The Topic should be
supported. The Topic may be defined in two ways: (1) using
prefixed form (e.g. tns:House/Kithchen/Light) - the topicNamespace
is defined in a Topic element and assigned to some prefix (e.g.
tns) or (2) using inline form (e.g.
{http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics}House/Kitchen/Light).</p></li><li><p><span class="emphasis"><em>//wsnt:Notify/wsnt:NotificationMessage/wsnt:Topic/@Dialect</em></span></p><p>URI that specifies TopicExpression Dialect type. Allowed
Dialect types are as follows:
<span class="emphasis"><em>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple",
"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete",
"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full".</em></span></p></li><li><p><span class="emphasis"><em>//wsnt:Notify/wsnt:NotificationMessage/wsnt:ProducerReference/wsa:Address</em></span></p><p>A Notification producer (Publisher) address.</p></li><li><p><span class="emphasis"><em>//wsnt:Notify/wsnt:NotificationMessage/wsnt:Message</em></span></p><p>A Notify message content. Currently supported are messages
shorter than 4096 bytes.</p></li><li><p><span class="emphasis"><em>//wsnt:Notify/smn-ext:RegisterPublisherID</em></span></p><p>A Publisher Registration ID that was received in the
RegisterPublisherResponse message.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1225"></a>3.5.10. DestroyRegistrationRequest</h4></div></div></div><p>A Publisher can terminate a Registration by sending the
DestroyRegistrationRequest message to
<span class="emphasis"><em>QCG-Notification</em></span>. The parameter attached to this
request is a Publisher Registration ID.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open-org/wsn/brw-2/
PublisherRegistrationManager/DestroyRegistrationRequest</strong></span>
</wsa:Action>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnbr:DestroyRegistration>
<smn-ext:RegisterPublisherID>
<span class="bold"><strong>387837036</strong></span>
</smn-ext:RegisterPublisherID>
</wsnbr:DestroyRegistration>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/brw-2/
PublisherRegistrationManager/DestroyRegistrationRequest.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnbr:DestroyRegistration/smn-ext:RegisterPublisherID</em></span></p><p>A Publisher Registration ID that was received in a
RegisterPublisherResponse message.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1258"></a>3.5.11. DestroyRegistrationResponse</h4></div></div></div><p>DestroyRegistrationResponse is returned to a Publisher after a
successful process of destroying a Publisher Registration, in a
response to the DestroyRegistration message.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open-org/wsn/brw-2/
PublisherRegistrationManager/DestroyRegistrationResponse</strong></span>
</wsa:Action>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsn-br:DestroyRegistrationResponse>
</wsn-br:DestroyRegistrationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/brw-2/
PublisherRegistrationManager/DestroyRegistrationResponse.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1279"></a>3.5.12. CreatePullPointRequest</h4></div></div></div><p>In scenarios where the pull-style of notifications delivery is
needed, Subscribers can create PullPoints. To do this, a Subscriber
sends the CreatePullPointRequest message to <span class="emphasis"><em>QCG-Notification
PullPoint</em></span>.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
CreatePullPoint/CreatePullPointRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:CreatePullPoint>
</wsnt:CreatePullPoint>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/CreatePullPoint/CreatePullPointRequest.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1303"></a>3.5.13. CreatePullPointResponse</h4></div></div></div><p>The CreatePullPointResponse message is returned in a response to
the request of PullPoint creation. This message contains a reference
to the just created PullPoint. </p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
CreatePullPoint/CreatePullPointResponse</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:CreatePullPointResponse>
<wsa:Address xmlns:wsa="http://www.w3.org/2005/08/addressing">
<span class="bold"><strong> http://some.address:2211?ppID=1100992448</strong></span>
</wsa:Address>
</wsnt:CreatePullPointResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/CreatePullPoint/CreatePullPointResponse.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:CreatePullPointResponse/wsa:Address</em></span></p><p>An logical address of the created PullPoint.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1333"></a>3.5.14. GetMessages</h4></div></div></div><p>A Pull-style NotificationConsumer can get messages buffered in a
PullPoint by invoking the GetMessages method. It sends the
GetMessagesRequest message directly to the specified PullPoint. The
message can contain a specification of a maximal number of
Notification messages that NotificationConsumer wants to receive in
the response.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
PullPoint/GetMessagesRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:GetMessages>
<wsnt:MaximumNumber><span class="bold"><strong>10</strong></span></wsnt:MaximumNumber>
</wsnt:GetMessages>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/PullPoint/GetMessagesRequest.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li></ul></div><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//wsnt:GetMessages/wsnt:MaximumNumber</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>An optional element. It defines a
maximal number of messages that will be gotten from the
PullPoint.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1366"></a>3.5.15. GetMessagesResponse</h4></div></div></div><p>GetMessagesResponse, a response message to GetMessages, consists
of a set of Notifications received from the PullPoint.
</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
PullPoint/GetMessagesResponse</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:GetMessagesResponse>
<wsnt:NotificationMessage>
<wsnt:Topic
Dialect=<span class="bold"><strong>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full"</strong></span>>
<span class="bold"><strong>xmlns:tns="<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics</strong></span>"</strong></span>>
<span class="bold"><strong>tns:House/Kitchen/Light</strong></span>
</wsnt:Topic>
<wsnt:ProducerReference>
<wsa:Address>
<span class="bold"><strong>http://some.address
</strong></span><wsa:Address>
<wsnt:ProducerReference>
<wsnt:Message>
<span class="bold"><strong><span class="bold"><strong><smnex:State
xmlns:smnex="http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousemessage">
on
</smnex:State></strong></span></strong></span>
</wsnt:Message>
</wsnt:NotificationMessage>
<wsnt:NotificationMessage>
...
</wsnt:NotificationMessage>
...
</wsnt:GetMessagesResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/PullPoint/GetMessagesResponse.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li><li><p>//wsnt:GetMessagesResponse</p><p>A set of Notification messages. The number of messages is
restricted by the wsnt:MaximumNumber parameter defined in the
GetMessagesRequest message.</p></li><li><p><span class="emphasis"><em>//wsnt:GetMessagesResponse/wsnt:NotificationMessage</em></span></p><p>A single Notification message.</p></li><li><p><span class="emphasis"><em>//wsnt:GetMessagesResponse/wsnt:NotificationMessage/wsnt:Topic</em></span></p><p>The content of this element is an expression that defines
exactly one Topic in a specified Dialect type. The Topic should
be supported.</p></li><li><p><span class="emphasis"><em>//wsnt:GetMessagesResponse/wsnt:NotificationMessage/wsnt:Topic/@Dialect</em></span></p><p>URI that specifies a TopicExpression Dialect type. Allowed
Dialect types are as follows:
<span class="emphasis"><em>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple",
"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete",
"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full".</em></span></p></li><li><p><span class="emphasis"><em>//wsnt:GetMessagesResponse/wsnt:NotificationMessage/wsnt:ProducerReference/wsa:Address</em></span></p><p>A Notification producer (Publisher) address.</p></li><li><p><span class="emphasis"><em>//wsnt:GetMessagesResponse/wsnt:NotificationMessage/wsnt:Message</em></span></p><p>A Notify message content. Currently supported are messages
shorter than 4096 bytes.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1443"></a>3.5.16. DestroyPullPointRequest</h4></div></div></div><p>A PullPoint can be destroyed by invoking a DestroyPullPoint
method. An empty request message should be sent directly to the
PullPoint.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
PullPoint/DestroyPullPointRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:DestroyPullPoint>
</wsnt:DestroyPullPoint>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/PullPoint/DestroyPullPointRequest.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1464"></a>3.5.17. DestroyPullPointResponse</h4></div></div></div><p>A response to a DestroyPullPointRequest message is an empty
DestroyPullPointResponse message.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
PullPoint/DestroyPullPointResponse</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:DestroyPullPointResponse>
</wsnt:DestroyPullPointResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/PullPoint/DestroyPullPointResponse.
<span class="emphasis"><em>If differ, a fault will be
returned.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1485"></a>3.5.18. GetCurrentMessageRequest</h4></div></div></div><p>GetCurrentMessageRequest is useful especially when a new
NotificationConsumer is connecting and want to get the last published
Notification Message on a specified Topic. Single GetCurrentMessage
should refer exactly one Topic and has to be expressed in a supported
Dialect type.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
NotificationProducer/GetCurrentMessageRequest</strong></span>
</wsa:Action>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:GetCurrentMessage>
<wsnt:Topic
Dialect=<span class="bold"><strong>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full"</strong></span>>
<span class="bold"><strong>xmlns:tns="http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics"</strong></span>>
<span class="bold"><strong>tns:</strong></span><span class="bold"><strong>House/Kitchen/Light</strong></span>
</wsnt:Topic>
</wsnt:GetCurrentMessage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/
NotificationProducer/GetCurrentMessageRequest. <span class="emphasis"><em>If
differ, a fault will be returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//wsnt:GetCurrentMessage/wsnt:Topic</em></span></p><p>The content of this element is an expression that defines
exactly one Topic in a specified Dialect type. The topic should be
supported. The Topic may be defined in two ways: (1) using
prefixed form (e.g. tns:House/Kithchen/Light) - the topicNamespace
is defined in a Topic element and assigned to some prefix (e.g.
tns) or (2) using inline form (e.g.
{http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics}House/Kitchen/Light.</p></li><li><p><span class="emphasis"><em>//wsnt:GetCurrentMessage/wsnt:Topic/@Dialect</em></span></p><p>URI that specifies TopicExpression Dialect's type. Allowed
dialect's types are as follows:
<span class="emphasis"><em>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple",
"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete",
"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full".
</em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1532"></a>3.5.19. GetCurrentMessageResponse</h4></div></div></div><p>In a response to GetCurrentMessageRequest
<span class="emphasis"><em>QCG-Notification</em></span> prepares
GetCurrentMessageResponse. This message includes the content of the
last Notification GetCurrentMessageRequest refers to.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
NotificationProducer/GetCurrentMessageResponse</strong></span>
</wsa:Action>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<wsnt:GetCurrentMessageResponse>
<smn-ext:CurrentMessage>
<smn-ext:NotifyTime>
<span class="bold"><strong>2007-07-23T10:43:14Z</strong></span>
</smn-ext:NotifyTime>
<wsnt:ProducerReference>
<wsa:Address>
<span class="bold"><strong>http://some.address
</strong></span><wsa:Address>
<wsnt:ProducerReference>
<smn-ext:Message>
<span class="bold"><strong><span class="bold"><strong><smnex:State
xmlns:smnex="http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousemessage">
on
</smnex:State></strong></span></strong></span>
</smn-ext:Message>
</smn-ext:CurrentMessage>
</wsnt:GetCurrentMessageResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://docs.oasis-open.org/wsn/bw-2/
NotificationProducer/GetCurrentMessageResponse. <span class="emphasis"><em>If
differ, a fault will be returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//wsnt:GetCurrentMessageResponse/smn-ext:GetCurrentMessage</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>The element that contains current
Notification and information related to this
notification.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//wsnt:GetCurrentMessageResponse/smn-ext:GetCurrentMessage/smn-ext:NotifyTime</em></span></p><p>The time when notification was received by
<span class="emphasis"><em>QCG-Notification</em></span>; expressed as universal time
(UTC).</p></li><li><p><span class="emphasis"><em>//wsnt:GetCurrentMessageResponse/wsnt:ProducerReference/wsa:Address</em></span></p><p>A Notification producer (Publisher) address.</p></li><li><p><span class="emphasis"><em>//wsnt:GetCurrentMessageResponse/smn-ext:GetCurrentMessage/smn-ext:Message</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>An extensive element. The content of
this element is the last Notification message published to the
Topic specified in GetCurrentMessageRequest. Currently supported
are messages shorter than 4096 bytes.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1598"></a>3.5.20. ListSubscriptions</h4></div></div></div><p>The first method from the the group of administrative methods.
It may be invoked to get an information about available subscriptions
in the <span class="emphasis"><em>QCG-Notification</em></span> service. The method
consists of various filtering parameters.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/ListSubscriptionsRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:ListSubscriptions>
<smn-ext:Filter>
<smn-ext:SubscriptionID>
<span class="bold"><strong>1568334</strong></span>
</smn-ext:SubscriptionID>
<smn-ext:ConsumerReference>
<wsa:Address>
<span class="bold"><strong>http://localhost:2233</strong></span>
</wsa:Address>
</smn-ext:ConsumerReference>
<smn-ext:CreationTimeMin>
<span class="bold"><strong>2010-07-09T08:21:58Z</strong></span>
</smn-ext:CreationTimeMin>
<smn-ext:CreationTimeMax>
<span class="bold"><strong>2010-07-09T10:21:58Z</strong></span>
</smn-ext:CreationTimeMax>
<smn-ext:TerminationTimeMin>
<span class="bold"><strong>2010-07-09T08:21:58Z</strong></span>
</smn-ext:TerminationTimeMin>
<smn-ext:TerminationTimeMax>
<span class="bold"><strong>2010-07-09T10:21:58Z</strong></span>
</smn-ext:TerminationTimeMax>
<wsnt:Filter>
<wsnt:MessageContent
<span class="bold"><strong>xmlns:smnex="http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousemessage"</strong></span>
Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116">
<span class="bold"><strong>boolean(//smnex:State[text()="on"])</strong></span>
</wsnt:MessageContent>
<wsnt:TopicExpression
<span class="bold"><strong>xmlns:tns="http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics"</strong></span>
Dialect=<span class="bold"><strong>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full"</strong></span>>
<span class="bold"><strong>tns://*</strong></span>
</wsnt:TopicExpression>
</wsnt:Filter>
</smn-ext:Filter>
</smn-ext:ListSubscriptions>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListSubscriptionsRequest.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListSubscriptions/smn-ext:Filter</em></span></p><p>The expanding element from
<span class="emphasis"><em>QCG-Notification</em></span> schema. It consists of a
number of optional filtering parameters.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListSubscriptions/smn-ext:Filter/SubscriptionID</em></span></p><p>A Subscription identifier. Thanks to this parameter
Subscriptions may be simply filtered on the basis of Subscription
ID. The value is at most 32 char long string.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListSubscriptions/smn-ext:Filter/smn-ext:ConsumerReference/wsa:Address</em></span></p><p>The parameter that enables filtering Subscriptions based on
addresses of Notification Consumers.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListSubscriptions/smn-ext:Filter/smn-ext:CreationTimeMin</em></span></p><p><span class="emphasis"><em>/smn-ext:ListSubscriptions/smn-ext:Filter/smn-ext:CreationTimeMax</em></span></p><p><span class="emphasis"><em>/smn-ext:ListSubscriptions/smn-ext:Filter/smn-ext:TerminationTimeMin
</em></span></p><p><span class="emphasis"><em>/smn-ext:ListSubscriptions/smn-ext:Filter/smn-ext:TerminationTimeMax</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>All these elements define filtering
parameters related to lifetime of a Subscription, respectively:
minimal creation time, maximal creation time, minimal termination
time and maximal termination time. The content of these elements
is a time expressed as a local time with a
timezone.</em></span></em></span></p></li><li><p><span class="emphasis"><em>/smn-ext:ListSubscriptions/smn-ext:Filter/wsnt:Filter</em></span></p><p>The same parameter as the parameter specified in the
Subscribe message. In this method it is utilized to filter
Subscriptions on the basis of notification filtering
parameters.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1700"></a>3.5.21. ListSubscriptionsResponse</h4></div></div></div><p>The message is sent in the response to ListSubscriptions. It
includes a list of information sets about available and propably
filtered Subscriptions.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/ListSubscriptionsResponse
</strong></span></wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:ListSubscriptionsResponse>
<smn-ext:Subscription>
<smn-ext:SubscriptionID>
<span class="bold"><strong>16807
</strong></span></smn-ext:SubscriptionID>
<smn-ext:ConsumerReference>
<wsa:Address>
<span class="bold"><strong>http://localhost:2233</strong></span>
</wsa:Address>
</smn-ext:ConsumerReference>
<smn-ext:CreationTime>
<span class="bold"><strong>2010-07-09T09:21:48Z
</strong></span></smn-ext:CreationTime>
<smn-ext:TerminationTime>
<span class="bold"><strong>2010-07-09T09:21:48Z</strong></span>
</smn-ext:TerminationTime>
<wsnt:Filter>
<wsnt:MessageContent
<span class="bold"><strong>xmlns:smnex="</strong></span><span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousemessage"</strong></span>
Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116">
<span class="bold"><strong>boolean(//smnex:State[text()="on"])</strong></span>
</wsnt:MessageContent>
<wsnt:TopicExpression <span class="bold"><strong>
xmlns:tns="http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics"</strong></span>
Dialect=<span class="bold"><strong>"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full"</strong></span>>
<span class="bold"><strong>tns://*
</strong></span></wsnt:TopicExpression>
</wsnt:Filter>
</smn-ext:Subscription>
<smn-ext:Subscription>
...
</smn-ext:Subscription>
...
</smn-ext:ListSubscriptionsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListSubscriptionsResponse.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListSubscriptionsResponse</em></span></p><p>This element contains a list of subscriptions received from
<span class="emphasis"><em>QCG-Notification</em></span> (propably also filtered on
the basis of the smn-ext:Filter element sent in
ListSubscriptions).</p></li><li><p><span class="emphasis"><em>//smn-ext:ListSubscriptionsResponse/smn-ext:Subscription</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>The element provides information about a
single Subscription.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//smn-ext:ListSubscriptionsResponse/smn-ext:Subscription/SubscriptionID</em></span></p><p>A Subscription identifier. The value is at most 32 char long
string.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListSubscriptionsResponse/smn-ext:Subscription/smn-ext:ConsumerReference/wsa:Address</em></span></p><p>An address of Notification Consumer declared in a
Subscription.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListSubscriptionsResponse/smn-ext:Subscription/smn-ext:CreationTime</em></span></p><p><span class="emphasis"><em>/smn-ext:ListSubscriptionsResponse/smn-ext:Subscription/smn-ext:TerminationTime</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>Creation time and termination time of a
Subscription. The content of these elements is a time expressed as
UTC time.</em></span></em></span></p></li><li><p><span class="emphasis"><em>/smn-ext:ListSubscriptionsResponse/smn-ext:Subscription/wsnt:Filter</em></span></p><p>The same parameter as the parameter specified in the
Subscribe message. It specifies Notification filtering parameters
of a Subscription.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1797"></a>3.5.22. ListPublishersRegistrations</h4></div></div></div><p>The next method from the the group of administrative methods. It
may be utilized to list Publishers Registrations. The method consists
of several filtering parameters.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/ListPublishersRegistrationsRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:ListPublishersRegistrations>
<smn-ext:Filter>
<smn-ext:PublisherRegistrationID>
<span class="bold"><strong>984943658</strong></span>
</smn-ext:PublisherRegistrationID>
<smn-ext:PublisherReference>
<wsa:Address>
<span class="bold"><strong>127.0.0.1</strong></span>
</wsa5:Address>
</smn-ext:PublisherReference>
<smn-ext:CreationTimeMin>
<span class="bold"><strong>2010-07-08T09:37:04Z</strong></span>
</smn-ext:CreationTimeMin>
<smn-ext:CreationTimeMax>
<span class="bold"><strong>2010-07-08T11:37:04Z</strong></span>
</smn-ext:CreationTimeMax>
<smn-ext:TerminationTimeMin>
<span class="bold"><strong>2010-07-08T09:37:04Z</strong></span>
</smn-ext:TerminationTimeMin>
<smn-ext:TerminationTimeMax>
<span class="bold"><strong>2010-07-08T11:37:04Z</strong></span>
</smn-ext:TerminationTimeMax>
</smn-ext:Filter>
</smn-ext:ListPublishersRegistrations>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListPublishersRegistrationsRequest.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPublishersRegistrations/smn-ext:Filter</em></span></p><p>The element from <span class="emphasis"><em>QCG-Notification</em></span>
schema. It consists of optional filtering parameters.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPublishersRegistrations/smn-ext:Filter/PublisherRegistrationID</em></span></p><p>A Publisher Registration identifier. This parameter enables
filtering of Publisher Registrations based on Publishers
Registrations ID. The value is at most 32 char long string.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListPublishersRegistrations/smn-ext:Filter/smn-ext:PublisherReference/wsa:Address</em></span></p><p>This element enables filtering based on an addresses of
Publishers. Depending on configuration, this address may be held
in the <span class="emphasis"><em>QCG-Notification</em></span> service as an address
sent in the From element of WSA Header of RegisterPublisher
message or an IP address of a Publisher.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListPublishersRegistrations/smn-ext:Filter/smn-ext:CreationTimeMin</em></span></p><p><span class="emphasis"><em>/smn-ext:ListPublishersRegistrations/smn-ext:Filter/smn-ext:CreationTimeMax</em></span></p><p><span class="emphasis"><em>/smn-ext:ListPublishersRegistrations/smn-ext:Filter/smn-ext:TerminationTimeMin
</em></span></p><p><span class="emphasis"><em>/smn-ext:ListPublishersRegistrations/smn-ext:Filter/smn-ext:TerminationTimeMax</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>The elements define filtering parameters
related to lifetime of a Publisher Registration, respectively:
minimal creation time, maximal creation time, minimal termination
time and maximal termination time. The content of these elements
is a time expressed as a local time with a
timezone.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1878"></a>3.5.23. ListPublisherRegistrationsResponse</h4></div></div></div><p>The response message to ListPublishersRegistrations. It includes
a list of information sets about Publishers Registrations.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/ListPublishersRegistrationsResponse
</strong></span></wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:ListPublishersRegistrationsResponse>
<smn-ext:PublisherRegistration>
<smn-ext:PublisherRegistrationID>
<span class="bold"><strong>16807
</strong></span></smn-ext:PublisherRegistrationID>
<smn-ext:PublisherReference>
<wsa:Address>
<span class="bold"><strong>http://localhost:2233</strong></span>
</wsa:Address>
</smn-ext:PublisherReference>
<smn-ext:CreationTime>
<span class="bold"><strong>2010-07-09T09:21:48Z
</strong></span></smn-ext:CreationTime>
<smn-ext:TerminationTime>
<span class="bold"><strong>2010-07-09T09:21:48Z</strong></span>
</smn-ext:TerminationTime>
</smn-ext:PublisherRegistration>
<smn-ext:PublisherRegistration>
...
</smn-ext:PublisherRegistration>
...
</smn-ext:ListPublishersRegistrationsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListPublishersRegistrationsResponse.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPublishersRegistrationsResponse</em></span></p><p>The element contains a list of Publishers Registrations
received from <span class="emphasis"><em>QCG-Notification</em></span> (propably also
filtered on the basis of the smn-ext:Filter element sent in a
ListPublishersRegistrations message).</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPublishersRegistrationsResponse/smn-ext:PublisherRegistration</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>The element provides information about a
single Publisher Registration.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//smn-ext:ListPublishersRegistrationsResponse/smn-ext:PublisherRegistration/PublisherRegistrationID</em></span></p><p>A Publisher Registration identifier. The value is at most 32
char long string.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListPublishersRegistrationsResponse/smn-ext:PublisherRegistration/smn-ext:PublisherReference/wsa:Address</em></span></p><p>An address of Publisher. It may be an address defined in a
From element of WSA Header of a RegisterPublisher message or an IP
address of a publisher.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListPublishersRegistrationsResponse/smn-ext:PublisherRegistration/smn-ext:CreationTime</em></span></p><p><span class="emphasis"><em>/smn-ext:ListPublishersRegistrationsResponse/smn-ext:PublisherRegistration/smn-ext:TerminationTime</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>Creation time and termination time of a
Publisher Registration. The content of these elements is a time
expressed as UTC time.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1952"></a>3.5.24. ListPullPoints</h4></div></div></div><p>The next administrative method. It enables listing of available
PullPoints. The method consists of several optional filtering
parameters.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/ListPullPointsRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:ListPullPoints>
<smn-ext:Filter>
<smn-ext:PullPointID>
<span class="bold"><strong>9342232</strong></span>
</smn-ext:PullPointID>
<smn-ext:PullPointReference>
<wsa:Address>
<span class="bold"><strong>http://localhost:2211?ppID=9342232</strong></span>
</wsa5:Address>
</smn-ext:PullPointReference>
<smn-ext:CreationTimeMin>
<span class="bold"><strong>2010-07-08T09:38:03Z</strong></span>
</smn-ext:CreationTimeMin>
<smn-ext:CreationTimeMax>
<span class="bold"><strong>2010-07-08T11:38:03Z</strong></span>
</smn-ext:CreationTimeMax>
<smn-ext:TerminationTimeMin>
<span class="bold"><strong>2010-07-08T09:38:03Z</strong></span>
</smn-ext:TerminationTimeMin>
<smn-ext:TerminationTimeMax>
<span class="bold"><strong>2010-07-08T11:38:03Z</strong></span>
</smn-ext:TerminationTimeMax>
</smn-ext:Filter>
</smn-ext:ListPullPoints>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListPullPointsRequest.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPullPoints/smn-ext:Filter</em></span></p><p>The element from <span class="emphasis"><em>QCG-Notification</em></span>
schema. It consists of optional filtering parameters.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPullPoints/smn-ext:Filter/smn-ext:PullPointID</em></span></p><p>A PullPoint identifier. This parameter enables filtering of
PullPoints based on PullPoint ID. The value is at most 32 char
long string.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListPullPoints/smn-ext:Filter/smn-ext:PullPointReference/wsa:Address</em></span></p><p>This element enables filtering based on an addresses of
PullPoint. The PullPoint address is assigned after creation of a
PullPoint in <span class="emphasis"><em>QCG-Notification</em></span> and returned
inside CreatePullPointResponse.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListPullPoints/smn-ext:Filter/smn-ext:CreationTimeMin</em></span></p><p><span class="emphasis"><em>/smn-ext:ListPullPoints/smn-ext:Filter/smn-ext:CreationTimeMax</em></span></p><p><span class="emphasis"><em>/smn-ext:ListPullPoints/smn-ext:Filter/smn-ext:TerminationTimeMin
</em></span></p><p><span class="emphasis"><em>/smn-ext:ListPullPoints/smn-ext:Filter/smn-ext:TerminationTimeMax</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>The elements define filtering parameters
related to PullPoint lifetime, respectively: minimal creation
time, maximal creation time, minimal termination time and maximal
termination time. The content of these elements is a time
expressed as a local time with a
timezone.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2033"></a>3.5.25. ListPullPointsResponse</h4></div></div></div><p>The response message to ListPullPoints. It includes a list of
information sets about filtered Pullpoints.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/ListPullPointsResponse
</strong></span></wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:ListPullPointsResponse>
<smn-ext:PullPoint>
<smn-ext:PullPointID>
<span class="bold"><strong>9342232
</strong></span></smn-ext:PullPointID>
<smn-ext:PullPointReference>
<wsa:Address>
<span class="bold"><strong>http://localhost:2211?ppID=9342232</strong></span>
</wsa:Address>
</smn-ext:PullPointReference>
<smn-ext:CreationTime>
<span class="bold"><strong>2010-07-09T09:31:28Z
</strong></span></smn-ext:CreationTime>
<smn-ext:TerminationTime>
<span class="bold"><strong>2010-07-09T09:31:28Z</strong></span>
</smn-ext:TerminationTime>
</smn-ext:PullPoint>
<smn-ext:PullPoint>
...
</smn-ext:PullPoint>
...
</smn-ext:ListPullPointsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListPullPointsResponse.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPullPointsResponse</em></span></p><p>The element contains a list of PullPoints received from
<span class="emphasis"><em>QCG-Notification</em></span> (propably also previously
filtered on the basis of the smn-ext:Filter element sent in a
ListPullPoints message).</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPullPointsResponse/smn-ext:PullPoint</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>The element provides particular
information about a single PullPoint.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//smn-ext:ListPullPointsResponse/smn-ext:PullPoint/PullPointID</em></span></p><p>A PullPoint identifier. The value is at most 32 char long
string.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListPullPointsResponse/smn-ext:PullPoint/smn-ext:PullPointReference/wsa:Address</em></span></p><p>An address of PullPoint. For particular PullPoint it is the
same adress as the address from a corresponding
CreatePullPointResponse message.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListPullPointsResponse/smn-ext:PullPoint/smn-ext:CreationTime</em></span></p><p><span class="emphasis"><em>/smn-ext:ListPullPointsResponse/smn-ext:PullPoint/smn-ext:TerminationTime</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>Creation time and termination time of a
PullPoint. The content of these elements is a time expressed as
UTC time.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2107"></a>3.5.26. ListTopicNamespaces</h4></div></div></div><p>An administrative method. It is designed to listing available
Topic Namespaces and Topics assigned to this namespaces.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/ListTopicNamespacesRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:ListTopicNamespaces>
<smn-ext:Filter>
<smn-ext:targetNamespace>
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics</strong></span>
</smn-ext:targetNamespace>
</smn-ext:Filter>
</smn-ext:ListTopicNamespaces>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListTopicNamespacesRequest.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListTopicNamespaces/smn-ext:Filter</em></span></p><p>The element from <span class="emphasis"><em>QCG-Notification</em></span>
schema. It consists of optional filtering parameters.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListPullPoints/smn-ext:Filter/smn-ext:targetNamespace</em></span></p><p>A targetNamespace of a TopicNamespace. This parameter
enables filtering of TopicNamespaces based on their
targetNamespace names.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2147"></a>3.5.27. ListTopicNamespacesResponse</h4></div></div></div><p>The response message to ListTopicNamespaces. The message
consists of information sets for each filtered TopicNamespace. A
single set includes targetNamespaces and a list of topics.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/ListPullPointsResponse
</strong></span></wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:ListTopicNamespacesResponse>
<smn-ext:TopicNamespace>
<smn-ext:targetNamespace>
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics</strong></span><span class="bold"><strong>
</strong></span></smn-ext:targetNamespace>
<smn-ext:Topic>
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics/House</strong></span>
</smn-ext:Topic>
<smn-ext:Topic>
...
<smn-ext:Topic>
...
</smn-ext:TopicNamespace>
<smn-ext:TopicNamespace>
...
</smn-ext:TopicNamespace>
...
</smn-ext:ListTopicNamespacesResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListTopicNamespacesResponse.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:ListTopicNamespacesResponse</em></span></p><p>The element contains a list of information about
TopicNamespaces received from
<span class="emphasis"><em>QCG-Notification</em></span> (optionally filtered on the
basis of the smn-ext:Filter element sent in a ListTopicNamespaces
message).</p></li><li><p><span class="emphasis"><em>//smn-ext:ListTopicNamespacesResponse/smn-ext:TopicNamespace</em></span></p><p><span class="emphasis"><em><span class="emphasis"><em>The element provides particular
information about a single
TopicNamespace.</em></span></em></span></p></li><li><p><span class="emphasis"><em>//smn-ext:ListTopicNamespacesResponse/smn-ext:TopicNamespace/smn-ext:targetNamespace</em></span></p><p>A targetNamespace identifying single TopicNamespace. The
value should be compliant with anyURI.</p></li><li><p><span class="emphasis"><em>/smn-ext:ListTopicNamespacesResponse/smn-ext:TopicNamespace/smn-ext:Topic</em></span></p><p>A list of topics belonging to a TopicNamespace. Each listed
topic is proceded by a targetNamespace so it is uniq.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2206"></a>3.5.28. AddTopicNamespace</h4></div></div></div><p>An administrative method. The method may be invoked to add a new
TopicNamespace to the <span class="emphasis"><em>IQCG-Notification</em></span>.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/AddTopicNamespaceRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:AddTopicNamespace>
<wstop:TopicNamespace
targetNamespace="<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics2</strong></span>">
<wstop:Topic final="false" name="<span class="bold"><strong>House</strong></span>">
<wstop:Topic ...>
...
</wstop:Topic>
...
</wstop:Topic>
...
</wstop:TopicNamespace>
</smn-ext:AddTopicNamespace>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/AddTopicNamespaceRequest.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:AddTopicNamespaces/wstop:TopicNamespace</em></span></p><p>The element defining a single Topic Namespace. It cames from
WS-Topics schema.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2243"></a>3.5.29. AddTopicNamespaceResponse</h4></div></div></div><p>A response message to a AddTopicNamespaceRequest. It is empty
and only confirms successfull addition of a TopicNamespace to the
<span class="emphasis"><em>QCG-Notification</em></span> service. </p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
PullPoint/AddTopicNamespaceResponse</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:AddTopicNamespaceResponse>
</smn-ext:AddTopicNamespaceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/AddTopicNamespaceResponse.</em></span><span class="emphasis"><em><span class="emphasis"><em>
If differ, a fault will be returned.</em></span></em></span></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2268"></a>3.5.30. RemoveTopicNamespace</h4></div></div></div><p>The next administrative method. It is used to remove a
TopicNamespace from the <span class="emphasis"><em>QCG-Notification</em></span> system.
Note that the removing may be only temporary (active to the restart of
the system) if the TopicNamespace file is protected by disabling write
permission.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/
QCGNotificationManager/RemoveTopicNamespaceRequest</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:RemoveTopicNamespace>
<smn-ext:targetNamespace>
<span class="bold"><strong>http://schemas.qoscosgrid.org/ntf/2011/04/sample/myhousetopics2/House</strong></span>
</smn-ext:targetNamespace>
</smn-ext:RemoveTopicNamespace>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/RemoveTopicNamespaceRequest.
<span class="emphasis"><em>If differ, a fault will be
returned</em></span></em></span>.</p></li><li><p><span class="emphasis"><em>//smn-ext:RemoveTopicNamespaces/smn-ext:targetNamespace</em></span></p><p>The targetNamespace name of a TopicNamespace dedicated to
remove - anyURI.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2302"></a>3.5.31. RemoveTopicNamespaceResponse</h4></div></div></div><p>A response message to a RemoveTopicNamespaceRequest. It is empty
and confirms the successfull deletion of a TopicNamespace.
</p><pre class="programlisting"><SOAP-ENV:Envelope ... >
<SOAP-ENV:Header>
<wsa:Action SOAP-ENV:mustUnderstand="1">
<span class="bold"><strong>http://docs.oasis-open.org/wsn/bw-2/
PullPoint/RemoveTopicNamespaceResponse</strong></span>
</wsa:Action>
...
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<smn-ext:RemoveTopicNamespaceResponse>
</smn-ext:RemoveTopicNamespaceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//SOAP-ENV:Header/wsa:Action</em></span></p><p>For this message should always be:
<span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/RemoveTopicNamespaceResponse.</em></span><span class="emphasis"><em><span class="emphasis"><em>
If differ, a fault will be returned.</em></span></em></span></p></li></ul></div></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e2324"></a>4. Administration Guide of
<span class="emphasis"><em>QCG-Notification</em></span></h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2329"></a>4.1. Prerequisites</h3></div></div></div><p>In order to build and install
<span class="emphasis"><em>QCG-Notification</em></span>, an administrator has to
appropriately configure operating system. There is some dependencies to
external software that should be satisfied.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2337"></a>4.1.1. QCG Core library</h4></div></div></div><p><span class="emphasis"><em>QCG-Notification</em></span> is based on the
<span class="emphasis"><em>QCG Core</em></span> library developed by the
<span class="emphasis"><em>QCG</em></span> team. QCG Core is a common utility library
providing set of basic modules used by other components within QCG
Project. For more information see QCG Core documentation.</p><p>The QCG Core library should be properly configured prior to the
preparation of <span class="emphasis"><em>QCG-Notification</em></span>.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2355"></a>4.2. Building</h3></div></div></div><p>Before you compile <span class="emphasis"><em>QCG-Notification</em></span>, you need
to run the configuration script first. It will try to check if all the
requirements are met and whether needed third party software is
available. Simply type the following command:</p><pre class="programlisting">$ ./configure</pre><p>There are several options that can be passed to the script. If you
type the --help parameter you will see all available options. These are
the most important ones:</p><div class="itemizedlist"><ul type="disc"><li><p>--prefix=DIR</p><p>specifies directory where
<span class="emphasis"><em>QCG-Notification</em></span> will be installed.</p><p>Default: /opt/qcg</p></li><li><p>--with-qcg-core=PFX</p><p>specifies where QCG Core library is installed.</p><p>Default: no default value. qcg-core-config script is used to
determine necessary paths</p></li><li><p>--with-client</p><p>Determine if the test client program should be build</p></li><li><p>--with-consumer</p><p>Determine if the test NotificationConsumer service should be
build</p></li><li><p>--with-addressing-handler</p><p>Determine if the test Web Services Addressing handler
service should be build</p></li></ul></div><p>After successful configuration step, compiling and
installing of <span class="emphasis"><em>QCG-Notification</em></span> should be a
straightforward process:</p><pre class="programlisting">$ make
$ make install</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The installation step should be done either as
<code class="filename">root</code> or the user that will execute
<span class="emphasis"><em>QCG-Notification</em></span> service, assuming he has
necessary privileges to do this.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2416"></a>4.3. Creating database for <span class="emphasis"><em>QCG-Notification</em></span> - the
PostgreSQL example</h3></div></div></div><p><span class="emphasis"><em>QCG-Notification</em></span> can be run in two basic
modes related to the database connection: without database or with
database. Although the first option is sufficient for simple scenarios,
it reduces the overall functionality of the
<span class="emphasis"><em>QCG-Notification</em></span> (e.g. disable PullPoints).
Therefore using the database is recomended and can be often
essential.</p><p>You will find more detailed description of administrative tasks in
PostgreSQL tutorial. However, the following basic steps are needed to
set up a database and appropriate tables for
<span class="emphasis"><em>QCG-Notification</em></span> assuming that you have already
setup a PostgreSQL database:</p><p>By default, the first database user created will also be named
<code class="filename">postgres</code>. In order to create a user for
<span class="emphasis"><em>QCG-Notification</em></span> usage, for instance
<code class="filename">qcg-ntf</code>, type the following:</p><pre class="programlisting">$ createuser -U postgres -W qcg-ntf -P</pre><p>If you use a password then remember to supply it in
<code class="filename">qcg-ntfd.xml</code> configuration file. Create a database,
for example <code class="filename">qcg-ntf</code>, by typing the following
command:</p><pre class="programlisting">$ createdb qcg-ntf</pre><p>and set up a table structure using the
<code class="filename">qcg-ntf-psql.sql</code> file from
<span class="emphasis"><em>QCG-Notification</em></span> distribution - it can be found in
<code class="filename">/opt/qcg/share/tools</code> directory by default.</p><pre class="programlisting">$ psql -d qcg-ntf -U qcg-ntf < qcg-ntf-psql.sql</pre><p>Eventually you need to add this database as the ODBC Data Source
Name. You can do this by editing system-wide configuration file (e.g.
<code class="filename">/etc/odbc.ini)</code> or <code class="filename">.odbc.ini</code> in
home directory of the user that will be used to start
<span class="emphasis"><em>QCG-Notification</em></span>.</p><p>Assuming that ODBC are installed in /usr/local/lib and the choosed
name for <span class="emphasis"><em>QCG-Notification</em></span> is
<code class="filename">qcg-ntf</code> the configuration file should looks
simmilar to the following:</p><pre class="programlisting">[qcg-ntf]
Description = QCG-Notification database
Driver = /usr/local/lib/libodbcpsql.so
Setup = /usr/local/lib/libodbcpsqlS.so
Database = qcg-ntf
Servername = localhost
Port = 5432
ReadOnly = No
Trace = 0
TraceFile = odbc.trace
Debug = 0
DebugFile = odbc.debug</pre><p>You can also try some GUI tools to set up and manage ODBC and
databases. Check out if the following tools are available on your
machine:</p><pre class="programlisting">$ DataManager</pre><pre class="programlisting">$ ODBCConfig</pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuration"></a>5. Configuration of <span class="emphasis"><em>QCG-Notification</em></span></h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2506"></a>5.1. Configuration File: <code class="filename">qcg-ntfd.xml</code></h3></div></div></div><pre class="programlisting"><sm:QCGCore
xmlns:sm="http://schemas.qoscosgrid.org/core/2011/04/config"
xmlns="http://schemas.qoscosgrid.org/ntf/2011/04/config"
xmlns:smn="http://schemas.qoscosgrid.org/ntf/2011/04/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Configuration>
<sm:ModuleManager>
<sm:Directory>/opt/qcg/lib/qcg-core/modules</sm:Directory>
<sm:Directory>/opt/qcg/lib/modules</sm:Directory>
</sm:ModuleManager>
<sm:Service xsi:type="ntfd" description="QCG-Notification">
<sm:Logger>
<sm:Filename>/opt/qcg/var/log/qcg-ntf/qcg-ntfd.log</sm:Filename>
<sm:Level>DEBUG</sm:Level>
</sm:Logger>
<sm:Transport>
<sm:Module xsi:type="sm:ecm_gsoap.service">
<sm:Host>localhost</sm:Host>
<sm:Port>2211</sm:Port>
<sm:UseWSA>true</sm:UseWSA>
</sm:Module>
<sm:Module xsi:type="smn:ntf-service-gsoap"/>
</sm:Transport>
<sm:Authentication>
<sm:Module xsi:type="sm:atc_transport_http"/>
</sm:Authentication>
<sm:Module xsi:type="smn:ntf-publisher-gsoap-anonymous">
<UseWSA>true</UseWSA>
<RecvTimeout>10</RecvTimeout>
<SendTimeout>10</SendTimeout>
</sm:Module>
<sm:Module xsi:type="smn:ntf-publisher-gsoap-ssl">
<UseWSA>true</UseWSA>
<RecvTimeout>10</RecvTimeout>
<SendTimeout>10</SendTimeout>
<X509CertKeyFile>/opt/qcg/etc/ssl/broker.pem</X509CertKeyFile>
<X509KeyPass>somepass</X509KeyPass>
<sm:TrustedCAFile>/opt/qcg/etc/ssl/certs/qcg-ntf/ca.pem</sm:TrustedCAFile>
</sm:Module>
<Core>
<NotificationsVar>
<TopicNsDir>/opt/qcg/etc/topicns</TopicNsDir>
<StrictCorrectnessCheckingEnabled>false</StrictCorrectnessCheckingEnabled>
<SubscriptionManager>
<ContentFilteringEnabled>true</ContentFilteringEnabled>
<SubscriptionPolicy>DUPLICATE</SubscriptionPolicy>
<DialectConsistencyRequired>true</DialectConsistencyRequired>
<SubscriptionPeriod>10</SubscriptionPeriod>
<RefreshRate>3600</RefreshRate>
</SubscriptionManager>
<PublisherManager>
<RegistrationRequired>false</RegistrationRequired>
<RegistrationPeriod>10</RegistrationPeriod>
<RefreshRate>3600</RefreshRate>
</PublisherManager>
<PullPointManager>
<PullPointsEnabled>true</PullPointsEnabled>
<PullPointSize>100</PullPointSize>
<PullPointPeriod>10</PullPointPeriod>
<RefreshRate>3600</RefreshRate>
</PullPointManager>
<Publishing>
<NotificationsBufferEnabled>true</NotificationsBufferEnabled>
<NotificationsBufferSize>1000</NotificationsBufferSize>
<NotificationsResendingRate>60</NotificationsResendingRate>
<MaxSendTries>5</MaxSendTries>
</Publishing>
</NotificationsVar>
<Database>
<DatabaseEnabled>true</DatabaseEnabled>
<DSN>qcg-ntf</DSN>
<User>qcg-ntf</User>
<Password>qcg-ntf</Password>
<CleanAtStart>false</CleanAtStart>
</Database>
</Core>
</sm:Service>
</Configuration>
</sm:QCGCore></pre><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>//sm:ModuleManager/sm:Directory
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Directories with modules that will be used in the
service.</p></li><li><p><span class="emphasis"><em>//sm:Service
<span class="emphasis"><em>[sm:QCGBaseServiceType]</em></span></em></span></p><p>Configuration of the services. It is possible to configure
many instances of the service in the one configuration file.</p></li><li><p><span class="emphasis"><em>//sm:Service/sm:Logger</em></span>
[sm:LoggerType]</p><p>Configuration of the logging.</p></li><li><p><span class="emphasis"><em>//sm:Service/sm:Logger/sm:FileName
<span class="emphasis"><em>[string]</em></span></em></span></p><p>A log file path.</p></li><li><p><span class="emphasis"><em>//sm:Service/sm:Logger/sm:Level
<span class="emphasis"><em>[enumeration]</em></span></em></span></p><p>DEBUG, INFO, NOTICE, WARNING, ERROR, CRIT, EMERG - filter less
important messages.</p></li><li><p><span class="emphasis"><em>//sm:Service/sm:Transport</em></span>
[sm:TransportType]</p><p>This element aggregates configuration of transport modules. At
least one module of type ecm* should by specified in this place. For
full list of supported ecm* modules see the QCG Core
documentation</p></li><li><p><span class="emphasis"><em>//sm:Service/sm:Transport/sm:Module[@type=sm:ecm_gsoap.service]</em></span></p><p>Basic configuration of the Web Service interface. The most
important configuration covers such aspects as host and port where
the service will be listening. The instruction of using other
options is located in QCG Core documentation.</p></li><li><p><span class="emphasis"><em>//sm:Service/sm:Transport/sm:Module[@type=smn:ntf-service-gsoap]</em></span></p><p>Define ntf-service-gsoap module as a default module for the
service. This option shouldn't be changed.</p></li><li><p><span class="emphasis"><em>//sm:Service/sm:Authentication</em></span>
[sm:AuthenticationType]</p><p>Configuration of authentication modules for the service. For
full list of supported authentication modules see the QCG Core
documentation (the most basic are: sm:atc_transport_http for
anonymous communication and sm:atc_transport_https for SSL based
communication).</p></li><li><p><span class="emphasis"><em>//sm:Service/sm:Module/[@type=smn:ntf-publisher*]</em></span></p><p>Initialization and configuration of the modules for the
Publisher side of <span class="emphasis"><em>QCG-Notification</em></span>. The
following modules are currently supported:</p><div class="itemizedlist"><ul type="circle"><li><p>smn:ntf-publisher-gsoap-anonymous for anonymous SOAP
communication;</p></li><li><p>smn:ntf-publisher-gsoap-ssl for SSL based SOAP
communication;</p></li><li><p>smn:ntf-publisher-xmpp for XMPP communication;</p></li><li><p>smn:ntf-publisher-smtp for SMTP communication;</p></li></ul></div><p>For details see the <a class="link" href="#moduleoptions" title="5.2. Module configuration">Section
5.2</a>.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar
</em></span>[smn:NotificationsVarType]</p><p>Various notification settings closely related to
QCG-Notification service implementation.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:TopicNsDir
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Location of the directory with files containing Topic
definitions.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:StrictCorrectnessCheckingEnabled</em></span>
[boolean]</p><p>true, false - determines a strict validation of incoming
messages; if true, it allows receiving detailed information about
faults but it causes greatest delays; if false, then faults
processing is minimal and delays are smaller. Default: false</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:SubscriptionManager/
</em></span>[smn:SubscriptionManagerType]</p><p>Settings related to Subscriptions management.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:SubscriptionManager/smn:ContentFilteringEnabled</em></span>
[boolean]</p><p>true, false - determines if a content filtering of
notification messages can be used; if true, Subscribers can specify
content filters in their Subscriptions, if false, it is dissallowed.
Default: true</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:SubscriptionManager/smn:SubscriptionPolicy</em></span>
[enumeration]</p><p>DUPLICATE, DELETE_OLD, RETURN_FAULT - parameter defines an
action which should be taken when a Subscriber wants to create a
Subscription with the same parameters as the parameters of already
existing Subscription. Default: <span class="bold"><strong>DELETE_OLD
(before the version 2.6.2 it was DUPLICATE)</strong></span></p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:SubscriptionManager/smn:DialectConsistencyRequired</em></span>
[boolean]</p><p>true, false - determines if a Subscription covers the Notify
messages with a different Topics Dialect than the Topic Dialect of
the Subscription; if true, the Subscription covers only Notify
messages with the same Dialect; if false, the Subscription covers
Notify messages with simpler Dialects (i.e. Subscription with Full
type of Dialect covers notifications sent with Concrete or Simple
type). Default: true</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:SubscriptionManager/smn:SubscriptionPeriod</em></span>
[integer]</p><p>A default time period for a Subscription to be valid; in
minutes; if negative the Subscription time checking will be
disabled. Default: <span class="bold"><strong>43200 (before the version
2.6.2 it was 10)</strong></span></p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:SubscriptionManager/smn:RefreshRate</em></span>
[integer]</p><p>A time period between successive Subscription Manager
refreshing events (events when outdated Subscriptions are deleted);
the time period is measured in seconds; if value is set to 0 or
negative then the periodical refreshing is disabled. Default:
3600</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PublisherManager/
</em></span>[smn:PublisherManagerType]</p><p>Settings related to Publishers management.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PublisherManager/smn:RegistrationRequired</em></span>
[boolean]</p><p>true, false - determines a requirement of Publishers
Registrations; if true, a Publisher has to register himself before
sending notifications; if false, it has not. Default: false</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PublisherManager/smn:RegistrationPeriod</em></span>
[integer]</p><p>A default time period for a Publisher Registration to be
valid; in minutes; if negative the Registration time checking will
be disabled. <span class="bold"><strong>Default: 43200 (before the
version 2.6.2 it was 10)</strong></span></p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PublisherManager/smn:RefreshRate</em></span>
[integer]</p><p>A time period between successive Publisher Manager refreshing
events (events when outdated Publishers are deleted); the time
period is measured in seconds; if value is set to 0 or negative then
the periodical refreshing is disabled. Default: 3600</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PullPointManager/
</em></span>[smn:PullPointManagerType]</p><p>Settings related to PullPoints management.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PullPointManager/smn:PullPointsEnabled
<span class="emphasis"><em>[boolean]</em></span></em></span></p><p>true, false - determines if PullPoints for pull style of
notifications can be used. Default: true</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PullPointManager/smn:PullPointSize</em></span>
[integer]</p><p>A maximal number of messages that can be buffered in a single
PullPoint; if negative then the number of messages is unbounded.
Default: <span class="bold"><strong>1000 (before the version 2.6.2 it was
100)</strong></span></p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PullPointManager/smn:PullPointPeriod</em></span>
[integer]</p><p>A default time period for a PullPoint to be valid; in minutes;
if negative the PullPoint time checking will be disabled. Default:
<span class="bold"><strong>43200 (before the version 2.6.2 it was
10)</strong></span></p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:PullPointManager/smn:RefreshRate</em></span>
[integer]</p><p>A time period between successive PullPoint Manager refreshing
events (events when outdated PullPoints are deleted); the time
period is measured in seconds; if value is set to 0 or negative then
the periodical refreshing is disabled. Default: 3600</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:Publishing/
</em></span>[smn:PublishingType]</p><p>A group of settings related to Publishing procedure.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:Publishing/smn:NotificationsBufferEnabled
</em></span>[boolean]</p><p>true, false - determines if Notifications Buffer should be
enabled; Notifications Buffer is used for resending Notifications if
those weren't sent successfully at the first attempt. Default:
true</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:Publishing/smn:NotificationsBufferSize
</em></span>[integer]</p><p>A maximal number of Notifications that can be buffered in
Notifications Buffer. Default: <span class="bold"><strong>10000 (before
the version 2.6.2 it was 1000)</strong></span></p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:Publishing/smn:NotificationsResendingRate
</em></span>[integer]</p><p>A time period between successive notification resending
procedures; in seconds; if 0 or negative then the resending will be
disabled. Default: 60</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:Publishing/smn:MaxSendTries</em></span>
[integer]</p><p>A maximal number of consecutive unsuccessfull tries of sending
notification; unsuccessful tries of sending notifications are
counted independently for every Subscription; a certain Subscription
will be delated if its counter become equal to
<span class="emphasis"><em>MaxSendTries</em></span>; if value is set to 0 or negative
then this option is disabled. Default: 5</p></li><li><p><span class="emphasis"><em>//smn:Core/Database/DatabaseEnabled
<span class="emphasis"><em>[boolean]</em></span></em></span></p><p>true, false - determines if a database should be enabled; in
the simplest configuration, <span class="emphasis"><em>QCG-Notification</em></span>
can be used also without a database connection, however many options
will be then unavailable. Default: true</p></li><li><p><span class="emphasis"><em>//smn:Core/Database/DSN
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Data Source Name of a database. Note, that you should use ODBC
DSN <span class="bold"><strong>not</strong></span> the database name.</p></li><li><p><span class="emphasis"><em>//smn:Core/Database/User
<span class="emphasis"><em>[string]</em></span></em></span></p><p>A database user name.</p></li><li><p><span class="emphasis"><em>//smn:Core/Database/Password
<span class="emphasis"><em>[string]</em></span></em></span></p><p>A password for a database user.</p></li><li><p><span class="emphasis"><em>//smn:Core/Database/CleanAtStart
<span class="emphasis"><em>[boolean]</em></span></em></span></p><p>true, false - determines whether all information stored in a
database should be cleaned at starting of the QCG-Notification
service.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="moduleoptions"></a>5.2. Module configuration</h3></div></div></div><p>Modules are located in the PREFIX/*/lib/modules directories and
are loaded during the<span class="emphasis"><em> QCG-Notification</em></span> run time.
Module definitions are specified in appropriate sections of the
configuration file.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2838"></a>5.2.1. Publisher modules</h4></div></div></div><p>As it was discussed in the previous sections, in a typical
brokered notification scenario there are two types of communication
and notification channels that need to be setup. The first one is a
communication channel between Subscriber/Publisher clients and
<span class="emphasis"><em>QCG-Notification. </em></span>This type of communication is
currently completely based on QCG Core library.</p><p>The second type is an outgoing communication between
<span class="emphasis"><em>QCG-Notification</em></span> and NotificationConsumers and it
is particular for <span class="emphasis"><em>QCG-Notification</em></span>. In this
situation <span class="emphasis"><em>QCG-Notification</em></span> plays a role of a
Notification Publisher. At this time, supported modules for this
channel utilize a Web Service interface, XMPP interface and SMTP
interface.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="bold"><strong>Publisher Anonymous WS
transport</strong></span></p><p><span class="emphasis"><em><span class="emphasis"><em>This type of transport is recommended
only for internal, secure network environments or
testing.</em></span></em></span></p><pre class="programlisting"><Module xsi:type="smn:ntf-publisher-gsoap-anonymous">
<smn:UseWSA>true</smn:UseWSA>
<smn:RecvTimeout>10</smn:RecvTimeout>
<smn:SendTimeout>10</smn:SendTimeout>
<smn:NotifyTopicConversion>WSN</smn:NotifyTopicConversion>
</Module></pre></li><li><p><span class="bold"><strong>Publisher SSL WS transport and
authentication</strong></span></p><pre class="programlisting"><Module xsi:type="smn:ntf-publisher-gsoap-ssl">
<smn:UseWSA>true</smn:UseWSA>
<smn:RecvTimeout>10</smn:RecvTimeout>
<smn:SendTimeout>10</smn:SendTimeout>
<smn:X509CertKeyFile>/opt/qcg/etc/ssl/qcg-ntf/qcg-ntfd.pem</smn:X509CertKeyFile>
<smn:X509KeyPass>qcgpass</smn:X509KeyPass>
<smn:TrustedCAFile>/opt/qcg/etc/ssl/certs/qcg-ntf/ca.pem</smn:TrustedCAFile>
<smn:TrustedCAPath>/opt/qcg/etc/ssl/certs/qcg-ntf/ca.pem</smn:TrustedCAPath>
<smn:NotifyTopicConversion>WSN</smn:NotifyTopicConversion>
</Module></pre><div class="itemizedlist"><ul type="circle"><li><p dir="lro"><span class="emphasis"><em>//smn:UseWSA
<span class="emphasis"><em>[bolean]</em></span></em></span></p><p>Determine if WS-Addressing should be used.</p></li><li><p dir="lro"><span class="emphasis"><em>//smn:RecvTimeout
<span class="emphasis"><em>[positiveInteger]</em></span></em></span></p><p>The timeout in seconds for stall on the recv function.
If negative, time is measured in microseconds.</p></li><li><p dir="lro"><span class="emphasis"><em>//smn:SendTimeout
<span class="emphasis"><em>[positiveInteger]</em></span></em></span></p><p>The timeout in seconds for stall on the send function.
If negative, time is measured in microseconds.</p></li><li><p dir="lro"><span class="emphasis"><em>//smn:X509CertKeyFile
<span class="emphasis"><em>[string]</em></span></em></span></p><p>A path to the file with both X509 certificate and
private key. Mandatory argument.</p></li><li><p><span class="emphasis"><em>//smn:X509KeyPass
<span class="emphasis"><em>[string]</em></span></em></span></p><p>An optional password to X509 private key.</p></li><li><p><span class="emphasis"><em>//smn:TrutedCAFile
<span class="emphasis"><em>[string]</em></span></em></span></p><p>A path to the file with trusted CAs certificates.
Either TrustedCAFile or TrustedCAPath must be
specified.</p></li><li><p><span class="emphasis"><em>//smn:TrutedCAPath
<span class="emphasis"><em>[string]</em></span></em></span></p><p>A path to the directory with the files with trusted
CAs certificates. Either TrustedCAFile or TrustedCAPath must
be specified.</p></li><li><p><span class="emphasis"><em>//smn:NotifyTopicConversion
<span class="emphasis"><em>[enumeration]</em></span></em></span></p><p>WSN, WSN_WITH_ADDITIONAL_NS, INLINE, LACK - defines a
type of conversion that will be applied (if needed) to the
Topic element of Notify messages.</p></li></ul></div></li><li><p><span class="bold"><strong>Publisher XMPP
transport</strong></span></p><p><span class="bold"><strong><span class="emphasis"><em>The XMPP publisher module
can send two versions of notifications via XMPP. The first version
are notifications expressed as SOAP messages, the second are
notifications sent as a typical "chat" messages. The second
version of notifications is selected automatically when the XSLT
document was provided in Subscribe message: the XSLT document will
be used to transform the message to the apropriate
form.</em></span></strong></span></p><pre class="programlisting"><sm:Module xsi:type="smn:ntf-publisher-xmpp">
<smn:Jid>qcgaccount@xmppserver.qcg.com/qcg-resource</smn:Jid>
<smn:Password>qcgpass</smn:Password>
<smn:Server>xmppserver.qcg.com</smn:Server>
<smn:Port>5222</smn:Port>
<smn:Encryption>TLS</smn:Encryption>
<smn:CertFingerprint>00112233445566778899AABBCCDDEE</smn:CertFingerprint>
<smn:NotifyTopicConversion>WSN</smn:NotifyTopicConversion>
</sm:Module></pre><div class="itemizedlist"><ul type="circle"><li><p><span class="emphasis"><em>//smn:Jid
<span class="emphasis"><em>[string]</em></span></em></span></p><p>JID of the XMPP account consisting of account name,
domain and resource.</p></li><li><p dir="lro"><span class="emphasis"><em>//smn:Password
<span class="emphasis"><em>[string]</em></span></em></span></p><p>The secret key for the XMPP account.</p></li><li><p dir="lro"><span class="emphasis"><em>//smn:Server
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Hostname of the XMPP server on which the XMPP account
is set up. Optional element, if not set, the connection will
be established basing on Jid.</p></li><li><p dir="lro"><span class="emphasis"><em>//smn<span class="emphasis"><em>:Port
[positiveInteger]</em></span></em></span></p><p>Port number of the XMPP server. Default is
5222.</p></li><li><p><span class="emphasis"><em>//smn:Encryption
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Encryption to use. By default it's "none". Use "TLS"
for STARTTLS connection encryption. Use "SSL" for old-style
SSL encryption (typically port 5223).</p></li><li><p><span class="emphasis"><em>//smn:CertFingerprint
<span class="emphasis"><em>[string]</em></span></em></span></p><p>MD5 fingerprint of the encryption certificate used by
the XMPP server. Upon mismatch, the connection will fail.
Use empty string to accept any certificate.</p></li><li><p><span class="emphasis"><em>//smn:NotifyTopicConversion
<span class="emphasis"><em>[enumeration]</em></span></em></span></p><p>WSN, WSN_WITH_ADDITIONAL_NS, INLINE, LACK - defines a
type of conversion that will be applied (only if needed) to
the Topic element of Notify messages. Default is WSN.</p></li></ul></div></li><li><p><span class="bold"><strong>Publisher SMTP
transport</strong></span></p><p><span class="bold"><strong><span class="emphasis"><em>Simillarly to the XMPP
publisher module, the SMTP module utilizes the XSLT documents to
transform the content of the notification to the human-friendly
form. </em></span></strong></span></p><pre class="programlisting"><sm:Module xsi:type="smn:ntf-publisher-smtp">
<smn:ServerURL>smtp://localhost:25</smn:ServerURL>
<smn:User>someuser</smn:User>
<smn:Password>somepassword</smn:Password>
<smn:Encryption>TLS</smn:Encryption>
<smn:TrustedCAFile>somefile</smn:TrustedCAFile>
<smn:TrustedCAPath>somedir</smn:TrustedCAPath>
<smn:From>some@from</smn:From>
<smn:Subject>Some subject</smn:Subject>
<smn:Trace>false</smn:Trace>
<smn:SendTimeout>10</smn:SendTimeout>
</sm:Module> </pre><div class="itemizedlist"><ul type="circle"><li><p dir="lro"><span class="emphasis"><em>//smn:Server
<span class="emphasis"><em>[string]</em></span></em></span></p><p>URL of the SMTP server. Mandatory element.</p></li><li><p dir="lro"><span class="emphasis"><em>//smn:User
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Name of the account on SMTP server. Optional
element.</p></li><li><p dir="lro"><span class="emphasis"><em>//smn:Password
<span class="emphasis"><em>[string]</em></span></em></span></p><p>The secret key for the account. Optional
element.</p></li><li><p><span class="emphasis"><em>//smn:Encryption
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Used to enable encryption. The only supported type of
encryption is "TLS". Optional element, if not present,
encryption will be switched off.</p></li><li><p><span class="emphasis"><em>//smn:TrutedCAFile
<span class="emphasis"><em>[string]</em></span></em></span></p><p>A path to the file with trusted CAs certificates.
Optional element.</p></li><li><p><span class="emphasis"><em>//smn:TrutedCAPath
<span class="emphasis"><em>[string]</em></span></em></span></p><p>A path to the directory with the files with trusted
CAs certificates. Optional element.</p></li><li><p><span class="emphasis"><em>//smn:From
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Defines a name that will be placed in From field of
the e-mail message. Optional element. Default is
"QCG-Notification".</p></li><li><p><span class="emphasis"><em>//smn:Subject
<span class="emphasis"><em>[string]</em></span></em></span></p><p>Defines a Subject of the e-mail message. Optional
element. Default is "QCG-Notification message".</p></li><li><p><span class="emphasis"><em>//smn:Trace
<span class="emphasis"><em>[boolean]</em></span></em></span></p><p>Switches trace logging. Optional element, default is
false.</p></li><li><p><span class="emphasis"><em>//smn:SendTimeout
<span class="emphasis"><em>[int]</em></span></em></span></p><p>The timeout in seconds for stall on the send function.
Optional element, default is 10.</p></li></ul></div></li></ul></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3097"></a>5.3. WS-Topics management</h3></div></div></div><p>In the current release, a topics management in
<span class="emphasis"><em>QCG-Notification</em></span> is relatively simple. The first
step is a preparation of an XML document with a Topic Namespace
definition. This step can be done by one of the peers cooperating with
<span class="emphasis"><em>QCG-Notification</em></span>. Then the document should be
delivered to the computer where <span class="emphasis"><em>QCG-Notification</em></span> is
installed. It can be done in two ways: the document may be copied
manually by QCG-Notification administrator to TopicNamespaces directory
in prior to <span class="emphasis"><em>a QCG-Notification</em></span> startup or it can be
send through the <span class="emphasis"><em>QCG-Notification</em></span> interface when
<span class="emphasis"><em>QCG-Notification</em></span> is already runing. In the last
case, the TopicNamespaces are stored also in a files in TopicNamespace
directory so they can be automatically loaded after restart of the
service. The TopicNamespaces loaded from files may be protected from
unwanted removal by unseting write permissions for a certain
file.</p><p>An XML document describing a sample topic namespace is presented
in the <a class="link" href="#ted" title="3.3. Topics, TopicExpressions and Dialects">Section 3.3</a>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3125"></a>5.4. Starting <span class="emphasis"><em>QCG-Notification</em></span></h3></div></div></div><p>To start <span class="emphasis"><em>QCG-Notification</em></span> as a daemon
type:</p><pre class="programlisting">$ ./qcg-ntfd</pre><p>If you start <span class="emphasis"><em>QCG-Notification</em></span> with parameter
-h you will get an optional parameters list:</p><pre class="programlisting">$ ./qcg-ntfd -h
usage: ./qcg-ntfd [-d] [-z config_file]
-d do not detach and log to stderr
-D do not detach and force logging at debug level to stderr
-z config_file configuration file, default is /opt/qcg/etc/qcg-ntfd.xml
-v print version information
-h print this help</pre><p>Once you run
<span class="emphasis"><em>QCG-Notification</em></span> as a daemon, a log file is
created. Using various log levels, you can log less or more
details.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3148"></a>5.5. Stopping <span class="emphasis"><em>QCG-Notification</em></span></h3></div></div></div><p>At the moment, shutdown is performed simply by sending
<code class="filename">SIGINT</code> signal to the service, e.g.:</p><pre class="programlisting">$ kill -SIGINT `pidof qcg-ntfd`</pre></div></div></div>