Abstract:
A computer readable storage medium includes executable instructions to receive an input message specifying a query identifier and query parameters. A query definition specified by the query identifier is retrieved. The query parameters are mapped in accordance with the query definition to form a query. The query is passed to a semantic layer with semantically dynamic objects. Query results are received from the semantic layer. The query results are mapped to a specified web service interface to form an output message.

Description:
CROSS REFERENCE TO RELATED APPLICATION 
     This application claims the benefit U.S. Provisional Patent Application 60/808,860, filed May 26, 2006, entitled “Apparatus and Method for Querying Databases Via a Web Service”, the contents of which are incorporated herein by reference. 
    
    
     BRIEF DESCRIPTION OF THE INVENTION 
     This invention relates generally to database access techniques. More particularly, this invention relates to a web service based technique for querying databases. 
     BACKGROUND OF THE INVENTION 
     Business Objects of San Jose, Calif. has developed a widely deployed relational database access system that uses semantically dynamic objects. The technology is known as the Business Objects semantic layer. The technology is described in U.S. Pat. No. 5,555,403, which is incorporated herein by reference. The Business Objects semantic layer obviates the need for a user to master the various subtleties of existing query languages when writing database queries. 
     A web service is a software system designed to support interoperable machine-to-machine interaction over a network. A web service has an interface that is specified in a format such as the Web Service Description Language (WSDL). Other systems interact with the web service in a manner prescribed by the interface using messages, which may be enclosed in a container, such as Simple Object Access Protocol (SOAP), which is a protocol for exchanging eXtensible Markup Language (XML) messages over a computer network. SOAP forms the foundation layer of the web service stack, providing a basic messaging framework that more abstract layers can build on. 
     Web service messages are typically conveyed using the Hyper Text Transport Protocol (HTTP) and normally comprise XML in conjunction with other Web-related standards. Software applications written in various programming languages and running on various platforms can use web services to exchange data over computer networks, such as the Internet. 
     It would be desirable to expand access to database semantic layers through web services. 
     SUMMARY OF THE INVENTION 
     The invention includes a computer readable storage medium with executable instructions to receive an input message specifying a query identifier and query parameters. A query definition specified by the query identifier is retrieved. The query parameters are mapped in accordance with the query definition to form a query. The query is passed to a semantic layer with semantically dynamic objects. Query results are received from the semantic layer. The query results are mapped to a specified web service interface to form an output message. 
     The invention also includes a computer readable storage medium with executable instructions to specify a web service query and associate semantically dynamic objects with the web service query. A web service interface is built for the web service query, which specifies a query method, a query identifier, a query input definition and a query output definition. 
    
    
     
       BRIEF DESCRIPTION OF THE FIGURES 
       The invention is more fully appreciated in connection with the following detailed description taken in conjunction with the accompanying drawings, in which: 
         FIG. 1   a  illustrates a system configured in accordance with an embodiment of the invention. 
         FIG. 1   b  is a more detailed view of components of  FIG. 1 . 
         FIG. 1   c  is a more detailed view of components of  FIG. 1 . 
         FIG. 2  illustrates login operations that may be utilized in accordance with an embodiment of the invention. 
         FIG. 3  illustrates Query as a Web Service (QaaWS) processing performed in accordance with an embodiment of the invention. 
         FIG. 4  illustrates QaaWS consumption processing performed in accordance with an embodiment of the invention. 
         FIGS. 5-14  illustrate Graphical User Interfaces (GUIs) that may be utilized to implement operations of the invention. 
     
    
    
     Like reference numerals refer to corresponding parts throughout the several views of the drawings. 
     DETAILED DESCRIPTION OF THE INVENTION 
     The invention includes a tool, which is termed “Query as a Web Service” (hereinafter QaaWS), which allows users to create Web Services based on semantic layer universes associated with a data source. These Web Services can be used by other users as input to their applications. QaaWS is based on standard W3C specifications such as SOAP, WSDL and XML. 
       FIG. 1  illustrates a system  100  configured in accordance with an embodiment of the invention. The system  100  includes a client or user side  102  and a server side  104 . The server side  104  includes a generic web service  106 , which accesses a repository  108 . The web service  106  also communicates with a semantic query module  110 , which accesses a semantic layer  112 . The semantic layer  112  subsequently applies a query to the database  114 . The semantic layer  112  transports the query result  116  back to the web service  106 . 
     On the user side  102 , a user application  120  includes a query definition module  122 . In one embodiment, the query definition module  122  is configured to directly access the semantic layer  112  in a conventional manner. In accordance with an embodiment of the invention, the query definition module  122  is also configured to generate Query as a Web Service (QaaWS) content in accordance with a web service description language (WSDL)  124 . The content is applied to a QaaWS integration module  126 . A QaaWS data set  123  is also applied to a repository  108 . A QaaWS integration module  126  receives the QaaWS WSDL content  124  and communicates with a user application  128 , which includes a query consumer module  130 , which generates a SOAP input message  132 , which is applied to the web service  106 . 
       FIG. 1A  illustrates that the query definition module  122  may be implemented with a user interface  140  and a QaaWS builder module  142  to build the QaaWS data set  123  and QaaWS WSDL  124 . In one embodiment, the query definition module  122  accesses a semantic layer communication application program interface (API)  144 , which generates global parameter queries  146 , which are applied to the semantic layer  112  and ultimately the database  114 . This processing produces query semantic parameters  148 . 
     Each QaaWS data set has a query identifier and a QaaWS definition from which a QaaWS WSDL file may be inferred. The QaaWS WSDL file (QWF) is a general definition of the elements to be considered for building an application which will consume the QaaWS at the user side. 
     The QaaWS WSDL file  124  comprises a query method, a query identifier, a query input/output definition, and SOAP methods, which correspond to the ports and methods for connection to the web service. 
     In order to create a QaaWS, the Query Definition User Interface  140  first connects to the Semantic Layer  112  to get the universe list as well as business objects associated with the database  114 . The user may then make on-screen selections of database elements and filters in order to describe the intended query in the form of a query specification. 
     The QaaWS Builder sends the query specification to the Semantic Layer  112  by means of a Semantic Layer Communication API  144 . The Semantic Layer  112  resolves the query semantic parameters (QSP) for defining the query definition stored in the QaaWS Data Set  123 . The QaaWS Builder  142  further generates the QaaWS WSDL file  124  from the query definition, as well as the query identifier in order to complete the QaaWS Data Set  123 . 
     The QaaWS WSDL file  124  may be stored within the QaaWS Data Set  123  within the repository  108 , or it may be stored elsewhere on the user side. Either way, the QaaWS WSDL file  124  may be accessed by a QaaWS Integration Module  126  on the user side, for implementing the QaaWS in a user application as a Query Consumer Module  130 . 
     The Query Consumer Module  130  communicates with a Generic Web Service  106  on the server side by means of SOAP input messages  132  formatted according to the QaaWS WSDL file  124 . The Generic Web Service  106  insures the communication with the Semantic Layer  110  for the processing of a Semantic Query (SQ), which returns a Query Result  116 . 
     As shown on  FIG. 1   b , upon reception of a SOAP input message  132 , the Generic Web Service  106  accesses the QaaWS Definition  160  in the Query Data Set (QDS) within the Repository  108  by means of the query identifier contained in the SOAP input message. 
     The Generic Web Service  106  then maps the query parameters (within the SOAP input message) to the QaaWS Definition and parameters  162  in a Semantic Layer Communication API  164 , which submits the Semantic Query  166  to the Semantic Layer  110 . 
     In one embodiment, the Semantic Layer Communication API  164  is implemented as a Report Engine software developer kit (SDK), which selectively submits the QaaWS Definition to the Semantic Layer  110 . 
     As such, the Semantic Query may not be directly processed by the Semantic Layer, which returns a message to the Report Engine SDK asking for the missing prompt parameters. The Report Engine SDK maps the query parameters in the Semantic Query, which is processed by the Semantic Layer  110 . This implementation of the Semantic Layer Communication API constitutes a Query Resolution Function, which is further discussed in connection with  FIG. 4 . However, the Semantic Layer Communication API  164  could be implemented differently, by mapping the query parameters to the QaaWS definition  162  prior to sending the Semantic Query  166 , so that it may be processed directly by the Semantic Layer  110 . 
     The Semantic Layer Communication API  164  receives a Result Data Set  168 , which is transmitted to the Generic Web Service  106  in the form of an Output Data Set formatted according to the QaaWS WSDL file. 
     The Generic Web Service  106  then transmits the Output Data Set to the Query Consumer Module  130  by means of a SOAP output message  134 . The Query Result (QR) is then accessible to an interface at the user side, which may be a user, or another application. 
     The “Query as a Web Service” includes at least two components:
         A client component, where users may create and publish QaaWS. The client component may be installed on several machines that can access and share the same Query as a Web Service catalog stored on the server.   A server component that stores the Query as a Web Service catalog and hosts the published Web Services. The client component communicates with the server components via Web Services.       

     Three procedures may be used to create and publish a Query as a Web Service:
         1. Login to the application ( FIG. 2 ),   2. Create the query ( FIG. 3 ),   3. Publish the query ( FIG. 3 )       

     With reference to  FIG. 2 , logging into the application  200  includes defining a system host from a pre-existing list or by adding a new host  202 .  FIG. 5  illustrates a GUI  500  that may be used to add a new host, by selecting button  502 . The system host may be defined through a service URL, as shown in  FIG. 6 . The service URL should be associated with a correct port identifier. Then, the list of system hosts is updated, as shown in  FIG. 7 . 
     Returning to  FIG. 2 , user credentials are then selected  204 . A credentials dialog box, such as shown in  FIG. 8 , may thereafter be used for password checking, if appropriate. This completes the login process  206 . 
       FIG. 3  illustrates the creation of a QaaWS  300 . The operator may then be supplied a field to enter a name for the Query as a Web Service  302 . The GUI of  FIG. 9  may be used to implement this operation. Character restrictions may apply. The Web Service Description box permits to enter text in natural language that will help operators to reuse the query. Next, a list of system universes may be supplied.  FIG. 10  illustrates a GUI to implement this operation. The operator selects a universe  304 . 
     A query panel may then appear.  FIG. 11  illustrates a Business Objects Query Panel to implement this operation. The operator may drag and drop objects from the left pane  1100  into the Result Objects pane  1102  and the Filter Objects pane  1104  to create a query, which corresponds to block  306  of  FIG. 3 . 
     In the filter objects pane, the filter may be selected either as a “Condition” or as a “Prompt”. A condition is an expression based on operators and constants. A prompt is an expression using a variable, which the user will define later, e.g. at runtime. 
       FIG. 12  illustrates an Answer prompts dialog box. This dialog box allows one to select prompts to redefine. The modified values may be confirmed by clicking the OK button.  FIG. 13  illustrates a sample of the values the Web Services will send back. 
     This results in metadata forming a QaaWS definition, which is submitted to a semantic layer, which is operation  308  of  FIG. 3 . The semantic layer checks that the metadata defines a valid query and identifies the prompts existing therein. 
     As also shown in  FIG. 13 , a preview of the Query as a Web Service may appear, which corresponds to block  310  of  FIG. 3 . In one embodiment, the preview includes a Sample of data plus the Web Services input and output parameters:
         the Web Services Input Parameters represent the input parameters of the created Web Services. The input parameters are linked to the query panel prompts.   the Web Services Output Parameters represent the output parameters of the created Web Services. The output parameters are linked to Result Objects the operator has put in the query panel and they are expressed as a result set.       

     Clicking the “Publish” button within  FIG. 13  results in the publishing of the QaaWS, which corresponds to block  312  of  FIG. 3 . A WSDL for the QaaWS definition is then built  312 . The creation of the Query as a Web Service is now completed  316 . It is stored on the Server and may now be used to create reports. 
     In short, metadata is created, which corresponds to the operator&#39;s selections in the query panel of  FIG. 11 . Basically, the metadata is configured to be directly understood by the semantic layer. The semantic layer responds by:
         identifying the variables or “prompts” in the query Input Parameters, returning the types of the query Output Parameters.   In the case of a variable or prompt, a portion of XML language is established.       

     This may be viewed as modeling the query. The model corresponds to a mapping of the query as entered into suitable query data for the semantic layer. A query comprises result objects and a logical tree of conditions. For example, the result object may be Year, Quarter, Product Line, Revenue and the logical tree of conditions may be (Country=&lt;&lt;France&gt;&gt;). 
     The Prompt( ) function corresponds to prompting the user to define a value (or more) for a variable. Upon usage of the query, the operator will have to define value(s) for that variable (“resolve that variable”) before the query results can be obtained. 
     The invention includes modelling input parameter definitions. The correspondence between the query and the input parameters may be mapped as follows:
         1—Each prompt is mapped to an XSD element. An XSD is an XML schema instance.   2—The cardinality of that XSD element is calculated using the &lt;&lt;prompt&gt;&gt; properties. If the prompt accepts one or more values the cardinality will be &lt;&lt;unbounded&gt;&gt;. By contrast, if the prompt accepts a single value only the cardinality will be 1.   3—The name of the XSD element corresponds to the name of the prompt to be encoded, substituting reserved characters with ‘   ’ (underscore), as appropriate.   4—The XSD type of the XSD element corresponds to the type of the prompt, as returned by the semantic layer. In the example (B.O. Semantic Layer), the current type may be Numeric, AlphaNumeric and Date, which will be mapped to XSD type string, double or data time.   5—The XML namespace corresponds to the unique ID of the Web Service under creation.       

     Output parameter definitions may also be modelled. The correspondence between the query and the output parameters is mapped as follows
         1—Each output object is mapped to an XSD element having a given cardinality.   2—The name of the element corresponds to the name of the output object to be encoded, substituting reserved characters with (underscore), as appropriate.   3—The XSD type of the XSD element corresponds to the type of the output object, as returned by the semantic layer. In the example (B.O. semantic layer), the type may be Numeric, AlphaNumeric and Date, which will be mapped to XSD type string, double or data time.   4—The AML namespace corresponds to the unique ID of the Web Service under creation.       

     The Web Service may be “consumed”, i.e., used in an application program that is WSDL aware. This may be done simply by copying the URL and pasting it in the application. 
       FIG. 4  illustrates an initial operation of consuming a QaaWS  400 . These operations include:
         the Consumer Sends a SOAP Input message with Query identifier and Query Parameters  402 ;   the Generic Web Service or GWS gets the Query Definition from Repository R, according to the Query identifier of the QaaWS  404 ;   the Generic Web Service or GWS maps the parameters of the Query, using the Query Definition  406 ;   the Generic Web Service or GWS calls the Query Resolution Function (QRF) with mapped Query Definition and Query Parameters to Semantic Layer  408 ;   the Semantic Layer processes the Query with the database DB and outputs corresponding Query Results  410 ;   the Generic Web Service or GWS maps the Query Results into an XML format defined by the WSDL for the results and then returns it to the Consumer as a SOAP output message  412 . This forms the end  414 .       
     On the user side, the designer may manage the created QaaWS. When launching the Query as a Web Service, the Query Catalogue List appears in the left pane. This includes all the queries the operator has created. Queries as a Web Service may be managed from the Query Catalogue list by performing one or more of the following actions:
         Viewing Query as a Web Service properties,   Modifying a Query as a Web Service, and   Deleting a Query as a Web Service.       

     Later, the properties of a Query as a Web Service may be viewed by clicking on that Query as a Web Service in the Query as a Web Services Catalog, as shown in  FIG. 14 . By clicking the WSDL URL, one opens the WSDL in Internet Explorer. More precisely, to view the properties of a Query as a Web Service, click on the name of the Query. Its properties appear in the right pane. 
     To modify a Query as a Web Service
         1. In the Query Catalog, click on the Query as a Web Service Name   2. Click the Edit button
 
The Query as a Web Service appears in the wizard where it may be modified in substantially the same manner as described above (Creating, Previewing and Publishing a Query as a Web Service).
       

     To delete a Query as a Web Service
         1. In the Query Catalog, click on the Query as a Web Service name.   2. Click Delete.       

     The invention is implemented in software code accessible on any appropriate computer-readable medium. The expression “computer-readable medium” includes a storage medium such as magnetic or optic. Embodiments of the invention include:
         the software code for creating and publishing a QaaWS;   the software code for consuming a QaaWS, and   the software code for the Generic Web Server and the Semantic Layer APIs.       

     Exhibit 1 contains exemplary WSDL methods and corresponding code and query definitions according to an embodiment of the invention, as well as exemplary SOAP input and output messages. 
     An embodiment of the present invention relates to a computer storage product with a computer-readable medium having computer code thereon for performing various computer-implemented operations. The media and computer code may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well known and available to those having skill in the computer software arts. Examples of computer-readable media include, but are not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute program code, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer code include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment of the invention may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment of the invention may be implemented in hardwired circuitry in place of, or in combination with, machine-executable software instructions. 
     The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that specific details are not required in order to practice the invention. Thus, the foregoing descriptions of specific embodiments of the invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed; obviously, many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, they thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the following claims and their equivalents define the scope of the invention. 
     
       
         
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
           
               
                   
               
               
                 Exhibit 1 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 E1.1 
                  queryasaservice (wsdl) 
               
             
          
           
               
                   
                  runQueryAsAService 
               
             
          
           
               
                 E1.2 
                 &lt;?xml version=“1.0” encoding=“UTF-8”?&gt; 
               
             
          
           
               
                   
                 &lt;!-- 
               
               
                   
                 Copyright (c) 2006 Business Objects 
               
               
                   
                 --&gt; 
               
             
          
           
               
                 E1.3 
                 &lt;definitions 
               
             
          
           
               
                   
                 xmlns:http=“http://schemas.xmlsoap.org/wsdl/http/” 
               
               
                   
                 xmlns:soap=“http://schemas.xmlsoap.org/wsdl/soap/” 
               
               
                   
                 xmlns:s=“http://www.w3.org/2001/XMLSchema” 
               
               
                   
                 xmlns:s0=“MyQueryID” xmlns:tnsl=“dsws.businessobjects.com” 
               
               
                   
                 targetNamespace=“MyQueryID” 
               
               
                   
                 xmlns=“http://schemas.xmlsoap.org/wsdl/” 
               
               
                   
                 name=“queryasaservice”&gt; 
               
             
          
           
               
                 E1.4 
                 &lt;!-- - - - - - - - - --&gt; 
               
             
          
           
               
                   
                 &lt;!-- QueryAsAServiceType --&gt; 
               
               
                   
                 &lt;!-- - - - - - - - - --&gt; 
               
               
                   
                 &lt;types&gt; 
               
               
                   
                 &lt;s:schema elementFormDefault=“qualified” 
               
               
                   
                 targetNamespace=“MyQueryID”&gt; 
               
               
                   
                 &lt;s:element name=“runQueryAsAService”&gt; 
               
             
          
           
               
                   
                 &lt;s:complexType&gt; 
               
             
          
           
               
                   
                 &lt;s:sequence&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“login” type=“s:string”/&gt; 
               
               
                   
                 &lt;s:element name=“password” 
               
             
          
           
               
                   
                 type=“s:string”/&gt; 
               
             
          
           
               
                 E1.4a 
                 &lt;s:element name=“Which_Country_” 
               
             
          
           
               
                   
                 type=“s:string” /&gt; 
               
             
          
           
               
                   
                 &lt;/s:sequence&gt; 
               
             
          
           
               
                   
                 &lt;/s:complexType&gt; 
               
             
          
           
               
                   
                 &lt;/s:element&gt; 
               
             
          
           
               
                 E1.5 
                 &lt;s:complexType name=“Row”&gt; 
               
             
          
           
               
                   
                 &lt;s:sequence&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“Year” type=“s:string”/&gt; 
               
               
                   
                 &lt;s:element name=“Quarter” 
               
             
          
           
               
                   
                 type=“s:string”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“Service_Line” 
               
             
          
           
               
                   
                 type=“s:string”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“Revenue” 
               
             
          
           
               
                   
                 type=“s:double”/&gt; 
               
             
          
           
               
                   
                 &lt;/s:sequence&gt; 
               
             
          
           
               
                   
                 &lt;/s:complexType&gt; 
               
               
                   
                 &lt;s:complexType name=“Table”&gt; 
               
             
          
           
               
                   
                 &lt;s:sequence&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“row” minOccurs=“0” 
               
             
          
           
               
                   
                 maxOccurs=“unbounded” type=“s0:Row”/&gt; 
               
             
          
           
               
                   
                 &lt;/s:sequence&gt; 
               
             
          
           
               
                   
                 &lt;/s:complexType&gt; 
               
             
          
           
               
                 E1.5a 
                  &lt;s:element name=“runQueryAsAServiceResponse”&gt; 
               
             
          
           
               
                   
                 &lt;s:complexType&gt; 
               
             
          
           
               
                   
                 &lt;s:sequence&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“message” 
               
             
          
           
               
                   
                 type=“s:string”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“creatorname” 
               
             
          
           
               
                   
                 type=“s:string”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“creationdate” 
               
             
          
           
               
                   
                 type=“s:dateTime”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“creationdateformated” 
               
             
          
           
               
                   
                 type=“s:string”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“description” 
               
             
          
           
               
                   
                 type=“s:string”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“universe” 
               
             
          
           
               
                   
                 type=“s:string”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“queryruntime” 
               
             
          
           
               
                   
                 type=“s:long”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“fetchedrows” 
               
             
          
           
               
                   
                 type=“s:long”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“numberofexecution” 
               
             
          
           
               
                   
                 type=“s:long”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“maxfetchedrows” 
               
             
          
           
               
                   
                 type=“s:long”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“avgqueryruntime” 
               
             
          
           
               
                   
                 type=“s:long”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“avgfetchedrows” 
               
             
          
           
               
                   
                 type=“s:long”/&gt; 
               
             
          
           
               
                   
                 &lt;s:element name=“table” type=“s0:Table”/&gt; 
               
             
          
           
               
                   
                 &lt;/s:sequence&gt; 
               
             
          
           
               
                   
                 &lt;/s:complexType&gt; 
               
             
          
           
               
                   
                 &lt;/s:element&gt; 
               
               
                   
                 &lt;/s:schema&gt; 
               
               
                   
                 &lt;/types&gt; 
               
             
          
           
               
                 E1.6 
                 &lt;!-- - - - - - - - - - - --&gt; 
               
             
          
           
               
                   
                 &lt;!-- Operations messages --&gt; 
               
               
                   
                 &lt;!-- - - - - - - - - - - --&gt; 
               
               
                   
                 &lt;message name=“runQueryAsAServiceSoapIn”&gt; 
               
             
          
           
               
                   
                 &lt;part name=“parameters” 
               
             
          
           
               
                   
                 element=“s0:runQueryAsAService”/&gt; 
               
               
                   
                 &lt;/message&gt; 
               
               
                   
                 &lt;message name=“runQueryAsAServiceSoapOut”&gt; 
               
             
          
           
               
                   
                 &lt;part name=“parameters” 
               
             
          
           
               
                   
                 element=“s0:runQueryAsAServiceResponse”/&gt; 
               
               
                   
                 &lt;/message&gt; 
               
             
          
           
               
                 E1.7 
                 &lt;!-- - - - - - - - - - - --&gt; 
               
             
          
           
               
                   
                 &lt;!-- port Type messages --&gt; 
               
               
                   
                 &lt;!-- - - - - - - - - - - --&gt; 
               
               
                   
                 &lt;portType name=“QueryAsAServiceSoap”&gt; 
               
             
          
           
               
                   
                 &lt;operation name=“runQueryAsAService”&gt; 
               
             
          
           
               
                   
                 &lt;documentation&gt;Get Web Service Provider server 
               
             
          
           
               
                   
                 info&lt;/documentation&gt; 
               
             
          
           
               
                   
                 &lt;input message=“s0:runQueryAsAServiceSoapIn”/&gt; 
               
               
                   
                 &lt;output message=“s0:runQueryAsAServiceSoapOut”/&gt; 
               
             
          
           
               
                   
                 &lt;/operation&gt; 
               
             
          
           
               
                   
                 &lt;/portType&gt; 
               
             
          
           
               
                 E1.8 
                 &lt;!-- - - - - - - - - - - --&gt; 
               
             
          
           
               
                   
                 &lt;!-- Binding --&gt; 
               
               
                   
                 &lt;!-- - - - - - - - - - - --&gt; 
               
               
                   
                 &lt;binding name= “QueryAsAServiceSoap” 
               
               
                   
                 type=“s0:QueryAsAServiceSoap”&gt; 
               
             
          
           
               
                   
                 &lt;soap:binding 
               
             
          
           
               
                   
                 transport=“http://schemas.xmlsoap.org/soap/http” 
               
               
                   
                 style=“document”/&gt; 
               
             
          
           
               
                   
                 &lt;operation name=“runQueryAsAService”&gt; 
               
             
          
           
               
                   
                 &lt;soap:operation 
               
             
          
           
               
                   
                 soapAction=“MyQueryID/runQueryAsAService” style=“document”/&gt; 
               
             
          
           
               
                   
                 &lt;input&gt; 
               
             
          
           
               
                   
                  &lt;soap:body use=“literal”/&gt; 
               
             
          
           
               
                   
                 &lt;/input&gt; 
               
               
                   
                 &lt;output&gt; 
               
             
          
           
               
                   
                  &lt;soap:body use=“literal”/&gt; 
               
             
          
           
               
                   
                 &lt;/output&gt; 
               
             
          
           
               
                   
                 &lt;/operation&gt; 
               
             
          
           
               
                   
                 &lt;/binding&gt; 
               
             
          
           
               
                 E1.9 
                 &lt;!-- - - - - - - - - - - --&gt; 
               
             
          
           
               
                   
                 &lt;!-- Service --&gt; 
               
               
                   
                 &lt;!-- - - - - - - - - - - --&gt; 
               
               
                   
                 &lt;service name=“MyQueryID”&gt; 
               
             
          
           
               
                   
                 &lt;documentation&gt;Description of MyQueryID Web 
               
             
          
           
               
                   
                 Services&lt;/documentation&gt; 
               
             
          
           
               
                   
                 &lt;port name=“QueryAsAServiceSoap” 
               
             
          
           
               
                   
                 binding=“s0:QueryAsAServiceSoap”&gt; 
               
             
          
           
               
                   
                 &lt;soap:address 
               
             
          
           
               
                   
                 location=“http://2as3rx100:9080/dswsbobje/services/queryasas 
               
               
                   
                 ervice”/&gt; 
               
             
          
           
               
                   
                 &lt;/port&gt; 
               
             
          
           
               
                   
                 &lt;/service&gt; 
               
               
                   
                 &lt;/definitions&gt; 
               
             
          
           
               
                 E2.1 
                 &lt;?xml version=“1.0” encoding=“ISO-8859-1” ?&gt; 
               
             
          
           
               
                   
                 − &lt;QueryList&gt; 
               
               
                   
                 − &lt;QueryWS&gt; 
               
               
                   
                  &lt;ServiceName&gt;MyQueryID&lt;/ServiceName&gt; 
               
               
                   
                  &lt;QueryServiceName&gt;MyQueryID&lt;/QueryServiceName&gt; 
               
               
                   
                  &lt;OutputGenerateMode&gt;2&lt;/OutputGenerateMode&gt; 
               
               
                   
                  &lt;CreatorName&gt;Administrator&lt;/CreatorName&gt; 
               
               
                   
                  &lt;CreationDate&gt;1147807193250&lt;/CreationDate&gt; 
               
               
                   
                  &lt;Description&gt;Descirption of MyQueryID Web 
               
               
                   
                 Services&lt;/Description&gt; 
               
               
                   
                  &lt;UniverseID&gt;UnivCUID=AcWR_AmyPJtKpaAvWXV7vA0&lt;/UniverseID&gt; 
               
               
                   
                  &lt;UniverseName&gt;Island Resorts Marketing&lt;/UniverseName&gt; 
               
             
          
           
               
                 E2.2 
                 &lt;QuerySpec&gt; 
               
             
          
           
               
                   
                 &lt;QuerySpecification 
               
               
                   
                 xmlns:xsd=“http://www.w3.org/2001/XMLSchema” 
               
               
                   
                 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”&gt; 
               
               
                   
                 &lt;QueryBase xsi:type=“Query” 
               
               
                   
                 xmlns=“http://query.businessobjects.com/2005”&gt; 
               
               
                   
                 &lt;QueryResult Key=“UnivCUID=AcWR_AmyPJtKpaAvWXV7vA0.DO18”&gt; 
               
               
                   
                 &lt;Name&gt;Year&lt;/Name&gt; &lt;/QueryResult&gt; 
               
               
                   
                 &lt;QueryResult Key=“UnivCUID=AcWR_AmyPJtKpaAvWXV7vA0.DO1a”&gt; 
               
               
                   
                 &lt;Name&gt;Quarter&lt;/Name&gt; &lt;/QueryResult&gt; 
               
               
                   
                 &lt;QueryResult Key=“UnivCUID=AcWR_AmyPJtKpaAvWXV7vA0.DO4”&gt; 
               
               
                   
                 &lt;Name&gt;Service Line&lt;/Name&gt; &lt;/QueryResult&gt; 
               
               
                   
                 &lt;QueryResult Key=“UnivCUID=AcWR_AmyPJtKpaAvWXV7vA0.DO7”&gt; 
               
               
                   
                 &lt;Name&gt;Revenue&lt;/Name&gt; &lt;/QueryResult&gt; 
               
               
                   
                 &lt;QueryCondition QueryConditionOperator=“And”&gt; &lt;Item 
               
               
                   
                 xsi:type=“Filter” FilterOperator=“Equal”&gt; 
               
               
                   
                 &lt;FilteredObject Key=“UnivCUID=AcWR_AmyPJtKpaAvWXV7vA0.DO6”&gt; 
               
               
                   
                 &lt;Name&gt;Country&lt;/Name&gt; &lt;/FilteredObject&gt; 
               
               
                   
                 &lt;Operand xsi:type=“Prompt” KeepLastValues=“false” 
               
               
                   
                 Constrained=“false” HasLov=“true” Order=“0”&gt; 
               
               
                   
                 &lt;Question&gt;Which_Country_&lt;/Question&gt; &lt;/Operand&gt; &lt;/Item&gt; 
               
               
                   
                 &lt;/QueryCondition&gt; 
               
               
                   
                 &lt;/QueryBase&gt; 
               
               
                   
                 &lt;/QuerySpecification&gt; 
               
               
                   
                 &lt;/QuerySpec&gt; 
               
             
          
           
               
                 E2.3 
                 &lt;WSDLUrl&gt;http://2as3rx100:9080/dswsbobje/MyQueryID.wsdl&lt;/WSD 
               
             
          
           
               
                   
                 LUrl&gt; 
               
               
                   
                  &lt;AvgRunningTime&gt;1453&lt;/AvgRunningTime&gt; 
               
               
                   
                  &lt;AvgFetchedRows&gt;72&lt;/AvgFetchedRows&gt; 
               
               
                   
                  &lt;MaxFetchedRows&gt;36&lt;/MaxFetchedRows&gt; 
               
               
                   
                  &lt;nbExecution&gt;2&lt;/nbExecution&gt; 
               
               
                   
                  &lt;InputParams ID=“ROOT.0” Name=“Which_Country_” 
               
               
                   
                 PromptType=“Mono” Type=“String” /&gt; 
               
               
                   
                  &lt;OutputParams ID=“Year” Name=“Year” Type=“String” /&gt; 
               
               
                   
                  &lt;OutputParams ID=“Quarter” Name=“Quarter” Type=“String” /&gt; 
               
               
                   
                  &lt;OutputParams ID=“Service_Line” Name=“Service_Line” 
               
               
                   
                 Type=“String” /&gt; 
               
               
                   
                  &lt;OutputParams ID=“Revenue” Name=“Revenue” Type=“Numeric”/&gt; 
               
               
                   
                  &lt;/QueryWS&gt; 
               
               
                   
                  &lt;endlist /&gt; 
               
               
                   
                 &lt;/QueryList&gt; 
               
             
          
           
               
                 E3 
                 &lt;?xml version=“1.0” encoding=“utf-8”?&gt;&lt;soap:Envelope 
               
             
          
           
               
                   
                 xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/” 
               
               
                   
                 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” 
               
               
                   
                 xmlns:xsd=“http://www.w3.org/2001/XMLSchema”&gt; 
               
             
          
           
               
                   
                 &lt;soap:Body&gt; 
               
             
          
           
               
                   
                 &lt;runQueryAsAService xmlns=“MyQueryID”&gt; 
               
             
          
           
               
                   
                 &lt;login&gt;Administrator&lt;/login&gt; 
               
               
                   
                 &lt;password /&gt; 
               
               
                   
                 &lt;Which_Country_&gt;US&lt;/Which_Country_&gt; 
               
             
          
           
               
                   
                 &lt;/runQueryAsAService&gt; 
               
             
          
           
               
                   
                 &lt;/soap:Body&gt; 
               
             
          
           
               
                   
                 &lt;/soap:Envelope&gt; 
               
             
          
           
               
                 E4 
                 &lt;?xml version=“1.0” encoding=“UTF-8”?&gt; 
               
             
          
           
               
                   
                 &lt;soapenv:Envelope 
               
               
                   
                 xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” 
               
               
                   
                 xmlns:xsd=“http://www.w3.org/2001/XMLSchema” 
               
               
                   
                 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”&gt; 
               
               
                   
                 &lt;soapenv:Body&gt; 
               
               
                   
                 &lt;runQueryAsAServiceResponse xmlns=“MyQueryID”&gt; 
               
             
          
           
               
                   
                 &lt;message/&gt; 
               
               
                   
                 &lt;creatornameAdministrator&lt;/creatorname&gt; 
               
               
                   
                 &lt;creationdate&gt;2006-05 16T12:19:53.250Z&lt;/creationdate&gt; 
               
               
                   
                 &lt;creationdateformated&gt;05/16/2006 0:19:53 PM 
               
             
          
           
               
                   
                 &lt;/creationdateformated&gt; 
               
             
          
           
               
                   
                 &lt;description&gt;Descirption of MyQueryID Web 
               
             
          
           
               
                   
                 Services&lt;/description&gt; 
               
             
          
           
               
                   
                 &lt;universe&gt;Island Resorts Marketing&lt;/universe&gt; 
               
               
                   
                 &lt;queryruntime&gt;641&lt;/queryruntime&gt; 
               
               
                   
                 &lt;fetchedrows&gt;36&lt;/fetchedrows&gt; 
               
               
                   
                 &lt;numberofexecution&gt;2&lt;/numberofexecution&gt; 
               
               
                   
                 &lt;maxfetchedrows&gt;36&lt;/maxfetchedrows&gt; 
               
               
                   
                 &lt;avgqueryruntime&gt;726&lt;/avgqueryruntime&gt; 
               
               
                   
                 &lt;avgfetchedrows&gt;36&lt;/avgfetchedrows&gt; 
               
               
                   
                 &lt;table&gt; 
               
             
          
           
               
                   
                 &lt;row&gt; 
               
             
          
           
               
                   
                 &lt;Year&gt;FY1998&lt;/Year&gt; 
               
               
                   
                 &lt;Quarter&gt;Q1&lt;/Quarter&gt; 
               
               
                   
                 &lt;Service_Line&gt;Accommodation&lt;/Service_Line&gt; 
               
               
                   
                 &lt;Revenue&gt;127455&lt;/Revenue&gt; 
               
             
          
           
               
                   
                 &lt;/row&gt; 
               
               
                   
                 &lt;row&gt; 
               
             
          
           
               
                   
                 &lt;Year&gt;FY1998&lt;/Year&gt; 
               
               
                   
                 &lt;Quarter&gt;Q1&lt;/Quarter&gt; 
               
               
                   
                 &lt;Service_Line&gt;Food 
               
             
          
           
               
                   
                 &amp;amp;Drinks&lt;/Service_Line&gt; 
               
             
          
           
               
                   
                 &lt;Revenue&gt;24935&lt;/Revenue&gt; 
               
             
          
           
               
                   
                 &lt;/row&gt; 
               
               
                   
                 &lt;row&gt; 
               
             
          
           
               
                   
                 &lt;Year&gt;FY1998&lt;/Year&gt; 
               
               
                   
                 &lt;Quarter&gt;Q1&lt;/Quarter&gt; 
               
               
                   
                 &lt;Service_Line&gt;Recreation&lt;/Service_Line&gt; 
               
               
                   
                 &lt;Revenue&gt;28200&lt;/Revenue&gt; 
               
             
          
           
               
                   
                 &lt;/row&gt; 
               
               
                   
                 (...) 
               
             
          
           
               
                   
                 &lt;/table&gt; 
               
             
          
           
               
                   
                 &lt;/runQueryAsAServiceResponse&gt; 
               
               
                   
                 &lt;/soapenv:Body&gt; 
               
               
                   
                 &lt;/soapenv:Envelope&gt;