Objective
To demonstrate the ability of a Fiorano REST application to interact with an end user by exposing a secured REST service which accepts HTTP POST requests at a URL and responds with a count of new records inserted into a database successfully.
Prerequisites
- Start Fiorano Enterprise Server (FES) and Fiorano Peer Server (FPS)
- Login to eStudio application
- Understand the basic menus and perspectives (panels) in eStudio application
- Add DB jars (ojdbc.jar) to System Library by following the steps mentioned in Add Resources to a Microservice. This is for the DB component to work seamlessly.
Scenario
- Configure RESTStub component to receive HTTP POST requests from RESTConsumer and process it as query configured in a DB component; bind DB schema to RESTStub and transform the routes between RESTStub and DB.
- Configure RESTConsumer component to send HTTP POST requests triggered using a Feeder component which adapts RESTConsumer schema.
- Use security settings (Basic HTTP Authentication / SSL security) for Peer Server Jetty profile, RESTStub and RESTConsumer in sequence.
How it Works
The REST service gets deployed in the jetty server running inside the peer server and whenever a rest client sends a request to the service, the request is available on the output port and the response can be routed back by connecting a route to the input port.
Components used
Setting up the Example
Configuring Peer Server Profile for Security
Stub component would be running in the FPS server. As SSL support and HTTP Authentication are provided for Jetty, configure the corresponding parameters (SSL configuration or Basic Authentication as per requirement) for Jetty in the FPS server profile.
For Basic Authentication settings as well as SSL security settings, changes are done in Properties of Jetty in FPS Profile. To navigate to this panel,
Open Profile Manager in eStudio and load the respective FPS profile
Navigate to Fiorano > Esb > Jetty > Jetty
In the Properties of Jetty section on the right side, under ComponentInstanceConfiguration section, enable the BasicAuthSupported property or SSLEnabled as the case may be. Below sections explain both of these configurations.
Basic Authentication
To configure the Jetty properties for Basic Authentication in the FPS server, enable the BasicAuthSupported property and provide location where RealmProperties file is saved.
SSL Configuration
To configure the Jetty properties for SSL Security in the FPS server, refer the Manage Jetty Security section to enable the SSLEnabled property and provide Keystore and Trustore values.
Configuring Server Event Process
Create an Event Process with name 'REST-POST_Server' to configure a server application with a DB component to raise query.
Configuring DB component
Use the DB component to store data and return result upon Insert Query Statement.
To configure DB component, perform the following actions in the REST-POST_Server event process:
- Under DB category in the Microservice Palette, drag the DB component to the Fiorano Orchestrator.
Double-click the component to open the Configuration Property Sheet (CPS).
In the Managed Connection Factory panel, click Database Configuration ellipsis button to configure DB Connection. Provide the credentials for the respective DB from which the table needs needs to be accessed.
Click OK and click the Test button present in the Managed Connection Factory panel to confirm successful connection. Click Next to move to the Interaction Configurations panel.
In the Interaction Configurations panel, click SQL Configuration ellipsis button to configure Insert SQL statement; provide Query Name: insert.
Click Finish to complete SQL Configuration.
- Click Finish in the Interaction Configurations panel to complete the DB Configuration.
Configuring RESTStub component
RESTStub component exposes Restful services in Fiorano environemnt. To configure RESTstub component, perform the following actions in eStudio application:
- In the REST-POST_Server event process, drag the RESTStub component from the Web category in Microservice palette to the Fiorano Orchestrator.
Double-click the component to open the Configuration Property Sheet (CPS).
- First screen in the CPS, that is, wizard (1 of 3) is used to define the service using a user interface for WADL. User can create a WADL manually by defining different aspects of the service or can load an existing WADL and edit the configurations.
Provide Service Name as 'Sample' with which the event process functionality is exposed as RESTful service. - Under Create/Edit WADL section, perform the following actions:
Bind DB input port and output port schemas to RESTStub
Click Schemas under Configuration tab.
In the Schemas Configuration section, click Add button and click Load from Port Schemas option
In the Select Port dialog box that pops-up, select 'IN_PORT'.
Similarly, select OUT_PORT also and click OK; both schemas get added under Schemas section.
Add POST method
Right-click GET node and select Remove Method option to remove the default method.
- Right-click resource under Resources node, go to Add Method and select POST option to add Post method.
Rename resource path to give a logical meaning to the scenario
Click resource node.
Under Resource Configuration tab, replace the default value of Path 'resourcePath' with 'insertData'.
Add request SQL element to Post node
Click the POST node.
Click the Add button under Request Configuration tab.
Click the ellipsis button under Representation tab.
In the Select Element pop-up, select "SQL_CFG_1" under Request element and click OK.
Add response SQL element to Post node
Right-click the POST node and click the Add Response option; Response node appears.
- Click the Response node
Click the Add button under Response Configuration tab.
Click the ellipsis button under Representation tab.
In the Select Element pop-up, select "SQL_CFG_1" under Response element and click OK.
Security Configuration in RESTStub
Click Next to navigate to the second screen: wizard(2 of 3). Here, SSL Configuration, HTTP Authentication Configuration and Additional Configuration can be done.
In this example, SSL Configuration and Basic Authentication under HTTP Authentication is being done one after the other. Do either of these two and move forward accordingly.
SSL Configuration
In SSL Configuration section, enable SSL by selecting the Use SSL option and provide.
Basic Authentication Configuration
In HTTP Authentication Configuration, enable HTTP authentication by selecting Use HTTP Authentication option. Provide the credentials as below:
- Type: Basic
- Username and Password: as provided in FPS Jetty profile.
Click Next and then Finish in the third screen, that is, wizard (3 of 3) to close the CPS and to save the configuration. The input and output ports gets generated.
Configuring Transformation
Connecting Ports Creating Routes
Connect the ports of the RESTStub and DB components in the following manner:
- Output Port of RESTStub component to the Input Port of DB component.
- Output Port of DB component to the Input Port of RESTStub component.
Route Transformation
To configure transformation between input and output ports of RESTStub and DB, perform the following actions in the Fiorano Orchestrator:
- Right-click route1, point to Configure Transformation and select Mapper Project to open Fiorano Mapper editor.
- In the Mapper Project, connect the values with the same names present in panels: Input Structures and Output Structures:
- Name
- ID
- Designation
- Click Save icon (or File > Save) to save the transformation configuration and close the Mapper Project editor.
- Similarly, go to the Mapper Project window for route2 as well and connect the following values:
- id
- UpdateCount
Save the mapping configuration as explained previously.
Launching the Server Event Process
WADL URL has to be copied from RESTStub component to use in RESTConsumer component that gets added in further steps; perform the following actions in the Fiorano Orchestrator:
Click Check Resource and Connectivity (CRC) icon (or press ALT+SHIFT+C) to check resource and connectivity.
- Click Run Event Process icon (ALT+SHIFT+R) to run the event process.
Right-click the RESTStub component and click Copy WADL URL option to copy the WADL URL.
Configuring Client Event Process
Create another Event Process with name REST-POST_Client to configure a client event application with a Feeder and Display.
Configuring RESTConsumer
RESTConsumer component serves as a client to access exposed services in Fiorano Environment. To configure RESTConsumer component and hence communicate with RESTStub which has exposed RESTservice, perform the following actions in the REST-POST_Client application:
- Add the RESTConsumer component from Web category in Microservice Palatte to the Fiorano Orchestrator.
- Double-click the component to open the Configuration Property Sheet (CPS).
- Perform the following actions in the wizard (1 of 3) panel:
- Enable Load WADL option; the From URL option below gets active/editable.
- Select From URL option and paste the WADL URL copied from RESTStub (previous section).
Click the Load WADL button to apply the RESTStub schemas. Schemas get populated in the below section in the panel.
Security Configuration in RESTConsumer
Click Next to navigate to the second screen: wizard(2 of 3). Here, SSL Configuration, HTTP Authentication Configuration and Additional Configuration can be done.
In this example, SSL Configuration and Basic Authentication under HTTP Authentication is being done one after the other. Do either of these two and move forward accordingly.
SSL Configuration
In SSL Configuration section, enable SSL by selecting the Use SSL option and provide the values as used in RESTStub SSL Configuration.
Basic Authentication Configuration
In HTTP Authentication Configuration, enable HTTP authentication by selecting Use HTTP Authentication option.
Provide the credentials as provided in RESTStub.
Click Next and then Finish in the third screen, that is, wizard (3 of 3) to close the CPS and to save the configuration. The input and output ports gets generated.
Configuring Feeder
- Add Feeder and Display components from the Util category in Microservice Palette into the REST-POST_Client orchestrator.
- Connect the ports of the RESTConsumer to the two components in the following manner:
- Output Port of Feeder component to the Input Port of RESTConsumer component.
- Output Port of RESTConsumer component to the Input Port of Display component.
- Double-click the Feeder component and click the Connected Port Schemas button in the Message Type Configuration panel. Select the last child node ('resource_POST_Request' in this example) in Connected ports pop-up to import RESTConsumer schema into the feeder and click OK.
- The Select Root Element text box gets populated and schema editor also gets populated with the RESTConsumer schema. Click Next.
- In Message Details Configuration panel, click Generate Sample to open XSD Sample Generation Dialog. Enter '1' in max text field under No. of Repeatable elements to be generated to reduce the number of samples generated to just one, and click OK.
- Click the Finish or Save and Close button to complete the Feeder configuration.
Running the Example
To see the REST-POST_Client Event Process running in conjunction with REST-POST_Server Event Process, perform the following actions in the REST-POST_Client Event Process:
- Click Check Resource and Connectivity icon (or press ALT+SHIFT+C) to check resource and connectivity.
- Click Run Event Process icon (ALT+SHIFT+R) to run the event process; Feeder and Display windows get opened.
- Provide the required column values (in this example, DEPTNO: 144, DNAME: KEN and LOC: US) in Feeder window and click Send.
- If the Insert query is successful, 'UpdateCount' appears as '1' in the Display window.
Reference
- Download REST POST Client and Server Example event processes and import it to the Event Process Repository in the Server Explorer in eStudio to understand the configuration used in this example and to execute the working sample.
- Please note that the component options used in this example are minimum, which helps you to get an overview of the application. To explore other options present in the RESTStub and RESTConsumer components, refer sections: RESTStub and RESTConsumer.