You may come across a requirement to trigger an event to notify of an action when a certain action is doneEventing is used to send notifications when a particular action is completed, such as invoking when an operation with certain particular arguments is invoked or when a specific response is returned. This is accomplished in the WSO2 Data Services Server Notifications are enabled in WSO2 DSS using input and output event triggers.
Table of Contents maxLevel 3 minLevel 3
About the sample data service
The EventingSample data service used here is based on the functionality of managing the inventory of a car/motorcycle dealership. It contain contains the following queries.:
- addProductQuery: This query adds a addProduct: A new product is added to the catalog using the addProductQuery query.
- updateProductQuantityQuery: This query updates the updateProductQuantity: The availability of a certain product is updated using the updateProductQuantityQuery query. This is linked with an input event trigger, which monitors if whether the stock of this product is critically low. If so, if fires an event notifying the subscribers that this product's stock needs to be updated.
- getProductByCodeQuery: This query retrieves product information, given the product codegetProductByCode: When the product code is given, the getProductByCodeQuery query retrieves product information. The company gives special attention to people querying the database for motocycles. So when a query is made where the product type is a motorcyle"motorcycle", an output trigger associated with this query is triggers and a message is sent sends messages to the respective subscribers, which is our email address in this case.
Building the sample
...
- sample
...
- .
Pre-requisites
- In the sample, we define a specific topic for events to be published, and an email address is added as a subscription for that topic. In order to allow mails to be sent, we have to configure the mail sender in the client Axis2 configuration. A sample
axis2.xml
file for the client configuration is stored
...
- in
<DSS_
...
HOME>/samples/resources/sample_axis2_client.xml
. Use it to replace
...
- the
<DSS_
...
HOME>/repository/conf/axis2/axis2_client.xml
...
- file.
...
- The
axis2_client.xml
file contains an already configured mail sender section and is ready to be used.
...
- Edit the data service
...
- by adding a valid email address
...
- : Here we use the XML Edit option to edit the dataservice. In the XML view, replace all occurences of "test@test.com" with your own email address and restart the server.
Building the sample
The .dbs file of this sample data service should be manually deployed in your server as explained below.
- Log in to the management console and select Upload under Data Service menu.
- Select the EventingSample.dbs file from the
<DSS_HOME>/samples/dbs/rdbms/
folder and click Upload. - If the file is deployed successfully, the Deployed Services window appears with the new data service listed. Alternatively, copy the file to the
<DSS_HOME>/repository/deployment/server/dataservices
folder. It will be deployed instantly as hot deployment, which is enabled in Data Services Server by default.
See Creating and Deploying a Configuration File.
Running the Sample
The sample service can be run using the TryIt tool, which is bundled with the WSO2 Data Services Server, or a code-generated java client sample as discussed in the Data Services Clients section.
Follow the steps below to demonstrate this functionality using the TryIt tool:
- Log in to the management console of your server and click List under Services in the navigator. The
CSVSampleService
EventingSample will be listed here. - Click Try this service to open the TryIt tool.
- Select the relevant operation and click Send to execute the command as shown below.
- We will first add a new product into the inventory by executing the "addProduct" operation:
- After adding the product, we will update the availability of it by changing the product quantity in stock. Execute the "updateProductQuantity" operation:
- We will first add a new product into the inventory by executing the "addProduct" operation:
- Here we are setting the "quantityInStock" to 5. Because of the event trigger, when the stock is less than 10, an event is fired. Soon you will receive an event notification to your mail inbox. Figure below shows the contents of the email attachment.
- Here we are querying the inventory system for a specific motorcycle model by executing the "getProductByCode" operation.
By making a request with the motorcycle product line, we are triggering an event associated with it. An email will be sent regarding this query. The contents of the email is as follows:
- Here we are setting the "quantityInStock" to 5. Because of the event trigger, when the stock is less than 10, an event is fired. Soon you will receive an event notification to your mail inbox. Figure below shows the contents of the email attachment.