The Travel Reservation Service is an example of real-life service for travel organization. An .xsd schema for the sample was taken from an existing travel agency. The process works as follows. It gets an itinerary from the client, examines it, and processes the itinerary to completion. By the end of the process the client has an airline, a vehicle and a hotel reserved. The partnerlink represents a client who sends an itinerarary to the process and then gets it back after procession. The partner link defines interaction with airline reservation partner service. This partner link has three operations: to receive a request for reservation from the process, to receive a message about cancellation of the request in case time-out occurs, and to send a message back to the process if the reservation is successful. The partner link defines interaction with vehicle reservation partner service. This partner link has three operations: to receive a request for reservation from the process, to receive a message about cancellation of the request in case time-out occurs, and to send a message back to the process if the reservation is successful. The partner link defines interaction with hotel reservation partner service. This partnerlink has three operations: to receive a request for reservation from the process, to receive a message about cancellation of the request in case time-out occurs, and to send a message back to the process if the reservation is successful. BPEL runtime uses correlation sets to route messages to the right process instance. Correlation set is made up of one or more property values. Properties in turn are defined in a WSDL file and get their value through property aliases (also defined in WSDL). Property aliases are the rules that tell the BPEL runtime how to map data from a message into a property value. The process waits for the incoming message to arrive. Correlation set is initiated with the data received in this activity. The defined correlation set is associated with several activities of the process. The Assign activity copies input data to four variables: output variable and three input variables that will be processed for airline, vehicle and hotel reservation. The If activity examines if the client has an airline reserved or not. If the airline is not reserved, the process will communicate with an appropriate partner and reserve it. not($ItineraryIn.itinerary/ota:ItineraryInfo/ota:ReservationItems/ota:Item/ota:Air) Sequence of actions that will be performed in case specified condition is met (if a client has no airline reservation). The activity calls a partner service for airline reservation. Correlation for the Invoke activity is used to verify that outbound message contains data that is consistent with the data found within specified correlation set instances. The process waits for the message to arrive or for a time-out to occur. If a message from airline reservation service arrives it is received and data about reservation are copied to the output variable. The activity uses a correlation set that has been initiated before. The correlation ensures that the message will arrive to the right process instance. In case the process doesn't get a response from the partner service in 20 seconds the request for the reservation is cancelled. 'P0Y0M0DT0H0M20S' $ReserveAirlineIn.itinerary/ota:ItineraryRef This If activity allows to reserve a vehicle in case the client hasn't one reserved. Vehicle reservation works quite similar to the airline reservation. not($ItineraryIn.itinerary/ota:ItineraryInfo/ota:ReservationItems/ota:Item/ota:Vehicle) 'P0Y0M0DT0H0M20S' $ReserveVehicleIn.itinerary/ota:ItineraryRef This If activity allows to reserve a hotel in case the client hasn't one reserved. Hotel reservation works quite similar to the airline and vehicle reservation. not($ItineraryIn.itinerary/ota:ItineraryInfo/ota:ReservationItems/ota:Item/ota:Hotel) 'P0Y0M0DT0H0M20S' $ReserveHotelIn.itinerary/ota:ItineraryRef The business process returns a message to the client.