This documentation is for WSO2 Enterprise Integrator version 6.0.0 . View documentation for the latest release in the 6.x.x family and the latest release in the 7.x.x family.

All docs This doc

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 

Code Block
languagexml
{
  "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"
}

 

However, the format of the message must be as follows to be compatible with the backend service.

 

Code Block
languagexml
{
  "patient": {
    "name": "John Doe",
    "dob": "1990-03-19",
    "ssn": "234-23-525",
    "address": "California",
    "phone": "8770586755",
    "email": "johndoe@gmail.com"
  },
  "doctor": "thomas collins",
  "hospital": "grand oak community hospital"
}

 

The client message format must be transformed to the back-end service message format within the In sequence.

Let's get started!

This tutorial contains the following sections:

Table of Contents

Creating the deployable artifacts

The Data Mapper mediator transforms the message within the In sequences. The Data Mapper mediator is a data mapping solution that can be integrated into a mediation sequence. It converts and transforms one data format to another, or changes the structure of the data in a message. 

  1. In WSO2 EI - Tooling, add a Data Mapper mediator just after the Property mediator in the In sequence of the API resource.

  2. Double click the Data Mapper mediator icon and provide the following name for the data mapping configuration file that will be created.

    • Configuration Name: RequestMapping

    Note

    The SampleServicesRegistry project is created at the time of creating the ESB WSO2 EI Solution project and will get auto picked here.

    Click OK. You view the data mapping editor.

  3. Create a JSON file by copying the following sample content of the request message sent to the API Resource, and save it in your local file system.

    Code Block
    languagexml
    {  "name": "John Doe",
      "dob": "1990-03-19",
      "ssn": "234-23-525",
      "address": "California",
      "phone": "8770586755",
      "email": "johndoe@gmail.com",
      "doctor": "thomas collins",
      "hospital": "grand oak community hospital"
    }
    Info

    You can  create a JSON schema manually for input and output using the Data Mapper Diagram editor.

  4. Right-click on the top title bar of the Input box and click Load Input  as shown below

  5. Select JSON as the Resource Type as shown below.

  6. Click the file system link in Select resource from, select the JSON file you saved in your local file system in step 5, and click Open
    You view the input format loaded in the Input box in the editor as shown below. 


    Anchor
    step 7
    step 7

  7.  Create another JSON file by copying the following sample content of the request message expected by the backend service, and save it in your local file system.  

    Code Block
    languagexml
    {
      "patient": {
        "name": "John Doe",
        "dob": "1990-03-19",
        "ssn": "234-23-525",
        "address": "California",
        "phone": "8770586755",
        "email": "johndoe@gmail.com"
      },
      "doctor": "thomas collins",
      "hospital": "grand oak community hospital"
    }
  8. Right-click on the top title bar of the Output box and click Load Output as shown below. 
    load output message format
  9. Select JSON as the resource type
  10. Click the file system link in Select resource from, select the JSON file you saved in your local file system in step 7, and click Open.  
    You view the input format loaded in the Output box in the editor as shown below. 

    Info

    Check the Input and Output boxes with the sample messages, to see if the element types (i.e. (Arrays, Objects and Primitive values) are correctly identified or not. Following signs will help you to identify them correctly. 

    • {} - represents object elements
    • [] - represents array elements
    • <> - represents primitive field values
    • A - represents XML attribute value
  11. Do the mapping by dragging arrows from field values in the input box to the relevant field values in the output box. The final mapping is as follows:
  12. Save and close the configuration.

  13. Go back to the Design View of the API Resource and select the Data Mapper Mediator and edit the following in the Properties tab:

    • Input Type: JSON
    • Output Type: JSON

  14. Save the REST API configuration.

We are now ready to package and deploy the C-App and send the request.

Deploying the Artifacts to WSO2 EI

Since we created a new Registry Resource project, this will need to be packaged into our existing C-App.

  1. Package the C-App names SampleServicesCompositeApplication project with the artifacts created. 

    Note

    Ensure the following artifact check boxes are selected in the Composite Application Project POM Editor.

    • SampleServices
      • HealthcareAPI
      • ClemencyEP
      • GrandOakEP
      • PineValleyEP
    • SampleServicesRegistry
  2. On the Servers tab, expand the WSO2 Carbon server, right-click SampleServicesCompositeApplication, and choose Redeploy. The Console window will indicate that the CApp has been deployed successfully.

    Tip

    If you do not have a server added in Eclipse, refer  this tutorial .

    Info

    You can also deploy the artifacts to the Enterprise Integrator using a  Composite Application Archive (CAR) file .

Sending requests to WSO2 EI

  1. Create a JSON file names request.json with the following request payload.

    Code Block
    languagexml
    {
    "name": "John Doe",
    "dob": "1990-03-19",
    "ssn": "234-23-525",
    "address": "California",
    "phone": "8770586755",
    "email": "johndoe@gmail.com",
    "doctor": "thomas collins",
    "hospital": "grand oak community hospital"
    }
  2. Open a command line terminal and execute the following command from the location where 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"

    Info

    This is derived from the URI-Template defined when creating the API resource.

    http://<host>:<port>/categories/{category}/reserve

    You will see the response as follows:

    Code Block
    languagexml
    {"appointmentNumber":2,
      "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":"1990-03-19",
           "ssn":"234-23-525",
           "address":"California",
           "phone":"8770586755",
           "email":"johndoe@gmail.com"},
      "fee":7000.0,
      "confirmed":false}

You have now explored how WSO2 EI can receive a message in one format and transform it into the format expected by the backend service using the Data Mapper mediator.