WSO2 Enterprise Integrator 6.6.0 (WSO2 EI) is the latest release of the WSO2 EI 6.x.x family. It is a comprehensive solution that allows you to seamlessly integrate applications, services, data, and business processes to support modern enterprise integration requirements.
For this quick start guide, let's consider a basic Health Care System where WSO2 EI is used as the integration software. In this guide, an external party (a patient) wants to make a doctor's reservation at a given hospital.
Routing requests based on message content
This is a 5-minute guide to give you a quick overview of how WSO2 EI mediates and routes messages from a front-end service (client) to a back-end service.
Let's get started!
Configuring WSO2 EI
Start the ESB profile:
Open the ESB profile's Management Console using https://localhost:9443/carbon
, and log in using admin as the username and password.
Download the SampleServicesCompositeApplication_1.0.0.car
file from GitHub.
Deploy the SampleServicesCompositeApplication_1.0.0.car
as follows:
- On the Main tab of the Management Console, go to Manage > Carbon Applications and click Add.
Click Choose File, select the SampleServicesCompositeApplication_1.0.0.car
file that you downloaded, and click Upload.
Refresh the page to see the Carbon application you just added in the Carbon Applications List screen.
Sending requests to WSO2 EI
We are now ready to request a doctor's appointment at Grand Oak Community Hospital.
Create a JSON file named request.json
with the following payload to specify the details the back-end service needs to make the appointment: patient information, doctor name, hospital name, and appointment date.
{
"patient": {
"name": "John Doe",
"dob": "1940-03-19",
"ssn": "234-23-525",
"address": "California",
"phone": "8770586755",
"email": "johndoe@gmail.com"
},
"doctor": "thomas collins",
"hospital": "grand oak community hospital",
"appointment_date": "2025-04-02"
}
Open a terminal, navigate to the directory where you have saved the request.json
file, and execute the following cURL command.
curl -v -X POST --data @request.json http://localhost:8280/healthcare/categories/surgery/reserve --header "Content-Type:application/json"
You get the following response:
> POST /healthcare/categories/surgery/reserve HTTP/1.1
> Host: localhost:8280
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Type:application/json
> Content-Length: 285
>
* upload completely sent off: 285 out of 285 bytes
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Tue, 21 May 2019 09:14:45 GMT
< Transfer-Encoding: chunked
<
* Connection #0 to host localhost left intact
{"appointmentNumber":1,"doctor":{"name":"thomas collins","hospital":"grand oak community hospital","category":"surgery","availability":"9.00 a.m - 11.00 a.m","fee":7000.0},"patient":{"name":"John Doe","dob":"1940-03-19","ssn":"234-23-525","address":"California","phone":"8770586755","email":"johndoe@gmail.com"},"fee":7000.0,"confirmed":false,"appointmentDate":"2025-04-02"}
Now check the terminal window and you see the following message:
INFO - LogMediator message = Routing to grand oak community hospital
Congratulations, you have successfully completed this guide!
In this quick start, you have created a request payload and send it to an endpoint in WSO2 EI, which routes the message to a back-end service, and then sends a response back to the client.
Additional Capabilities
Exposing a datasource as a service
Click here to try it out!
Now, let's set up an already configured database that has doctor details and expose this database as a data service using WSO2 EI. We can then check the availability of doctors in the healthcare service without interacting with the database.
Follow the steps given below.
Set up the back-end database
First, let's set up a back-end database for our healthcare service. Follow the steps below to create the database.
Download the dataServiceSample.zip
file from GitHub and extract it to a location on your computer.
Open a terminal, navigate to the <QSG_HOME>
directory, and execute the following command:
ant -Ddshome=PATH_TO_EI_HOME
The DATA_SERV_QSG
database is now created in the <EI_HOME>/samples/data-services/database
directory with information of all available doctors in the healthcare service.
Expose the database as a data service
Now, let's start the ESB profile and upload the sample data service:
Start the ESB profile:
- In your Web browser, navigate to the WSO2 EI management console using the following URL:
https://localhost:9443/carbon/
- Log in to the Management Console using the following credentials:
- Username: admin
- Password: admin
- Go to the Main tab and click Data Service > Upload.
- Upload the
DOCTORS_DataService.dbs
file from the <QSG_HOME>
directory. - Refresh the page to see the deployed data service in the Deployed Services screen.
The database of the channeling service is now exposed through the DOCTORS_DataService
data service, which we just deployed in WSO2 EI.
Assume that you want information on the availability of all surgeons. Open a terminal and execute the command given below. Note that we are specifying 'surgery
' as the specialty.
curl -v http://localhost:8280/services/DOCTORS_DataService/getDoctors?SPECIALITY=surgery
The information about the availability of all surgeons will be published on your terminal:
<DOCTORSLIST xmlns="http://ws.wso2.org/dataservice">
<DOCTOR>
<NAME>thomas collins</NAME>
<HOSPITAL>grand oak community hospital</HOSPITAL>
<SPECIALITY>surgery</SPECIALITY>
<AVAILABILITY>9.00 a.m - 11.00 a.m</AVAILABILITY>
<CHARGE>7000</CHARGE>
</DOCTOR>
<DOCTOR>
<NAME>anne clement</NAME>
<HOSPITAL>clemency medical center</HOSPITAL>
<SPECIALITY>surgery</SPECIALITY>
<AVAILABILITY>8.00 a.m - 10.00 a.m</AVAILABILITY>
<CHARGE>12000</CHARGE>
</DOCTOR>
<DOCTOR>
<NAME>seth mears</NAME>
<HOSPITAL>pine valley community hospital</HOSPITAL>
<SPECIALITY>surgery</SPECIALITY>
<AVAILABILITY>3.00 p.m - 5.00 p.m</AVAILABILITY>
<CHARGE>8000</CHARGE>
</DOCTOR>
</DOCTORSLIST>
Congratulations, you have successfully sent a request to the data service!
Guaranteeing message delivery
Click here to try it out!
Now, instead of sending the request directly to the back-end service, let's store the request message in the Message Broker profile of WSO2 EI. We will use a message processor to retrieve the message from the store and then to forward the message to the back-end service. Store and forward messaging is used for serving traffic to back-end services that can accept request messages only at a given rate. This is also used to ensure guaranteed delivery of messages. That is, the messages received are never lost since they are stored in the message store and, thereby, available for future reference.
Let's get started!
Configuring WSO2 EI
Open the <EI_HOME>/conf/jndi.properties
file and add the following line after queue.MyQueue = example.MyQueue
:
queue.PaymentRequestJMSMessageStore=PaymentRequestJMSMessageStore
Start the Message Broker profile:
Download and start the back-end service that will process appointment requests:
- Download the JAR file of the back-end service.
Open a terminal and navigate to the location where your saved the back-end service.
Execute the following command to start the service:
java -jar Hospital-Service-2.0.0-EI7.jar
Start the ESB profile:
- Open the ESB profile's management console using
https://localhost:9443/carbon
, and log in using admin as the username and the password. Download the SampleServicesCompositeApplication_1.0.0.car
file from GitHub.
Deploy the SampleServicesCompositeApplication_1.0.0.car
file as follows:
- On the Main tab of the management console, go to Manage > Carbon Applications and click Add.
Click Choose File, select the SampleServicesCompositeApplication_1.0.0.car
file that you downloaded, and click Upload.
Refresh the page to see the carbon application you just added in the Carbon Applications List screen.
Sending requests to WSO2 EI
Create a JSON file named request.json
with the following payload to specify the details the back-end service needs for making the appointment: patient information, doctor name, hospital name, and appointment date.
{
"name": "John Doe",
"dob": "1940-03-19",
"ssn": "234-23-525",
"address": "California",
"phone": "8770586755",
"email": "johndoe@gmail.com",
"doctor": "thomas collins",
"hospital": "grand oak community hospital",
"cardNo": "7844481124110331"
}
Open a command line terminal and execute the following command from the location where the request.json
file you created is saved:
curl -v -X POST --data @request.json http://localhost:8280/healthcare/categories/surgery/reserve --header "Content-Type:application/json"
You will see the response as follows:
{"message":"Payment request successfully submitted. Payment confirmation will be sent via email."}
Check the terminal and see that the response from the SettlePaymentEP
endpoint is logged as follows:
[2018-06-07 11:46:48,936] [EI-Core] INFO - LogMediator message = Routing to grand oak community hospital
[2018-06-07 11:46:48,949] [EI-Core] INFO - TimeoutHandler This engine will expire all callbacks after GLOBAL_TIMEOUT: 120 seconds, irrespective of the timeout action, after the specified or optional timeout
[2018-06-07 11:46:52,003] [EI-Core] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:995e37e3-8900-4da8-8eea-67da91de2c12, Direction: request, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><jsonObject><appointmentNo>1</appointmentNo><doctorName>thomas collins</doctorName><patient>John Doe</patient><actualFee>7000.0</actualFee><discount>20</discount><discounted>5600.0</discounted><paymentID>eb83d9cc-0230-4dc8-a613-33b419cebbd7</paymentID><status>Settled</status></jsonObject></soapenv:Body></soapenv:Envelope>
Congratulations, you have successfully sent a message to the WSO2 ESB profile!
Defining a BPMN process
Click here to try it out!
In this section, a simple BPMN process prints a 'Hello World!' message when the process instance is initiated.
Download the HelloWorldServiceTask-1.0.0.jar
file from GitHub. This includes the defined BPMN process.
Copy the JAR file to the <EI_HOME>/lib
directory.
Start the BPS profile:
- In a new browser window or tab, open the EI-Business Process profile's management console:
https://localhost:9445/carbon/
- Log in to the management console using
admin
for both the username and password. - Download the
HelloWorld.bar
file from GitHub. - In the management console, navigate to the Main tab, click BPMN, and upload the
HelloWorld.bar
file. - Refresh the page to see the file you just added.
- Log in to the BPMN explorer using
https://localhost:9445/bpmn-explorer. Use
admin
for both the username and password. - Go to the PROCESS tab and click Start to start the Hello World Process.
- In the terminal, the
"Hello World ...!!!"
string is printed.
You have successfully defined a BPMN process and initiated it!
Other capabilities