0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
59 Ansichten5 Seiten
CREATE database MODULE UpdateFlightTable CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN -- populate the environment with flight info from the database. SET Environment.Variables.EconomyClassRemain = CAST(Environment. Variables.TOTALECONOMIC AS INTEGER); -- loop through the request, counting the passengers and checkin g capacity.
CREATE database MODULE UpdateFlightTable CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN -- populate the environment with flight info from the database. SET Environment.Variables.EconomyClassRemain = CAST(Environment. Variables.TOTALECONOMIC AS INTEGER); -- loop through the request, counting the passengers and checkin g capacity.
Copyright:
Attribution Non-Commercial (BY-NC)
Verfügbare Formate
Als TXT, PDF, TXT herunterladen oder online auf Scribd lesen
CREATE database MODULE UpdateFlightTable CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN -- populate the environment with flight info from the database. SET Environment.Variables.EconomyClassRemain = CAST(Environment. Variables.TOTALECONOMIC AS INTEGER); -- loop through the request, counting the passengers and checkin g capacity.
Copyright:
Attribution Non-Commercial (BY-NC)
Verfügbare Formate
Als TXT, PDF, TXT herunterladen oder online auf Scribd lesen
BEGIN -- populate the environment with flight info from the database SET Environment.Variables = THE (SELECT T.* FROM Database.XMLFLIGHTTB AS T WHERE T.FLIGHTDATE = Root.XMLNSC.Reservation.Fli ghtDetails.FlightDate AND T.FLIGHTNO = Root.XMLNSC.Reservation.FlightD etails.FlightNumber); DECLARE ref REFERENCE TO Root.XMLNSC.Reservation.ListOfPassenger s.PassengerDetails[1]; -- track the remaining number of seats SET Environment.Variables.EconomyClassRemain = CAST(Environment. Variables.TOTALECONOMIC AS INTEGER); SET Environment.Variables.FirstClassRemain = CAST(Environment.Va riables.TOTALFIRST AS INTEGER); -- loop through the request, counting the passengers and checkin g capacity SET Environment.Variables.NoPassengers = 0; WHILE LASTMOVE(ref) DO -- check that the REFERENCE is still vali d IF ref.Class = 'F' THEN IF Environment.Variables.FirstClassRemain >= 1 T HEN SET Environment.Variables.FirstClassRema in = Environment.Variables.FirstClassRemain - 1; SET Environment.Variables.FIRSTCLASS = E nvironment.Variables.FIRSTCLASS + 1; SET Environment.Variables.NoPassengers = Environment.Variables.NoPassengers + 1; ELSE THROW USER EXCEPTION MESSAGE 2949 VALUES ('Number of passengers exceeds capacity'); END IF; END IF; IF ref.Class = 'Y' THEN IF Environment.Variables.EconomyClassRemain >= 1 THEN SET Environment.Variables.EconomyClassRe main = Environment.Variables.EconomyClassRemain - 1; SET Environment.Variables.ECONOMICCLASS = Environment.Variables.ECONOMICCLASS + 1; SET Environment.Variables.NoPassengers = Environment.Variables.NoPassengers + 1; ELSE THROW USER EXCEPTION MESSAGE 2949 VALUES ('Number of passengers exceeds capacity'); END IF; END IF; MOVE ref NEXTSIBLING REPEAT NAME; -- increment the loop condition END WHILE; -- update the database with the decreased seat availability for the flight UPDATE Database.XMLFLIGHTTB AS T SET ECONOMICCLASS = Environment.Variables.ECONOMICCLASS, TOTALECONOMIC = Environment.Variables.EconomyCla ssRemain, FIRSTCLASS = Environment.Variables.FIRSTCLASS, TOTALFIRST = Environment.Variables.FirstClassRem ain WHERE T.FLIGHTDATE = Root.XMLNSC.Reservation.Fli ghtDetails.FlightDate AND T.FLIGHTNO = Root.XMLNSC.Reservation.FlightD etails.FlightNumber; RETURN TRUE; END; END MODULE; CREATE COMPUTE MODULE UpdatePassengerTable CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; DECLARE I INTEGER 1; DECLARE J INTEGER Environment.Variables.NoPassengers; DECLARE resno CHARACTER; WHILE I <= J DO -- loop through the passengers SET Environment.Variables.RESERVATIONSEQNO = Environment .Variables.RESERVATIONSEQNO + 1; -- generate the reservation number (unique) SET resno = (InputRoot.XMLNSC.Reservation.FlightDetails. FlightNumber || InputRoot.XMLNSC.Reservation.Fl ightDetails.FlightDate || CAST (Environment.Variables.RES ERVATIONSEQNO AS CHAR)); -- insert a row into the database to track this reservat io
INSERT INTO Database.XMLPASSENGERTB (LASTNAME, FIRSTNAME
, FLIGHTNO, FLIGHTDATE, CLASSTYPE, RESERVATIONNO) VALUES(InputRoot.XMLNSC.Reservation.ListOfPassen gers.PassengerDetails[I].LastName, InputRoot.XMLNSC.Reservation.ListOfPa ssengers.PassengerDetails[I].FirstName, InputRoot.XMLNSC.Reservation.FlightDe tails.FlightNumber, InputRoot.XMLNSC.Reservation.FlightDe tails.FlightDate, InputRoot.XMLNSC.Reservation.ListOfPa ssengers.PassengerDetails[I].Class, resno); -- report the reservation number in the output message SET OutputRoot.XMLNSC.Reservation.ListOfPassengers.Passe ngerDetails[I].ReservationNumber = resno; SET I = I + 1; END WHILE; -- update the sequence number in the database UPDATE Database.XMLFLIGHTTB AS T SET RESERVATIONSEQNO = Environment.Variables.RESERVATION SEQNO; RETURN TRUE; END; END MODULE; CREATE FILTER MODULE MultipleOrSingleMessage CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN IF Root.XMLNSC.Reservation.Request = 'M' THEN RETURN TRUE; END IF; IF Root.XMLNSC.Reservation.Request = 'S' THEN RETURN FALSE; END IF; RETURN UNKNOWN; END; END MODULE; CREATE COMPUTE MODULE BuildSingleMessage CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; SET OutputRoot.XMLNSC.Reservation = NULL; SET OutputRoot.XMLNSC.PassengerReservationResponse.ListOfConfirm ations.ClassF.Confirmation[] = (SELECT X.FirstName, X.LastName AS Surname, X.Reservatio nNumber FROM InputRoot.XMLNSC.Reservation.ListOfPassenge rs.PassengerDetails[] AS X WHERE UPPER(X.Class) = 'F'); SET OutputRoot.XMLNSC.PassengerReservationResponse.ListOfConfirm ations.ClassY.Confirmation[] = (SELECT X.FirstName, X.LastName AS Surname, X.Reservatio nNumber FROM InputRoot.XMLNSC.Reservation.ListOfPassenge rs.PassengerDetails[] AS X WHERE UPPER(X.Class) = 'Y'); RETURN TRUE; END; END MODULE; CREATE COMPUTE MODULE PropagateMultipleMessages CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN DECLARE I INTEGER 1; DECLARE J INTEGER Environment.Variables.NoPassengers; WHILE I <= J DO SET OutputRoot = InputRoot; SET OutputRoot.XMLNSC.Reservation = NULL; SET OutputRoot.XMLNSC.PassengerReservationResponse.ListO fConfirmations.Confirmation = InputRoot.XMLNSC.Reservation.ListOfPassengers.Pa ssengerDetails[I]; PROPAGATE; SET I = I + 1; END WHILE; RETURN FALSE; -- returning false stops automatic propagation END; END MODULE; -- ************************************************ -- * ESQL for the XML_PassengerQuery message flow -- ************************************************ CREATE COMPUTE MODULE DecideOnQuery CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; IF InputRoot.XMLNSC.PassengerQuery.ReservationNumber <> '' THEN SET OutputLocalEnvironment.Destination.RouterList.Destin ationData[1].labelname = 'SinglePassenger'; ELSE SET OutputLocalEnvironment.Destination.RouterList.Destin ationData[1].labelname = 'AllReservations'; END IF; RETURN TRUE; END; END MODULE; CREATE COMPUTE MODULE GetPassengerInformation CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; SET OutputRoot.XMLNSC.PassengerQuery = NULL; -- populate the environment with passenger info from the databas e SET Environment.Variables = THE (SELECT T.* FROM Database.XMLPASSENGERTB AS T WHERE T.RESERVATIONNO = InputRoot.XMLNSC.Passeng erQuery.ReservationNumber); -- populate the output message with info from the database query CREATE FIELD OutputRoot.XMLNSC.PassengerInfoResponse.PassengerIn fo; DECLARE outpass REFERENCE TO OutputRoot.XMLNSC.PassengerInfoResp onse.PassengerInfo; SET outpass.ReservationNumber = Environment.Variables.RESERVATIO NNO; SET outpass.FirstName = Environment.Variables.FIRSTNAME; SET outpass.LastName = Environment.Variables.LASTNAME; SET outpass.FlightNumber = Environment.Variables.FLIGHTNO; SET outpass.Date = Environment.Variables.FLIGHTDATE; SET outpass.Class = Environment.Variables.CLASSTYPE; RETURN TRUE; END; END MODULE; CREATE COMPUTE MODULE GetReservationsInformation CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; SET OutputRoot.XMLNSC.PassengerQuery = NULL; -- populate the environment with reservations info from the data base SET Environment.Variables.Reservation[] = (SELECT T.* FROM Database.XMLPASSENGERTB AS T WHERE T.FIRSTNAME = InputRoot.XMLNSC.PassengerQu ery.FirstName AND T.LASTNAME = InputRoot.XMLNSC.PassengerQuery .LastName); -- populate the output message with info from the database query CREATE FIELD OutputRoot.XMLNSC.PassengerInfoResponse.ListOfReser vations; DECLARE outres REFERENCE TO OutputRoot.XMLNSC.PassengerInfoRespo nse.ListOfReservations; DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(Environment.Variables.*[]); WHILE I <= J DO SET outres.Reservation[I].FlightNumber = Environment.Var iables.Reservation[I].FLIGHTNO; SET outres.Reservation[I].Date = Environment.Variables.R eservation[I].FLIGHTDATE; SET outres.Reservation[I].Class = Environment.Variables. Reservation[I].CLASSTYPE; SET I = I + 1; END WHILE; RETURN TRUE; END; END MODULE; -- ************************************************ -- * ESQL for the XML_FlightQuery message flows -- ************************************************ CREATE COMPUTE MODULE GetFlightDetails CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; SET OutputRoot.XMLNSC.FlightQuery = NULL; CREATE FIELD OutputRoot.XMLNSC.Flight; DECLARE outflight REFERENCE TO OutputRoot.XMLNSC.Flight; DECLARE query REFERENCE TO InputRoot.XMLNSC.FlightQuery; -- populate the output message with flight info from the databas e SET OutputRoot.XMLNSC.Flight[] = (SELECT T.* FROM Database.XMLFLIGHTTB AS T WHERE T.FLIGHTNO = query.FlightNumber AND T.FLIGHTDATE = query.FlightDate); SET outflight.STARTPOINT = TRIM(outflight.STARTPOINT); SET outflight.ENDPOINT = TRIM(outflight.ENDPOINT); RETURN TRUE; END; END MODULE; CREATE COMPUTE MODULE GetPassengerDetails CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; SET OutputRoot.XMLNSC.FlightQuery = NULL; CREATE FIELD OutputRoot.XMLNSC.ListOfPassengers; DECLARE outpass REFERENCE TO OutputRoot.XMLNSC.ListOfPassengers; DECLARE query REFERENCE TO InputRoot.XMLNSC.FlightQuery; -- populate the output message with passenger info from the data base SET