Abstract:
A method comprises receiving a request from a source service, determining whether the target service associated with the request supports a by-reference evaluation strategy, determining whether an information object associated with the request is a data reference, retrieving data associated with the reference from a database, adding the data to the information object, and invoking the target service and passing the information object to the target service responsive to determining that the target service does not support the by-reference strategy and the information object is a data reference.

Description:
BACKGROUND 
       [0001]    The present invention relates to service component architecture (SCA), and more specifically, to managing information objects in a SCA. 
         [0002]    SCA uses linked services (source services and target services) that send and receive data in information objects. Some services process data using a call-by-value evaluation strategy, while others process data using a call-by-reference evaluation strategy. A method and system that improves the compatibility of SCA services that use different evaluation strategies is desired. 
       BRIEF SUMMARY 
       [0003]    According to one embodiment of the present invention, a method comprises receiving a request from a source service, determining whether the target service associated with the request supports a by-reference evaluation strategy, determining whether an information object associated with the request is a data reference, retrieving data associated with the reference from a database, adding the data to the information object, and invoking the target service and passing the information object to the target service responsive to determining that the target service does not support the by-reference strategy and the information object is a data reference. 
         [0004]    According to another embodiment of the present invention, a system comprising, a source service, a target service a service bus having a processor operative to receive a request from a source service, determine whether the target service associated with the request supports a by-reference evaluation strategy, determine whether an information object associated with the request is a data reference, retrieve data associated with the reference from a database, add the data to the information object, and invoke the target service and pass the information object to the target service responsive to determining that the target service does not support the by-reference strategy and the information object is a data reference. 
         [0005]    According to yet another embodiment of the present invention, a computer program product including a computer readable medium having computer executable instructions embodied therewith that, as executed on a computer apparatus, implement a method comprising, receiving a request from a source service, determining whether the target service associated with the request supports a by-reference evaluation strategy, determining whether an information object associated with the request is a data reference, retrieving data associated with the reference from a database, adding the data to the information object, and invoking the target service and passing the information object to the target service responsive to determining that the target service does not support the by-reference strategy and the information object is a data reference. 
         [0006]    Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the invention with the advantages and the features, refer to the description and to the drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0007]    The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The forgoing and other features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which: 
           [0008]      FIG. 1  is a block diagram illustrating an example of a SCA system. 
           [0009]      FIG. 2  is a block diagram illustrating an example of logic used in the SCA system. 
           [0010]      FIG. 3  is a block diagram illustrating an alternate example of logic used in the SCA system. 
       
    
    
     DETAILED DESCRIPTION 
       [0011]      FIG. 1  is a block diagram illustrating an example of a SCA system. The system includes a source service  102  and a target service  104  each having associated quality of service (QoS) attributes  101 . The QoS attributes  101  include information that describes the parameters and operation of the service including, for example, whether the service operates with a by-value or by-reference evaluation strategy. The services are connected to a service bus  106  having a processor. The services may also be connected to an information management system database  108 . 
         [0012]    In the embodiments described below, when a developer wires services, the developer does interconnect a service retrieving and writing data. This reduces complexity and the amount of code to be maintained and increases consumability of the services. During processing of service invocations, the runtime infrastructure may decide whether references to the data can be passed to a service or if the data needs to be retrieved/written from/to the database before calling a service. This improves performance, because the runtime infrastructure can optimize the processing of service invocations with respect to data access. 
         [0013]    The approach described below is built upon Service Component Architecture (SCA), Service Data Objects (SDO) a model for business data, and set references, a concept for referencing data stored in an Information System, e.g. database or Enterprise Information System. 
         [0014]    A set reference is an abstraction of a business data, that is, a data description, and refers to a set which resides in some data source. For example, a set reference may refer to a table in a relational database system, a set of records in an Enterprise Information System or even an Excel sheet stored in the file system. When referring to a relational database table, the set reference contains, the reference to the data source in which the table resides, the table name, the database schema name (optional), and arbitrary properties (optional). Set references are defined with a XML Schema complex type. An example of an XML Schema complex type describing a set reference for a relational database table is shown below in Table 1. This makes it possible to pass them to other services so data can be shared by reference between different services. Table 2 shows an example of a concrete set reference for a relational database table: 
         [0015]    In operation, the source service  102  sends requests to the target service  104 . The service bus  106  processes the request and facilitates the communication of information objects and other data between the services. 
         [0016]      FIG. 2  is a block diagram illustrating an exemplary embodiment of the logic used by the service bus  106 . In block  202 , a request is received from the source service  102 . The request includes an identifier of the target service  104 . In block  204 , the service bus retrieves the QoS attributes  101  of the target service  104 . In block  206 , the service bus  106  determines whether the target service supports by-reference evaluation strategy. If yes, the service bus  106  determines whether the information object associated with the request is a reference. If yes, the target service  104  is invoked and the information object is passed from the source service  102  to the target service  104  via the service bus  106 . If the information object is not a reference in block  212 , the data from the information object is stored in the information management system data base  108 , and the reference is added to the information object in block  214  and the data is removed from the information object. The information object may then be passed in block  216 . In block  208 , the service bus  106  determines whether the information object is a reference. If no, the information object is passed in block  216 . If yes, the referenced data is retrieved from the information management system database  108  and added to the information object in block  210 . 
         [0017]      FIG. 3  illustrates an alternate exemplary embodiment of the logic used by the service bus  106 . The illustrated embodiment is similar to the logic described above in  FIG. 2 , and includes a determination of whether the services share the same information domain in block  211 . 
         [0018]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one ore more other features, integers, steps, operations, element components, and/or groups thereof. 
         [0019]    The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. 
         [0020]    The flow diagrams depicted herein are just one example. There may be many variations to this diagram or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention. 
         [0021]    Example embodiments of the present invention may be implemented, in software, for example, as any suitable computer program. For example, a program in accordance with one or more example embodiments of the present invention may be a computer program product causing a computer to execute one or more of the example methods described herein: a method for simulating arbitrary software and/or unmodified code directly on a host processor. 
         [0022]    The computer program product may include a computer-readable medium having computer program logic or code portions embodied thereon for enabling a processor of the apparatus to perform one or more functions in accordance with one or more of the example methodologies described above. The computer program logic may thus cause the processor to perform one or more of the example methodologies, or one or more functions of a given methodology described herein. 
         [0023]    The computer-readable storage medium may be a built-in medium installed inside a computer main body or removable medium arranged so that it can be separated from the computer main body. Examples of the built-in medium include, but are not limited to, rewriteable non-volatile memories, such as RAMs, ROMs, flash memories, and hard disks. Examples of a removable medium may include, but are not limited to, optical storage media such as CD-ROMs and DVDs; magneto-optical storage media such as MOs; magnetism storage media such as floppy disks (trademark), cassette tapes, and removable hard disks; media with a built-in rewriteable non-volatile memory such as memory cards; and media with a built-in ROM, such as ROM cassettes. 
         [0024]    These programs may also be provided in the form of an externally supplied propagated signal and/or a computer data signal (e.g., wireless or terrestrial) embodied in a carrier wave. The computer data signal embodying one or more instructions or functions of an example methodology may be carried on a carrier wave for transmission and/or reception by an entity that executes the instructions or functions of the example methodology. For example, the functions or instructions of the example embodiments may be implemented by processing one or more code segments of the carrier wave, for example, in a computer, where instructions or functions may be executed for simulating arbitrary software and/or unmodified code directly on a host processor, in accordance with example embodiments of the present invention. 
         [0025]    Further, such programs, when recorded on computer-readable storage media, may be readily stored and distributed. The storage medium, as it is read by a computer, may enable the simulation of arbitrary software and/or unmodified code directly on a host processor, in accordance with the example embodiments of the present invention. 
         [0026]    Example embodiments of the present invention being thus described, it will be obvious that the same may be varied in many ways. For example, the methods according to example embodiments of the present invention may be implemented in hardware and/or software. The hardware/software implementations may include a combination of processor(s) and article(s) of manufacture. The article(s) of manufacture may further include storage media and executable computer program(s), for example, a computer program product stored on a computer readable medium. 
         [0027]    The executable computer program(s) may include the instructions to perform the described operations or functions. The computer executable program(s) may also be provided as part of externally supplied propagated signal(s). Such variations are not to be regarded as departure from the spirit and scope of the example embodiments of the present invention, and all such modifications as would be obvious to one skilled in the art are intended to be included within the scope of the following claims. 
         [0028]    Although example embodiments of the present invention have been discussed herein with regard to specific applications and/or implementations, it will be understood that example embodiments may be utilized in, for example, in firm ASIC chip design or implemented in traditional circuitry. 
         [0029]    Although example embodiments of the present invention have been shown and described with regard to certain operations (e.g., S 114 , S 116 , and/or S 118  of  FIG. 2 ) being performed serially or consecutively, it will be understood that any combination of these operations may be performed simultaneously and in parallel. 
         [0030]    Although specific aspects may be associated with specific example embodiments of the present invention, as described herein, it will be understood that the aspects of the example embodiments, as described herein, may be combined in any suitable manner. 
         [0031]    While the preferred embodiment to the invention had been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described. 
         [0000]    
       
         
               
               
             
           
               
                   
                 TABLE 1 
               
               
                   
                   
               
             
             
               
                   
                 &lt;element name=“setReference” type=“dma:tSetReference” /&gt; 
               
               
                   
                 &lt;complexType name=“tSetReference”&gt; 
               
               
                   
                   &lt;sequence&gt; 
               
               
                   
                    &lt;element  name=“setAddress” type=“dma:tSetAddress” 
               
               
                   
                         minOccurs=“0” maxOccurs=“1” /&gt; 
               
               
                   
                    &lt;element  name=“setProperties” type=“anyType” 
               
               
                   
                         minOccurs=“0” maxOccurs=“1” /&gt; 
               
               
                   
                   &lt;/sequence&gt; 
               
               
                   
                 &lt;/complexType&gt; 
               
               
                   
                 &lt;complexType name=“tSetAddress”&gt; 
               
               
                   
                   &lt;sequence&gt; 
               
               
                   
                    &lt;element  ref=“dma:dataSource” minOccurs=“0” 
               
               
                   
                 maxOccurs=“1” /&gt; 
               
               
                   
                    &lt;element  name=“schema” type=“dma:tSchemaName” 
               
               
                   
                         minOccurs=“0” maxOccurs=“1” /&gt; 
               
               
                   
                    &lt;element  name=“table” type=“dma:tTableName” 
               
               
                   
                         minOccurs=“1” maxOccurs=“1” /&gt; 
               
               
                   
                   &lt;/sequence&gt; 
               
               
                   
                 &lt;/complexType&gt; 
               
               
                   
                 &lt;element name=“dataSource” type=“dma:tDataSource”/&gt; 
               
               
                   
                 &lt;complexType name=“tDataSource”&gt; 
               
               
                   
                   &lt;sequence&gt; 
               
               
                   
                    &lt;element  name=“jndiName” type=“string” 
               
               
                   
                         minOccurs=“1” maxOccurs=“1” /&gt; 
               
               
                   
                   &lt;/sequence&gt; 
               
               
                   
                 &lt;/complexType&gt; 
               
               
                   
                 &lt;complexType name=“tSchemaName”&gt; 
               
               
                   
                   &lt;sequence&gt; 
               
               
                   
                    &lt;element  name=“name” type=“string” 
               
               
                   
                         minOccurs=“0” maxOccurs=“1” /&gt; 
               
               
                   
                   &lt;/sequence&gt; 
               
               
                   
                 &lt;/complexType&gt; 
               
               
                   
                 &lt;complexType name=“tTableName”&gt; 
               
               
                   
                   &lt;sequence&gt; 
               
               
                   
                    &lt;element  name=“name” type=“string” 
               
               
                   
                         minOccurs=“0” maxOccurs=“1” /&gt; 
               
               
                   
                   &lt;/sequence&gt; 
               
               
                   
                 &lt;/complexType&gt; 
               
               
                   
                   
               
             
          
         
       
     
         [0000]    
       
         
               
               
             
           
               
                   
                 TABLE 2 
               
               
                   
                   
               
             
             
               
                   
                 &lt;dma:setReference&gt; 
               
               
                   
                  &lt;dma:setAddress&gt; 
               
               
                   
                   &lt;dma:dataSource&gt; 
               
               
                   
                    &lt;dma:jndiName&gt;/jdbc/iisample&lt;/dma:jndiName&gt; 
               
               
                   
                   &lt;/dma:dataSource&gt; 
               
               
                   
                   &lt;dma:schema&gt; 
               
               
                   
                    &lt;dma:name&gt;IISAMPLE&lt;/dma:name&gt; 
               
               
                   
                   &lt;/dma:schema&gt; 
               
               
                   
                   &lt;dma:table&gt; 
               
               
                   
                    &lt;dma:name&gt;EMPLOYEE&lt;/dma:name&gt; 
               
               
                   
                   &lt;/dma:table&gt; 
               
               
                   
                  &lt;/dma:setAddress&gt; 
               
               
                   
                 &lt;/dma:setReference&gt;