Home
News
Events
Press
Downloads
Exploitation Items (Installers)
Publications
Links
Partners
Contact
Search
Newsletter Issues
Wiki
BREIN User and Development Forum
BREIN Architecture
Knowledge Portal
Login Form
Latest News
6th Newsletter issue available   The 6th BREIN newsletter issue is now available. To download it, visit the "Newsletter Issues" section on the left menu or click here .   Details...

SOC-LOG'09 workshop at ICSOC-ServiceWave conference     BREIN is supporting the 1st International Workshop on Service Oriented Computing in Logistics (SOC-LOG'09) which will be held as part of ICSOC/ServiceWave, in Stockholm, Sweden (November 23, 2009).    Details...

New demo video BREIN project participated in the Internet of Services 2009 Concertation meeting, presenting among others two demos showing the work done on Semantically enhanced SLA Negotiations and Semantic aware and SLA-Driven Resource Management for Virtualized and Heterogeneous Platforms.   Details...

Cloud Computing Providers Part of our work done for the State of the Art is now available also through Gridipedia (visit here )   Details...

Semantics Week 2009   BREIN and the European projects STASIS, SOA4ALL, and the NESSI Semantics Group, would like to invite you to "Semantics Week" to be held June 22-26th in beautiful and logistic friendly Amsterdam.   Details...




BREIN Dissemination CDcd.jpg

newsletter.jpg





Receive HTML?

NOTIFICATION SUPPORT TOOLKIT

Role(s): Service Provider, Customer

Component(s):   Notification Provider

                             Infrastructure Sensor

License: Apache 2.0

 

 

Usage Instructions

Installation

Software Installation

Notification Support Toolkit API

 

The Notification Provider toolkit is in charge of the distribution of topic based events within the constraints of a Virtual Organisation (or another form of collaboration). The notification support thereby allows for multiplexing of messages, as well as aggregation of sources. It supports both push and pull models to satisfy firewall constraints. Topics can be easily registered and extended, and changes in producers/subscribers are maintained in the collaborative scope. Notifications can be sent to both Web Service based and Agent based Consumers.

A set of topics are defined which classify the different events that may occur in the system. Consumers are subscribed to the topics they are interested in, while publishers publish notifications belonging to different topics.

The components included in this toolkit are infrastructure components, as such they are basically used by other components in order to send and receive notifications. The Notification Provider manages the different topics, and it associates these topics with their respective publishers and consumers. In addition, the Notification Provider routes the notifications from their producers to the final consumers. This can be done directly if the consumer is a Web Service (Notification WS Consumer), or through the Infrastructure Sensor if the consumer is an agent (Agent Consumer).  Next figure  presents a deployment diagram of the Notification Support toolkit where its dependencies with other toolkits and components are depicted. The different deployments of the Notification Provider can communicate directly or through the Gateway component included in the Messaging Infrastructure toolkit.

 

 

Notification Support Installation

 

Installation Requirements

·        All components require Linux OS (the Notification Provider is also available for Mac OS), concretely Ubuntu has been chosen as reference distribution (so this distribution is recommended as base OS).

·        The Notification Provider requires OpenSSL 0.97 or higher for security, libXML 2.4.0 or higher to parse XML, unixODBC 2.2.0 or iODBC 3.0.0 or higher versions for databe access, postgreSQL / mySql as database management system, and gSOAP_2.7.12 as middleware for Web Services.

·        The Infrastructure Sensor requires Java 1.5, WSIT as its Web Service implementation, Jade 3.5. as the agent platform.

 

 

Deployment Tips

There are two alternative deployment options for the Notification Support toolkit, depending on which kind of traffic is allowed between the Notification Provider and the Notification Consumers. If only HTTP traffic is allowed, then the Notification Provider and the Infrastructure Sensor should be installed in the same computer, in this way the communication between the Notification Provider and the Notification WS Consumer would rely on Web Services, and communication between the Notification Provider and the Infrastructure Sensor would rely on HTTP (since the HTTP MTP would be used). If the communications are based only on Web Services (i.e. SOAP traffic), then the Infrastructure Sensor should be deployed in the Notification Customer side so all the communications between the two sides will rely on Web Services. The final deployment should consider the different security restrictions, concretely allowed traffic, in order to select the most suitable option.

The fully distributed deployment configuration of the toolkit, independently on where the Infrastructure Sensor is allocated is shown in  REF _Ref226869202 \h Figure 17.

 Deployment Prerequisites:

1.All components are always necessary.

2.There are no grouping restrictions. Components can be deployed together on a single machine as well as in different machines which can be reachable through the internet.

3.Deployment on the same machine at the Notification Provider is recommended if HTTP traffic is allowed with the notification consumers.

4.Deployment on different machines (the Notification Provider at the Notification Provider side, and the Infrastructure Sensor at the Notification Consumer side) is recommended if only Web Service traffic is allowed with the notification consumers

 

 

Software Installation

The installer of this toolkit can be any of the standard package managers included in an Ubuntu distribution. In the  REF _Ref2268687891 \h Figure 18 the Synaptic package manager is shown, with a search of all the packages where the keyword 'BREIN' is included in the description. The results of the search are all the Linux packages distributed through the public repository of the BREIN project. The packages related to the IS and NP components, as well as the one related to the Notification Support toolkit, can be found in the repository, they are the following:

NotificationSupport_2.0.i386.deb (Main package)

InfrastructureSensor_2.0_all.deb

InfrastructureSensorMTP_2.0_all.deb

NotificationProvider[mora1] _1.0_i386.deb

In order to install the toolkit, the 'NotificationSupport' package must be selected, then marked to install, and finally the 'apply' action executed. This will install all the components included in the toolkit. If just a single component is going to be installed it just has to be selected and market in the same way than the toolkit. These packages can be market to be updated, removed or re-installed whenever it will be necessary.

 

 

These directories are explained in more detail in the following subsections.

 

 


Usage Instructions

Notification Provider with Infrastructure Sensor

Inside the toolkit the Notification Provider and the Infrastructure Sensor must be deployed together in order to have notifications, once deployed the different publishers and consumers may be introduced into the scene.

The different interactions and the data exchanged and needed them is explained next.

Figure 22 presents the interactions performed internally between the components of the Notification Support toolkit. Initially the Infrastructure Sensor (IS) subscribes as consumer of all topics in a concrete domain. From this moment, the Notification Provider sends the Infrastructure Sensor all the notifications related with the topics it subscribed to.

 

Notification Support Toolkit API

 

 

Method

SubscribeResponse resp Subscribe(Subscribe req)

Arguments

Subscribe req - A struct containing:

- Notification Consumer's address

- TopicExpression expressed in a specified Dialect

- An initial termination time for Subscription

Return Value[s]

SubscribeResponse resp – A struct containing:

- Subscription ID

Description

Subscribe is sent by Subscriber. The message should contain information about Notification Consumer and an expression defining Topic or Topics that this Subscription affects. If a message processing is successful, Subscription is created. It is possible to create many equal Subscriptions by sending numerously the same SubscribeRequest message. Response message   - SubscribeResponse delivers  Subscription ID.

Method

RenewResponse resp Renew(Renew req)

Arguments

Renew req A struct containing:

- Subscription ID

- A new termination time for Subscription

Return Value[s]

RenewResponse resp A struct containing:

- The termination time which was set by Notification Broker

- Notification Broker's current time

Description

When Subscriber wants to renew Subscription, it can send a RenewRequest message. A message should contain Subscription ID and a new termination time suggestion for Subscription.

Method

UnsubscribeResponse resp Unsubscribe(Unsubscribe req)

Arguments

Unsubscribe req – A struct containing:

- Subscription ID

Return Value[s]

UnsubscribeResponse resp – A struct without a content

Description

When Subscriber wants to terminate Subscription, it has to send an UnsubscribeRequest message.  This message has to contain Subscription ID.

Method

RegisterPublisherResponse resp RegisterPublisher(RegisterPublisher req)

Arguments

RegisterPublisher req – A struct containing:

- An initial termination time for Publisher Registration

Return Value[s]

RegisterPublisherResponse resp – A struct containing:

- Publisher Registration ID

Description

Before Publisher starts sending Notifications, it has to register himself. It sends a RegisterPublisherRequest message to Notification Broker. At this time a registration process is anonymous-style and no authorization is proceeded. At the response to the successful Publisher's registration process, Notification Broker sends RegisterPublisherResponse with Registration ID.

Method

void Notify(Notify req)

Arguments

Notify req – A struct containing:

- Publisher's Registration ID

- Notification message(s) consists of:

- TopicExpression defining single Topic

- Notification content

Return Value[s]

None

Description

Notify consists of one or many NotificationMessages. Each of them is an individual Notification message. NotificationMessage should define single Topic that this message concerns. Publisher's Registration ID has to be attached to Notify messages. Notify is a one-way message.

Method

DestroyRegistrationResponse resp DestroyRegistration(DestroyRegistration req)

Arguments

DestroyRegistration req – A struct containing:

- Publisher's Registration ID

Return Value[s]

DestroyRegistrationResponse resp – A struct without a content

Description

Publisher can terminate Registration by sending a DestroyRegistrationRequest message to Notification Broker. The parameter attached to this request is Publisher's Registration ID.

Method

GetCurrentMessageResponse resp GetCurrentMessage(GetCurrentMessage req)

Arguments

GetCurrentMessage req – A struct containing:

- TopicExpression defining single Topic

Return Value[s]

DestroyRegistrationResponse resp – A struct containing:

- Notification content

Description

GetCurrentMessage is a kind of expansion of the standard Notification concept and it is sending when object wants to receive NotificationMessage besides a publicizing procedure. It is useful for example when new NotificationConsumer is connecting and wants to get the last published NotificationMessage. Single GetCurrentMessage should refer exactly one Topic. In a response to GetCurrentMessageRequest Notification Broker prepares GetCurrentMessageResponse. This message includes content of the last Notification that GetCurrentMessageRequest refers to

The application programming interface that the Sensor provides to an Agent is described in the following tables:

Notification Agent Interface

 

Method

 

boolean ack notify(Notify notification, int sequenceID)

Arguments

Notify notification A notify object containing notification's topic,  message and publisher identifier

int sequenceID An integer that represents the number of notifications received before the current by this Agent

Return Value[s]

boolean ack – true if the reception of the notification in the Agent is alright, else false

Description

Through this method an Agent receives a notification with its sequence number, the return value tells if the reception in the Agent has succeed

Notification Helper Interface

Method

int subscriptionID subscribeToConsumer(String aid, String topic)

Arguments

String aid – Agent Identifier string

String topic – Topic expression string

Return Value[s]

int subscriptionID – Subscription identifier integer

Description

This method lets an Agent to be subscribed to a desired topic, the return value identifies the subscription

Method

void unSubscribeToConsumer(int subscriptionID)

Arguments

int subscriptionID - Subscription identifier integer

Return Value[s]

None

Description

Method that unsubscribes an Agent from the subscription identifier

Method

 

List subscriptions getCurrentSubscriptions(String aid)

Arguments

String aid – Agent Identifier string

Return Value[s]

List subscriptions – A list containing all the subscription identifiers for the Agent

Description

This method gets a list of the current subscriptions of an Agent

Method

 

List notifications getLostNotifications(String topic, int lastSequenceID)

Arguments

String topic – Topic expression string

 

int lastSequenceID – Sequence identifier integer that represents the last notification received about this topic

Return Value[s]

List notifications – A list of notifications that begins with the notification with sequence identifier greater than the last sequence identifier received as input

Description

Returns a list of lost notifications