Changes between Version 15 and Version 16 of technicalGuideAndManual
- Timestamp:
- 07/20/12 14:50:39 (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
technicalGuideAndManual
v15 v16 1 1 {{{ 2 #!html 3 <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 4 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 5 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 6 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 7 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 2 <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 3 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 4 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 5 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 6 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 8 7 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 9 8 OASIS standard)</a><a class="link" href="#WS-Notification"></a> for message push/pull-style notification, … … 32 31 standardization body, either implement only partially notification 33 32 standards or do not meet high performance requirements. Therefore, our 34 main motivation was to design and implement <span class="emphasis"><em>QCG35 Notification</em></span> to offer more advanced push/pull33 main motivation was to design and implement 34 <span class="emphasis"><em>QCG-Notification</em></span> to offer more advanced push/pull 36 35 (synchronous/asynchronous) standard notification routines for QCG 37 36 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 38 cases, scenarios and specify software requirements for <span class="emphasis"><em>QCG39 Notification</em></span>, its programming application interface,40 functional units and the integration with both internal and external41 modules.</p><p>The document is aimed at software architects and programmers who37 cases, scenarios and specify software requirements for 38 <span class="emphasis"><em>QCG-Notification</em></span>, its programming application 39 interface, functional units and the integration with both internal and 40 external modules.</p><p>The document is aimed at software architects and programmers who 42 41 will be developing software components based on this document. Many 43 requirements and <span class="emphasis"><em>QCG 42 requirements and <span class="emphasis"><em>QCG-Notification </em></span>concept itself 44 43 might be interesting for developers and end users of any Web 45 44 Services.</p><p>This document assumes that the reader has at least a basic 46 45 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 47 46 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 48 <span class="emphasis"><em>QCG 47 <span class="emphasis"><em>QCG-Notification</em></span> and/or interaction without providing 49 48 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 50 49 interaction between distributed objects. WS-Notification is a family … … 92 91 NotificationBroker and defines more advanced notification scenarios. 93 92 The figure below shows an example scenario and notification message 94 flow where NotificationBroker is present.</p><div class="figure"><a name="d0e198"></a><p class="title"><b>Figure 2. Web Services BrokeredNotification entities - QCG95 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 - QCGNotification entities"></div></div></div><p><br class="figure-break">Note, that there are some important enlargements and93 flow where NotificationBroker is present.</p><div class="figure"><a name="d0e198"></a><p class="title"><b>Figure 2. Web Services BrokeredNotification entities - 94 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 96 95 modifications in the WS-BrokeredNotificatison terminology. Below the 97 96 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 … … 145 144 TopicExpression. The specification defines four Dialects: 146 145 <span class="emphasis"><em>Simple</em></span>, <span class="emphasis"><em>Concrete</em></span>, 147 <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>QCGNotification</em></span> is a reference146 <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 148 147 implementation of WS-BaseNotification, WS-BrokeredNotification and 149 148 WS-Topics OASIS industry standards. As a consistent and highly … … 153 152 scale Web Service based systems, SOA environments and it acts as a 154 153 core component in QCG Service Bus. To meet security requirements, 155 <span class="emphasis"><em>QCG Notification</em></span> (or <span class="emphasis"><em>QCGNotification154 <span class="emphasis"><em>QCG-Notification</em></span> (or <span class="emphasis"><em>QCG-Notification 156 155 Provider</em></span>) exposes well defined Web Service and programming 157 156 interfaces over QCG security mechanisms for dynamic notification, … … 159 158 the previous sections it can be used and integrated with various 160 159 external third party Web Services playing roles of a notification 161 Publisher, Subscriber or Consumer.</p><p>A flexible plug-in architecture of <span class="emphasis"><em>QCG 160 Publisher, Subscriber or Consumer.</p><p>A flexible plug-in architecture of <span class="emphasis"><em>QCG-Notification 162 161 </em></span>enables using different communication protocols for 163 162 messages transmission. Currently messages can be transported between 164 <span class="emphasis"><em>QCG 163 <span class="emphasis"><em>QCG-Notification</em></span> and third party entities not 165 164 only through HTTP protocol, but also through XMPP (jabber) as well as 166 165 SMTP (e-mail) protocols. It is possible to variously mix channels of … … 168 167 WS-Client as a HTTP message can be distributed over XMPP to jabber 169 168 consumers.</p><p>Below we present a set of Web Service notification use cases 170 demonstrating capabilities offered by <span class="emphasis"><em>QCG171 Notification</em></span>.</p><div class="figure"><a name="notificationConsumers"></a><p class="title"><b>Figure 4. Notification with multiple Publishers and multiple169 demonstrating capabilities offered by 170 <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 172 171 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 173 one of the basic notification flows supported by <span class="emphasis"><em>QCG 174 Notification</em></span>. Depending on records, Notifications produced 175 by a Publisher and received by the <span class="emphasis"><em>QCG 176 Notification</em></span> may or may not be dispatched to concrete 177 NotificationConsumer. Note, that Subscriptions represent relationships 178 between Topics and NotificationConsumers in this scenario. Before any 179 Notification is delivered to a NotificationConsumer, a Subscriber has 180 to send first a SubscribeRequest message to <span class="emphasis"><em>QCG 181 Notification</em></span> in which all parameters of a Subscription are 182 specified. Main parameters of a SubscribeRequest message are 183 ConsumerReference and TopicExpression defined according to the 184 specific Dialect type. On the other hand, before a Publisher starts 185 sending Notifications it may be obligated to register himself in 186 <span class="emphasis"><em>QCG Notification</em></span>. The diagram below shows a 172 one of the basic notification flows supported by 173 <span class="emphasis"><em>QCG-Notification</em></span>. Depending on records, 174 Notifications produced by a Publisher and received by the 175 <span class="emphasis"><em>QCG-Notification</em></span> may or may not be dispatched to 176 concrete NotificationConsumer. Note, that Subscriptions represent 177 relationships between Topics and NotificationConsumers in this 178 scenario. Before any Notification is delivered to a 179 NotificationConsumer, a Subscriber has to send first a 180 SubscribeRequest message to <span class="emphasis"><em>QCG-Notification</em></span> in 181 which all parameters of a Subscription are specified. Main parameters 182 of a SubscribeRequest message are ConsumerReference and 183 TopicExpression defined according to the specific Dialect type. On the 184 other hand, before a Publisher starts sending Notifications it may be 185 obligated to register himself in 186 <span class="emphasis"><em>QCG-Notification</em></span>. The diagram below shows a 187 187 sequence of events in order to initialize an asynchronous process of 188 188 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 189 189 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 190 190 NotificationConsumer location and TopicExpression parameters to 191 <span class="emphasis"><em>QCG Notification</em></span>.</p></li><li><p><span class="emphasis"><em>QCGNotification</em></span> prepares appropriate192 records for a Subscription.</p></li><li><p>A Publisher register himself in <span class="emphasis"><em>QCG193 Notification</em></span> by sending the RegisterPublisher194 message.</p></li><li><p>A registered Publisher sends the Notify message on a195 specified Topic to a <span class="emphasis"><em>QCG 196 </em></span>service.</p></li><li><p><span class="emphasis"><em>QCG 191 <span class="emphasis"><em>QCG-Notification</em></span>.</p></li><li><p><span class="emphasis"><em>QCG-Notification</em></span> prepares appropriate 192 records for a Subscription.</p></li><li><p>A Publisher register himself in 193 <span class="emphasis"><em>QCG-Notification</em></span> by sending the 194 RegisterPublisher message.</p></li><li><p>A registered Publisher sends the Notify message on a 195 specified Topic to a <span class="emphasis"><em>QCG-Notification 196 </em></span>service.</p></li><li><p><span class="emphasis"><em>QCG-Notification</em></span> checks if there are 197 197 NotificationConsumers subscribed on a specified Topic. If so, 198 <span class="emphasis"><em>QCG 198 <span class="emphasis"><em>QCG-Notification</em></span> sends asynchronous 199 199 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 200 200 high-level use cases. The following list is probably sufficient for this … … 221 221 clearly ordered message layout and connections among functional units. 222 222 The actors and messages in the sequence diagrams are more properly roles 223 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 QCGNotification 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 and223 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 224 224 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 225 225 prefixes are used in example SOAP messages presented in the further 226 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>QCG227 Notification</em></span> is presented independently for a Publisher,228 Subscriber and NotificationConsumer. Although a conceptual style of229 interaction is described here in details, technical particularities of230 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 Publisher226 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 227 <span class="emphasis"><em>QCG-Notification</em></span> is presented independently for a 228 Publisher, Subscriber and NotificationConsumer. Although a conceptual 229 style of interaction is described here in details, technical 230 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 231 231 has to be registered before it starts sending Notifications. In this 232 232 situation, a Publisher sends the RegisterPublisherRequest message to 233 <span class="emphasis"><em>QCG 233 <span class="emphasis"><em>QCG-Notification</em></span>. If everything goes well it 234 234 receives the RegisterPublisherResponse message with a session ID. From 235 235 this time a Publisher is entitled for sending Notify messages - the … … 240 240 should unregister himself by sending DestroyRegistration. This message 241 241 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 242 SubscribeRequest message to <span class="emphasis"><em>QCG 242 SubscribeRequest message to <span class="emphasis"><em>QCG-Notification</em></span>. 243 243 This message should contain an address of NotificationConsumer and a 244 244 TopicExpression that specifies a Topic or a set of Topics on which … … 248 248 From the version 2.5.0 of the system, the Subscriber may specify XSLT 249 249 document that will be used to transform message content by certain 250 publishing modules. After creation of a Subscription <span class="emphasis"><em>QCG251 Notification</em></span> sends the SubscribeResponse message with a252 created Subscription ID. This ID should be attached to the253 UnsubscribeRequest message when a Subscription is not wanted and the254 Renew message when a Subscription should be refreshed. A Subscriber is255 allowed to create many equal Subscriptions.</p><p>If a scenario requires pull-style of notifications, a Subscriber250 publishing modules. After creation of a Subscription 251 <span class="emphasis"><em>QCG-Notification</em></span> sends the SubscribeResponse 252 message with a created Subscription ID. This ID should be attached to 253 the UnsubscribeRequest message when a Subscription is not wanted and 254 the Renew message when a Subscription should be refreshed. A 255 Subscriber is allowed to create many equal Subscriptions.</p><p>If a scenario requires pull-style of notifications, a Subscriber 256 256 can create a set of PullPoints. In a such situation, it has to invoke 257 the CreatePullPoint method offered by <span class="emphasis"><em>QCG 257 the CreatePullPoint method offered by <span class="emphasis"><em>QCG-Notification. 258 258 <span class="emphasis"><em>The response parameter of this method will be an address to 259 259 the newly created <span class="emphasis"><em>PullPoint resource (Subscribers can assign … … 263 263 </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 264 264 receiving of Notify messages. A NotificationConsumer can implement an 265 interface for receiving Notify messages sending by <span class="emphasis"><em>QCG266 Notification</em></span> or can be a client of a PullPoint. In the267 second case, a NotificationConsumer can invoke GetMessages method268 offered by a certain PullPoint. Messages buffered in the PullPoint269 will be removed from the buffer and delivered in GetMessagesResponse270 to the consumer.</p><p>On the other hand, when a NotificationConsumer wants to receive265 interface for receiving Notify messages sending by 266 <span class="emphasis"><em>QCG-Notification</em></span> or can be a client of a 267 PullPoint. In the second case, a NotificationConsumer can invoke 268 GetMessages method offered by a certain PullPoint. Messages buffered 269 in the PullPoint will be removed from the buffer and delivered in 270 GetMessagesResponse to the consumer.</p><p>On the other hand, when a NotificationConsumer wants to receive 271 271 the last Notification message sent on a specific Topic, it can do this 272 by sending GetCurrentMessageRequest to <span class="emphasis"><em>QCG273 Notification</em></span>. Requested Notification will be supplied in274 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>QCGNotification</em></span>272 by sending GetCurrentMessageRequest to 273 <span class="emphasis"><em>QCG-Notification</em></span>. Requested Notification will be 274 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> 275 275 service, there should be defined Topic Namespaces in a system. Topic 276 276 Namespaces should be created (usually by Publishers) and delivered to 277 a<span class="emphasis"><em> QCG 277 a<span class="emphasis"><em> QCG-Notification</em></span> administrator in a form of XML 278 278 documents. A following record presents a sample Topic Namespace 279 279 identified by … … 297 297 </wstop:Topic> 298 298 </wstop:Topic> 299 </wstop:TopicNamespace></pre><p><span class="emphasis"><em>QCG 299 </wstop:TopicNamespace></pre><p><span class="emphasis"><em>QCG-Notification </em></span>supports three types of 300 300 dialects: <span class="emphasis"><em>Simple</em></span>, <span class="emphasis"><em>Concrete</em></span> and 301 301 <span class="emphasis"><em>Full</em></span>. If a message refer to Topics, it has to … … 309 309 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 310 310 lower Levels of functionality so an architect of system is obligated to 311 introduce some extensions and clarifications. In the <span class="emphasis"><em>QCG312 Notification </em></span>scenario there are several messages that have to313 be expanded with additional information written as embedded XML. Some of314 these extensions are related with other Oasis standards but some are315 quite new. Technical details are described in the successive316 su bsections.</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>QCGNotification </em></span>remote peers have to use311 introduce some extensions and clarifications. In the 312 <span class="emphasis"><em>QCG-Notification </em></span>scenario there are several 313 messages that have to be expanded with additional information written as 314 embedded XML. Some of these extensions are related with other Oasis 315 standards but some are quite new. Technical details are described in the 316 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 317 317 an appropriate TopicExpression XML element. The schema of this element 318 318 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"> … … 323 323 with the WSDL document, a @Dialect from the Topic element is 324 324 significant. It is not necessary but preferred to attach the same 325 @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>QCGNotification</em></span> introduces some extensions325 @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 326 326 to WSDL as well as schema documents related to the Oasis standard. The 327 327 following schema defines these extensions. The first three elements … … 375 375 </xsd:simpleType> 376 376 377 <!-- ================= QCG 377 <!-- ================= QCG-Notification manager : ListPullPoints ================== --> 378 378 379 379 <xsd:complexType name="ListSubscriptionsFilter"> … … 435 435 </xsd:element> 436 436 437 <!-- ================= QCG 437 <!-- ================= QCG-Notification manager : ListPublishersRegistrations ================== --> 438 438 439 439 <xsd:complexType name="ListPublishersRegistrationsFilter"> … … 494 494 </xsd:element> 495 495 496 <!-- ================= QCG 496 <!-- ================= QCG-Notification manager : ListPullPoints ================== --> 497 497 498 498 <xsd:complexType name="ListPullPointsFilter"> … … 554 554 </xsd:element> 555 555 556 <!-- ================= QCG 556 <!-- ================= QCG-Notification manager : ListTopicNamespaces ================== --> 557 557 558 558 <xsd:complexType name="ListTopicNamespacesFilter"> … … 596 596 </xsd:element> 597 597 598 <!-- ================= QCG 598 <!-- ================= QCG-Notification manager : AddTopicNamespace ================== --> 599 599 600 600 <xsd:element name="AddTopicNamespace"> … … 617 617 </xsd:element> 618 618 619 <!-- ================= QCG 619 <!-- ================= QCG-Notification manager : RemoveTopicNamespace ================== --> 620 620 621 621 <xsd:element name="RemoveTopicNamespace"> … … 640 640 641 641 </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 642 used in the <span class="emphasis"><em>QCG 642 used in the <span class="emphasis"><em>QCG-Notification</em></span> scenario as well as 643 643 introduce how to construct and interpret these messages. The majority of 644 them is two-way style and initiated by <span class="emphasis"><em>QCG645 Notification</em></span> clients. Exception is the Notify message that is646 one-way style. In the first phase it is transported from a Publisher to647 <span class="emphasis"><em>QCG Notification</em></span> and in the second it is648 transported from <span class="emphasis"><em>QCG Notification</em></span> to subscribed649 NotificationConsumers.</p><p>All supported by <span class="emphasis"><em>QCGNotification</em></span> message644 them is two-way style and initiated by 645 <span class="emphasis"><em>QCG-Notification</em></span> clients. Exception is the Notify 646 message that is one-way style. In the first phase it is transported from 647 a Publisher to <span class="emphasis"><em>QCG-Notification</em></span> and in the second 648 it is transported from <span class="emphasis"><em>QCG-Notification</em></span> to 649 subscribed NotificationConsumers.</p><p>All supported by <span class="emphasis"><em>QCG-Notification</em></span> message 650 650 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, 651 651 however there are also extensions;</p></li><li><p>For all messages it is important to set a correct 652 652 WS-Addressing Action property which should be the same as SOAP 653 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>QCG654 Notification</em></span>. The message should contain information about655 a NotificationConsumer and an expression defining Topic or Topics that656 the Subscription will affect. If a message processing is successful, a657 Subscription is created. It is possible to create many equal658 Subscriptions by sending numerously the same SubscribeRequest659 message.</p><pre class="programlisting">SOAP-ENV:Envelope ... >653 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 654 <span class="emphasis"><em>QCG-Notification</em></span>. The message should contain 655 information about a NotificationConsumer and an expression defining 656 Topic or Topics that the Subscription will affect. If a message 657 processing is successful, a Subscription is created. It is possible to 658 create many equal Subscriptions by sending numerously the same 659 SubscribeRequest message.</p><pre class="programlisting">SOAP-ENV:Envelope ... > 660 660 <SOAP-ENV:Header> 661 661 <wsa:Action SOAP-ENV:mustUnderstand="1"> … … 711 711 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 712 712 prefix (http, https, xmpp). The prefix should be adequate to the 713 expected type of connection between <span class="emphasis"><em>QCG714 Notification</em></span> and NotificationConsumer(s): http for715 anonymous, https for ssl-based and xmpp for sending notifications716 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 parameters713 expected type of connection between 714 <span class="emphasis"><em>QCG-Notification</em></span> and NotificationConsumer(s): 715 http for anonymous, https for ssl-based and xmpp for sending 716 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 717 717 to the Subscription being created. In other words, it identifies a 718 718 type of Notifications that should be forwarded to the selected … … 740 740 suggestion for the termination time of the Subscription being 741 741 created (expressed as a local time with timezone). If not present, 742 the termination time is determined automatically - <span class="emphasis"><em>QCG743 Notification <span class="emphasis"><em>specify a default time742 the termination time is determined automatically - 743 <span class="emphasis"><em>QCG-Notification <span class="emphasis"><em>specify a default time 744 744 period</em></span></em></span> for the Subscription to be 745 745 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 … … 748 748 (for example user readable). Note that an actual XSLT document 749 749 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 750 SubscribeResponse message. <span class="emphasis"><em>QCG 750 SubscribeResponse message. <span class="emphasis"><em>QCG-Notification</em></span> 751 751 deliver in this message a reference to the created Subscription. This 752 752 ID can be used for manipulation and to remove the Subscription.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > … … 777 777 NotificationProducer/SubscribeResponse. <span class="emphasis"><em>If differ, a 778 778 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 779 current solution it is the <span class="emphasis"><em>QCG 779 current solution it is the <span class="emphasis"><em>QCG-Notification</em></span> 780 780 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 781 781 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 782 RenewRequest message to <span class="emphasis"><em>QCG 782 RenewRequest message to <span class="emphasis"><em>QCG-Notification</em></span>. The 783 783 message should contain the Subscription ID element and a new 784 784 termination time suggesation.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > … … 830 830 SubscriptionManager/RenewResponse. <span class="emphasis"><em>If differ, a fault 831 831 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 832 (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>QCG833 Notification's</em></span> time when the Subscription was renewing834 (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 to835 send the UnsubscribeRequest message to <span class="emphasis"><em>QCG836 Notification</em></span>. The parameter attached to this request is a837 Subscription ID.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >832 (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 833 </em></span>QCG-Notification's</em></span> time when the 834 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 835 send the UnsubscribeRequest message to 836 <span class="emphasis"><em>QCG-Notification</em></span>. The parameter attached to this 837 request is a Subscription ID.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > 838 838 <SOAP-ENV:Header> 839 839 <wsa:Action SOAP-ENV:mustUnderstand="1"> … … 871 871 SubscriptionManager/UnsubscribeResponse. <span class="emphasis"><em>If differ, a 872 872 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 873 to register himself previosly in <span class="emphasis"><em>QCG874 Notification</em></span>. For this purpose, it sends the875 RegisterPublisherRequest message to <span class="emphasis"><em>QCG876 Notification</em></span>.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >873 to register himself previosly in 874 <span class="emphasis"><em>QCG-Notification</em></span>. For this purpose, it sends the 875 RegisterPublisherRequest message to 876 <span class="emphasis"><em>QCG-Notification</em></span>.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > 877 877 <SOAP-ENV:Header> 878 878 <wsa:Action SOAP-ENV:mustUnderstand="1"> … … 900 900 suggestion for the termination time of the Registration being 901 901 created (expressed as a local time with timezone). If not present, 902 the termination time is determined automatically - <span class="emphasis"><em>QCG903 Notification <span class="emphasis"><em>specify the default time902 the termination time is determined automatically - 903 <span class="emphasis"><em>QCG-Notification <span class="emphasis"><em>specify the default time 904 904 period</em></span></em></span> for the Registration to be valid. 905 905 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, 906 <span class="emphasis"><em>QCG 906 <span class="emphasis"><em>QCG-Notification</em></span> sends RegisterPublisherResponse. 907 907 This message contains a reference to the created Registration. The 908 908 attached ID is necessary to send any Notification message.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > … … 932 932 <span class="emphasis"><em>If differ, a fault will be 933 933 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 934 the current solution it is the <span class="emphasis"><em>QCG935 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 Publisher934 the current solution it is the 935 <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 936 936 Registration ID. It defines a session that is created after 937 937 registration and removed by sending the DestroyRegistration … … 990 990 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 991 991 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 992 DestroyRegistrationRequest message to <span class="emphasis"><em>QCG993 Notification</em></span>. The parameter attached to this request is a994 Publisher Registration ID.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >992 DestroyRegistrationRequest message to 993 <span class="emphasis"><em>QCG-Notification</em></span>. The parameter attached to this 994 request is a Publisher Registration ID.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > 995 995 <SOAP-ENV:Header> 996 996 <wsa:Action SOAP-ENV:mustUnderstand="1"> … … 1030 1030 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 1031 1031 needed, Subscribers can create PullPoints. To do this, a Subscriber 1032 sends the CreatePullPointRequest message to <span class="emphasis"><em>QCG 1032 sends the CreatePullPointRequest message to <span class="emphasis"><em>QCG-Notification 1033 1033 PullPoint</em></span>.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > 1034 1034 <SOAP-ENV:Header> … … 1204 1204 "http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete", 1205 1205 "http://docs.oasis-open.org/wsn/t-1/TopicExpression/Full". 1206 </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>QCG1207 Notification</em></span> prepares GetCurrentMessageResponse. This1208 message includes the content of the last Notification1209 GetCurrentMessageRequest refers to.</p><pre class="programlisting"><SOAP-ENV:Envelope ... >1206 </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 1207 <span class="emphasis"><em>QCG-Notification</em></span> prepares 1208 GetCurrentMessageResponse. This message includes the content of the 1209 last Notification GetCurrentMessageRequest refers to.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > 1210 1210 <SOAP-ENV:Header> 1211 1211 <wsa:Action SOAP-ENV:mustUnderstand="1"> … … 1239 1239 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 1240 1240 Notification and information related to this 1241 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 1242 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 1241 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 1242 <span class="emphasis"><em>QCG-Notification</em></span>; expressed as universal time 1243 (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 1243 1244 this element is the last Notification message published to the 1244 1245 Topic specified in GetCurrentMessageRequest. Currently supported 1245 1246 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. 1246 1247 It may be invoked to get an information about available subscriptions 1247 in the <span class="emphasis"><em>QCG 1248 in the <span class="emphasis"><em>QCG-Notification</em></span> service. The method 1248 1249 consists of various filtering parameters.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > 1249 1250 <SOAP-ENV:Header> … … 1295 1296 <span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListSubscriptionsRequest. 1296 1297 <span class="emphasis"><em>If differ, a fault will be 1297 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>QCG1298 Notification</em></span> schema. It consists of a number of1299 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 parameter1298 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 1299 <span class="emphasis"><em>QCG-Notification</em></span> schema. It consists of a 1300 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 1300 1301 Subscriptions may be simply filtered on the basis of Subscription 1301 1302 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 … … 1359 1360 <span class="emphasis"><em>If differ, a fault will be 1360 1361 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 1361 <span class="emphasis"><em>QCG 1362 <span class="emphasis"><em>QCG-Notification</em></span> (propably also filtered on 1362 1363 the basis of the smn-ext:Filter element sent in 1363 1364 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 … … 1407 1408 <span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListPublishersRegistrationsRequest. 1408 1409 <span class="emphasis"><em>If differ, a fault will be 1409 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 1410 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> 1410 1411 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 1411 1412 filtering of Publisher Registrations based on Publishers 1412 1413 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 1413 1414 Publishers. Depending on configuration, this address may be held 1414 in the <span class="emphasis"><em>QCG 1415 in the <span class="emphasis"><em>QCG-Notification</em></span> service as an address 1415 1416 sent in the From element of WSA Header of RegisterPublisher 1416 1417 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 … … 1457 1458 <span class="emphasis"><em>If differ, a fault will be 1458 1459 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 1459 received from <span class="emphasis"><em>QCG 1460 received from <span class="emphasis"><em>QCG-Notification</em></span> (propably also 1460 1461 filtered on the basis of the smn-ext:Filter element sent in a 1461 1462 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 … … 1504 1505 <span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListPullPointsRequest. 1505 1506 <span class="emphasis"><em>If differ, a fault will be 1506 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 1507 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> 1507 1508 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 1508 1509 PullPoints based on PullPoint ID. The value is at most 32 char 1509 1510 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 1510 1511 PullPoint. The PullPoint address is assigned after creation of a 1511 PullPoint in <span class="emphasis"><em>QCG 1512 PullPoint in <span class="emphasis"><em>QCG-Notification</em></span> and returned 1512 1513 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 1513 1514 </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 … … 1553 1554 <span class="emphasis"><em>If differ, a fault will be 1554 1555 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 1555 <span class="emphasis"><em>QCG 1556 <span class="emphasis"><em>QCG-Notification</em></span> (propably also previously 1556 1557 filtered on the basis of the smn-ext:Filter element sent in a 1557 1558 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 … … 1582 1583 <span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/ListTopicNamespacesRequest. 1583 1584 <span class="emphasis"><em>If differ, a fault will be 1584 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 1585 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> 1585 1586 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 1586 1587 enables filtering of TopicNamespaces based on their … … 1619 1620 <span class="emphasis"><em>If differ, a fault will be 1620 1621 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 1621 TopicNamespaces received from <span class="emphasis"><em>QCG1622 Notification</em></span> (optionally filtered on the basis ofthe1623 smn-ext:Filter element sent in a ListTopicNamespaces1622 TopicNamespaces received from 1623 <span class="emphasis"><em>QCG-Notification</em></span> (optionally filtered on the 1624 basis of the smn-ext:Filter element sent in a ListTopicNamespaces 1624 1625 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 1625 1626 information about a single … … 1627 1628 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 1628 1629 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 1629 TopicNamespace to the <span class="emphasis"><em>IQCG 1630 TopicNamespace to the <span class="emphasis"><em>IQCG-Notification</em></span>.</p><pre class="programlisting"><SOAP-ENV:Envelope ... > 1630 1631 <SOAP-ENV:Header> 1631 1632 <wsa:Action SOAP-ENV:mustUnderstand="1"> … … 1655 1656 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 1656 1657 and only confirms successfull addition of a TopicNamespace to the 1657 <span class="emphasis"><em>QCG 1658 <span class="emphasis"><em>QCG-Notification</em></span> service. </p><pre class="programlisting"><SOAP-ENV:Envelope ... > 1658 1659 <SOAP-ENV:Header> 1659 1660 <wsa:Action SOAP-ENV:mustUnderstand="1"> … … 1670 1671 <span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/AddTopicNamespaceResponse.</em></span><span class="emphasis"><em><span class="emphasis"><em> 1671 1672 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 1672 TopicNamespace from the <span class="emphasis"><em>QCG 1673 TopicNamespace from the <span class="emphasis"><em>QCG-Notification</em></span> system. 1673 1674 Note that the removing may be only temporary (active to the restart of 1674 1675 the system) if the TopicNamespace file is protected by disabling write … … 1708 1709 </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: 1709 1710 <span class="emphasis"><em>http://schemas.qoscosgrid.org/ntf/2011/04/QCGNotificationManager/RemoveTopicNamespaceResponse.</em></span><span class="emphasis"><em><span class="emphasis"><em> 1710 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>QCG1711 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>QCG1712 Notification</em></span>, an administrator has to appropriately configure1713 operating system. There is some dependencies to external software that1714 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>QCGNotification</em></span> is based on the1711 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 1712 <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 1713 <span class="emphasis"><em>QCG-Notification</em></span>, an administrator has to 1714 appropriately configure operating system. There is some dependencies to 1715 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 1715 1716 <span class="emphasis"><em>QCG Core</em></span> library developed by the 1716 1717 <span class="emphasis"><em>QCG</em></span> team. QCG Core is a common utility library 1717 1718 providing set of basic modules used by other components within QCG 1718 1719 Project. For more information see QCG Core documentation.</p><p>The QCG Core library should be properly configured prior to the 1719 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>QCGNotification</em></span>, you need1720 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 1720 1721 to run the configuration script first. It will try to check if all the 1721 1722 requirements are met and whether needed third party software is 1722 1723 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 1723 1724 type the --help parameter you will see all available options. These are 1724 the most important ones:</p><div class="itemizedlist"><ul type="disc"><li><p>--prefix=DIR</p><p>specifies directory where <span class="emphasis"><em>QCG1725 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 to1725 the most important ones:</p><div class="itemizedlist"><ul type="disc"><li><p>--prefix=DIR</p><p>specifies directory where 1726 <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 1726 1727 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 1727 1728 build</p></li><li><p>--with-addressing-handler</p><p>Determine if the test Web Services Addressing handler 1728 1729 service should be build</p></li></ul></div><p>After successful configuration step, compiling and 1729 installing of <span class="emphasis"><em>QCG 1730 installing of <span class="emphasis"><em>QCG-Notification</em></span> should be a 1730 1731 straightforward process:</p><pre class="programlisting">$ make 1731 1732 $ 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 1732 <code class="filename">root</code> or the user that will execute <span class="emphasis"><em>QCG1733 Notification</em></span> service, assuming he has necessary privileges1734 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>QCGNotification</em></span> - the1735 PostgreSQL example</h3></div></div></div><p><span class="emphasis"><em>QCG 1733 <code class="filename">root</code> or the user that will execute 1734 <span class="emphasis"><em>QCG-Notification</em></span> service, assuming he has 1735 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 1736 PostgreSQL example</h3></div></div></div><p><span class="emphasis"><em>QCG-Notification</em></span> can be run in two basic 1736 1737 modes related to the database connection: without database or with 1737 1738 database. Although the first option is sufficient for simple scenarios, 1738 it reduces the overall functionality of the <span class="emphasis"><em>QCG 1739 Notification</em></span> (e.g. disable PullPoints). Therefore using the 1740 database is recomended and can be often essential.</p><p>You will find more detailed description of administrative tasks in 1739 it reduces the overall functionality of the 1740 <span class="emphasis"><em>QCG-Notification</em></span> (e.g. disable PullPoints). 1741 Therefore using the database is recomended and can be often 1742 essential.</p><p>You will find more detailed description of administrative tasks in 1741 1743 PostgreSQL tutorial. However, the following basic steps are needed to 1742 set up a database and appropriate tables for <span class="emphasis"><em>QCG1743 Notification</em></span> assuming that you have already setup a1744 PostgreSQL database:</p><p>By default, the first database user created will also be named1744 set up a database and appropriate tables for 1745 <span class="emphasis"><em>QCG-Notification</em></span> assuming that you have already 1746 setup a PostgreSQL database:</p><p>By default, the first database user created will also be named 1745 1747 <code class="filename">postgres</code>. In order to create a user for 1746 <span class="emphasis"><em>QCG 1748 <span class="emphasis"><em>QCG-Notification</em></span> usage, for instance 1747 1749 <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 1748 1750 <code class="filename">qcg-ntfd.xml</code> configuration file. Create a database, 1749 1751 for example <code class="filename">qcg-ntf</code>, by typing the following 1750 1752 command:</p><pre class="programlisting">$ createdb qcg-ntf</pre><p>and set up a table structure using the 1751 <code class="filename">qcg-ntf-psql.sql</code> file from <span class="emphasis"><em>QCG1752 Notification</em></span> distribution - it can be found in1753 <code class="filename">qcg-ntf-psql.sql</code> file from 1754 <span class="emphasis"><em>QCG-Notification</em></span> distribution - it can be found in 1753 1755 <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 1754 1756 Name. You can do this by editing system-wide configuration file (e.g. 1755 1757 <code class="filename">/etc/odbc.ini)</code> or <code class="filename">.odbc.ini</code> in 1756 home directory of the user that will be used to start <span class="emphasis"><em>QCG1757 Notification</em></span>.</p><p>Assuming that ODBC are installed in /usr/local/lib and the choosed1758 name for <span class="emphasis"><em>QCG 1758 home directory of the user that will be used to start 1759 <span class="emphasis"><em>QCG-Notification</em></span>.</p><p>Assuming that ODBC are installed in /usr/local/lib and the choosed 1760 name for <span class="emphasis"><em>QCG-Notification</em></span> is 1759 1761 <code class="filename">qcg-ntf</code> the configuration file should looks 1760 1762 simmilar to the following:</p><pre class="programlisting">[qcg-ntf] 1761 Description = QCG 1763 Description = QCG-Notification database 1762 1764 Driver = /usr/local/lib/libodbcpsql.so 1763 1765 Setup = /usr/local/lib/libodbcpsqlS.so … … 1771 1773 DebugFile = odbc.debug</pre><p>You can also try some GUI tools to set up and manage ODBC and 1772 1774 databases. Check out if the following tools are available on your 1773 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 1775 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 1774 1776 xmlns:sm="http://schemas.qoscosgrid.org/core/2011/04/config" 1775 1777 xmlns="http://schemas.qoscosgrid.org/ntf/2011/04/config" … … 1783 1785 </sm:ModuleManager> 1784 1786 1785 <sm:Service xsi:type="ntfd" description="QCG 1787 <sm:Service xsi:type="ntfd" description="QCG-Notification"> 1786 1788 <sm:Logger> 1787 1789 <sm:Filename>/opt/qcg/var/log/qcg-ntf/qcg-ntfd.log</sm:Filename> … … 1881 1883 anonymous communication and sm:atc_transport_https for SSL based 1882 1884 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 1883 Publisher side of <span class="emphasis"><em>QCG 1885 Publisher side of <span class="emphasis"><em>QCG-Notification</em></span>. The 1884 1886 following modules are currently supported:</p><div class="itemizedlist"><ul type="circle"><li><p>smn:ntf-publisher-gsoap-anonymous for anonymous SOAP 1885 1887 communication;</p></li><li><p>smn:ntf-publisher-gsoap-ssl for SSL based SOAP 1886 1888 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 1887 1889 5.2</a>.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar 1888 </em></span>[smn:NotificationsVarType]</p><p>Various notification settings closely related to QCG1889 Notification service implementation.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:TopicNsDir1890 </em></span>[smn:NotificationsVarType]</p><p>Various notification settings closely related to 1891 QCG-Notification service implementation.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:TopicNsDir 1890 1892 <span class="emphasis"><em>[string]</em></span></em></span></p><p>Location of the directory with files containing Topic 1891 1893 definitions.</p></li><li><p><span class="emphasis"><em>//smn:Core/smn:NotificationsVar/smn:StrictCorrectnessCheckingEnabled</em></span> … … 1965 1967 then this option is disabled. Default: 5</p></li><li><p><span class="emphasis"><em>//smn:Core/Database/DatabaseEnabled 1966 1968 <span class="emphasis"><em>[boolean]</em></span></em></span></p><p>true, false - determines if a database should be enabled; in 1967 the simplest configuration, <span class="emphasis"><em>QCG 1969 the simplest configuration, <span class="emphasis"><em>QCG-Notification</em></span> 1968 1970 can be used also without a database connection, however many options 1969 1971 will be then unavailable. Default: true</p></li><li><p><span class="emphasis"><em>//smn:Core/Database/DSN … … 1973 1975 <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 1974 1976 <span class="emphasis"><em>[boolean]</em></span></em></span></p><p>true, false - determines whether all information stored in a 1975 database should be cleaned at starting of the QCG 1977 database should be cleaned at starting of the QCG-Notification 1976 1978 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 1977 are loaded during the<span class="emphasis"><em> QCG 1979 are loaded during the<span class="emphasis"><em> QCG-Notification</em></span> run time. 1978 1980 Module definitions are specified in appropriate sections of the 1979 1981 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 … … 1981 1983 and notification channels that need to be setup. The first one is a 1982 1984 communication channel between Subscriber/Publisher clients and 1983 <span class="emphasis"><em>QCG 1985 <span class="emphasis"><em>QCG-Notification. </em></span>This type of communication is 1984 1986 currently completely based on QCG Core library.</p><p>The second type is an outgoing communication between 1985 <span class="emphasis"><em>QCG 1986 is particular for <span class="emphasis"><em>QCG 1987 situation <span class="emphasis"><em>QCG 1987 <span class="emphasis"><em>QCG-Notification</em></span> and NotificationConsumers and it 1988 is particular for <span class="emphasis"><em>QCG-Notification</em></span>. In this 1989 situation <span class="emphasis"><em>QCG-Notification</em></span> plays a role of a 1988 1990 Notification Publisher. At this time, supported modules for this 1989 1991 channel utilize a Web Service interface, XMPP interface and SMTP … … 2079 2081 <span class="emphasis"><em>[string]</em></span></em></span></p><p>Used to enable encryption. The only supported type of 2080 2082 encryption is "TLS". Optional element, if not present, 2081 encryption will be switched off. 2083 encryption will be switched off.</p></li><li><p><span class="emphasis"><em>//smn:TrutedCAFile 2082 2084 <span class="emphasis"><em>[string]</em></span></em></span></p><p>A path to the file with trusted CAs certificates. 2083 2085 Optional element.</p></li><li><p><span class="emphasis"><em>//smn:TrutedCAPath … … 2092 2094 false.</p></li><li><p><span class="emphasis"><em>//smn:SendTimeout 2093 2095 <span class="emphasis"><em>[int]</em></span></em></span></p><p>The timeout in seconds for stall on the send function. 2094 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>QCG2095 Notification</em></span> is relatively simple. The first step is a2096 preparation of an XML document with a Topic Namespace definition. This2097 step can be done by one of the peers cooperating with <span class="emphasis"><em>QCG2098 Notification</em></span>. Then the document should be delivered to the2099 computer where <span class="emphasis"><em>QCG Notification</em></span> is installed. It2100 can be done in two ways: the document may be copied manually by QCG2101 Notification administrator to TopicNamespaces directory in prior to2102 <span class="emphasis"><em>a QCG Notification</em></span> startup or it can be send2103 through the <span class="emphasis"><em>QCGNotification</em></span> interface when2104 <span class="emphasis"><em>QCG 2096 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 2097 <span class="emphasis"><em>QCG-Notification</em></span> is relatively simple. The first 2098 step is a preparation of an XML document with a Topic Namespace 2099 definition. This step can be done by one of the peers cooperating with 2100 <span class="emphasis"><em>QCG-Notification</em></span>. Then the document should be 2101 delivered to the computer where <span class="emphasis"><em>QCG-Notification</em></span> is 2102 installed. It can be done in two ways: the document may be copied 2103 manually by QCG-Notification administrator to TopicNamespaces directory 2104 in prior to <span class="emphasis"><em>a QCG-Notification</em></span> startup or it can be 2105 send through the <span class="emphasis"><em>QCG-Notification</em></span> interface when 2106 <span class="emphasis"><em>QCG-Notification</em></span> is already runing. In the last 2105 2107 case, the TopicNamespaces are stored also in a files in TopicNamespace 2106 2108 directory so they can be automatically loaded after restart of the … … 2108 2110 unwanted removal by unseting write permissions for a certain 2109 2111 file.</p><p>An XML document describing a sample topic namespace is presented 2110 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>QCGNotification</em></span> as a daemon2111 type:</p><pre class="programlisting">$ ./qcg-ntfd</pre><p>If you start <span class="emphasis"><em>QCG 2112 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 2113 type:</p><pre class="programlisting">$ ./qcg-ntfd</pre><p>If you start <span class="emphasis"><em>QCG-Notification</em></span> with parameter 2112 2114 -h you will get an optional parameters list:</p><pre class="programlisting">$ ./qcg-ntfd -h 2113 2115 usage: ./qcg-ntfd [-d] [-z config_file] … … 2117 2119 -z config_file configuration file, default is /opt/qcg/etc/qcg-ntfd.xml 2118 2120 -v print version information 2119 -h print this help</pre><p>Once you run <span class="emphasis"><em>QCG 2120 Notification</em></span> as a daemon, a log file is created. Using 2121 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 2121 -h print this help</pre><p>Once you run 2122 <span class="emphasis"><em>QCG-Notification</em></span> as a daemon, a log file is 2123 created. Using various log levels, you can log less or more 2124 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 2122 2125 <code class="filename">SIGINT</code> signal to the service, e.g.:</p><pre class="programlisting">$ kill -SIGINT `pidof qcg-ntfd`</pre></div></div></div> 2123 2124 2126 }}}