
The Notification module of EasyVIPER provides a publisher role to the workflow engine, based on WS-Notification and subscribe/notify mechanism. This allows to subscribe on particular events related to a workflow, and to retrieve functional and non functional information (service latency, which branch of the workflow is executed, service invocation failure, ...).
SCA intents mechanism is used in order to implementation notification production into EasyVIPER. The subscription provokes notification intents positioning on workflow nodes. These particular intents are able to marshal and send nodes information.
{center}
!archi_easyviper.png|border=1,width=500!
EasyBPEL/EasyVIPER mechanism to manage monitoring and adaptation of workflows.
{center}
The notifications operations are
* subscribe,
* unsubscribe.
They correspond to WS-Notification operations definition.
The subscription mechanism launches, according to filters defined in the subscribe request, notifications intents adding on workflow nodes. Filters are:
* The ServiceEndpoint exposed by the workflow (BPEL process). A list of names can be set and will be involved in notification.
* The topic (QName) that selects in a workflow, onto which nodes (SCA components) will be positioned notification intents.
The subscribe request also contains informations on the consumer address, in order for the producer (EasyVIPER) to know where to send potential notifications. This information is to set in the {{ConsumerReference}} tag.
Here is an example of subscription request:
{code:xml|width=800}
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:b="http://docs.oasis-open.org/wsn/b-2"
xmlns:add="http://www.w3.org/2005/08/addressing">
<soapenv:Header/>
<soapenv:Body>
<wsn:Subscribe xmlns:wsn="http://docs.oasis-open.org/wsn/b-2"
xmlns:add="http://www.w3.org/2005/08/addressing"
targetnamespace="http://docs.oasis-open.org/wsn/b-2">
<wsn:ConsumerReference xmlns:wsn="http://docs.oasis-open.org/wsn/b-2"
xmlns:add="http://www.w3.org/2005/08/addressing">
<add:Address>
{http://test.com}notifConsumerService::NotificationConsumerEndpoint
</add:Address>
</wsn:ConsumerReference>
<wsn:Filter>
<wsn:TopicExpression Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116"
xmlns:vipertopic="http://ebmwebsourcing.com/easyviper/topic">
vipertopic:ActivityChanged
</wsn:TopicExpression>
<wsn:MessageContent Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116">
<wsnebm:NotifyContent
xmlns:wsnebm="http://www.ebmwebsourcing.com/WS-BaseNotification/NotifyContent"
processType="1">
<wsnebm:params>
<wsnebm:param>{http://ebmwebsourcing.com/sample}process::processEndpoint</wsnebm:param>
</wsnebm:params>
</wsnebm:NotifyContent>
</wsn:MessageContent>
</wsn:Filter>
</wsn:Subscribe>
</soapenv:Body>
</soapenv:Envelope>
{code}