The Islamic University of Gaza
Faculty of Information Technology
First semester 2022/2023
Service-Oriented Software Engineering (SDEV 4314)
Developing a Travel Booking Composite Web Service
You are required to develop a travel booking composite web service through a BPEL process. The process is based on a number of web services and XML schemas and involves interactions with these partner services such as flight, hotel, car reservation, and credit checking. Particularly, you have to:
• Develop a web service (FlightService) that returns flight information requests coming from the BPEL process regarding flights of a particular flight operator. The service uses the RequestFlight schema (see below).
• Develop a web service (CarRentalService) that uses the car rental reservation schema (carRentalRequest.xsd) to reserve cars on the basis of a customer request coming through the BPEL process.
• Develop a web service (HotelReservationService) that uses the hotel reservation schema (hotelAvailabilityRequest.xsd) to reserve hotels on the basis of a customer request coming through the BPEL process.
• Develop a web service (CardProcessingService) on the basis of the card processing schema (creditCardProcessing.xsd). Typical operations should be -CreditCardSale- for credit card debit authorization, -DebitCardSale- for debit card debit authorization, -CancelCreditCardSale- for canceling a credit card sale, -CheckCardDebitStatus- for determining the current status of a credit card sale, -CreditCardUserDetails- for getting the details of a credit card user.
In order to develop the required composite process, you need to develop the following items:
- Define a schema for a flight availability request (FlightRequest.xsd) from the BPEL process that requests flight availability for a city pair on a specific date for a specific number and type of passengers. Optional request information can include: time or time window, connecting cities, client preferences, e.g., airlines, flight types, etc. The request can be narrowed to request availability for a specific airline, specific flight, or specific booking class on a specific flight.
- Define a schema for handling simple requests for the reservation of rental cars (carRentalRequest.xsd). The schema should assume that the customer has already decided to use a specific rental branch. It should then define all the information that is needed when requesting information about a car rental. The schema should include information such as rate codes, rate type, promotional descriptions, and so on, as well as rate information that had been supplied in a previous availability response, along with any discount number or promotional codes that may affect the rate. For instance, the customer may have a frequent renter number that should be associated with the reservation. Typically, rates are offered as either leisure rates or corporate rates. The schema should also define the rental period, as well as information on a distance associated with a particular rate, e.g., limited or unlimited miles per rental period, and customer preferences regarding the type of car and special equipment that can be included with the reservation of a rental car.
- Define a simple hotel availability request schema (hotelAvailabilityRequest) that provides the ability to search for hotel products available for booking by specific criteria that may include: dates, date ranges, price range, room types, regular and qualifying rates, and/or services and amenities. A request can also be made for a non-room product, such as banquets and meeting rooms. An availability request should be made with the intent to ultimately book a reservation for an event or for a room stay. The schema should allow a request for static property data published by the hotel, that includes information about the hotel facilities, amenities, services, etc., as well as dynamic (e.g. rate oriented) data. For example, a hotel may have a AAA rate, a corporate rate (which it does not offer all the time), or may specify a negotiated code as a result of a negotiated rate, which affects the availability and price of the rate.
- Define a schema for credit card processing and (PIN-based) debit card processing (creditCardProcessing.xsd). In order to process a credit card a
requester/merchant will need to have a valid requester account with the clearinghouse. A merchant account is a commercial bank account established by contractual agreement between a merchant and the clearing house and enables a merchant that provides shopping facilities to accept credit card payments from its customers. A merchant account is required to authorize transactions. A typical response for a credit card is authorized, declined, or cancelled. When the clearinghouse processes accredit card sales it returns a transaction identifier (TransID) only when a Credit Card Sale is authorized. If the merchant needs to credit or void a transaction the TransID of the original credit card sale will be required. For simplicity assume that one credit is allowed per sale and that a credit amount cannot exceed the original sale amount.
- WSDL defining the FlightService.
- WSDL defining the CarRentalService.
- WSDL defining the HotelReservationService.
- WSDL defining the CardProcessingService.
- WSDL defining the travel booking composite process.
- BPEL describing the composite process (the resulting composition).
- Other items as needed by your development approach such as schema-based XML files, data formats, etc.
Based on these items, an implementation of the services and the process composition are required. The composition should handle the process from the submission of the request for the travel booking up to returning the travel booking.
Note: You need to adopt a top-down and incremental development approach. That is, start from defining schemas to defining WSDLs of services, then implementing them up to defining BPEL and executing it.
- Software containing the above pieces (schemas, WSDLs, BPEL, and programs) and any used packages and libraries.
- A report documenting, explaining, illustrating, and discussing your development approach and how to install and use the software.
Instructor: Dr. Eng. Rebhi Soliman Baraka