These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings in which:
The drawings are not necessarily to scale. The drawings are merely schematic representations, not intended to portray specific parameters of the invention. The drawings are intended to depict only typical embodiments of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements.
The present invention provides a method, system, and program product for providing proxies for data objects such as SDOs. Specifically, under the present invention, a reference between two data objects is identified. The two data objects could reside in different data graphs, or they could reside in separate branches of a common data graph. In any event, a reference object will be inserted/provided into the branch or data graph containing the reference. The present invention can also embody the use of a “development time” physical/logical model transformation, where the proxy class is inserted into the model and the proxy class represents a shell with information to retrieve the real object. The reference object is typically inserted at runtime of an application utilizing the data graph(s), and functions as a proxy for the reference. To this extent, the reference object could be an instance of the data object being referenced, or the reference itself. In any event, a Boolean or the like could be provided that indicates whether the reference object contains the data or the reference. In addition, listeners or adapters (such as those provided by EMF) could be provided to monitor the data objects for any changes.
It should be understood in advance that the present invention can be implemented in the context of a single data graph or multiple data graphs. In addition, it should be understood that although a typical embodiment involves SDO data graphs and SDO data objects, this need not be the case.
Referring now to
Referring to
Referring to
Under the present invention, a reference object will be added to data graph 30A (or from the branch in which data object 34A resides in the case that data objects 34A-B are provided in a single data graph) as a proxy for the reference to data object 34B. This process is aided by the introduction of one or more adapters or listeners (a single adapter 35 is shown in
Whenever a new object from a different data graph 30B is added to a non-containment relationship, adapter 35 would create a new proxy or reference object of the same type (only copying the universal unique identifier) and store that reference object in an internal containment relationship on the data graph 30A's root object 32A. Then, instead of setting the specified data object 34B in the property, it would set the new “proxy” reference object. This solves two problems by allowing data objects from other graphs to be set in the non-containment relationships and also, by only creating a reference object. This avoids all of the data integrity issues involved with making a deep copy of the referenced data object 30B itself. It should be understood that a single adapter 35 has been shown for brevity purposes only. As such, an adapter 35 could be provided for (e.g., associated with) each data object 32A-B and 34A-B of each data graph 30A-B.
Referring to
Referring now to
As shown, computer system 104 includes a processing unit 106, a memory 108, a bus 110, and input/output (I/O) interfaces 112. Further, computer system 104 is shown in communication with external I/O devices/resources 114 and storage system 116. In general, processing unit 106 executes computer program code, such as proxy program 120, which is stored in memory 108 and/or storage system 116. While executing computer program code, processing unit 106 can read and/or write data to/from memory 108, storage system 116, and/or I/O interfaces 112. Bus 110 provides a communication link between each of the components in computer system 104. External devices 114 can comprise any devices (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with computer system 104 and/or any devices (e.g., network card, modem, etc.) that enable computer system 104 to communicate with one or more other computing devices such as server 130.
Computer infrastructure 102 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 102 comprises two or more computing devices (e.g., a server cluster) that communicate over a network to perform the various process steps of the invention. Moreover, computer system 104 is only representative of various possible computer systems that can include numerous combinations of hardware. To this extent, in other embodiments, computer system 104 can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively. Moreover, processing unit 106 may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Similarly, memory 108 and/or storage system 116 can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations. Further, I/O interfaces 112 can comprise any system for exchanging information with one or more external devices 114. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc.) not shown in
Storage system 116 can be any type of system (e.g., a database) capable of providing storage for information under the present invention such as data graphs, data objects, reference objects, adapter data, etc. To this extent, storage system 116 could include one or more storage devices, such as a magnetic disk drive or an optical disk drive. In another embodiment, storage system 116 includes data distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN) (not shown). Although not shown, additional components, such as cache memory, communication systems, system software, etc., may be incorporated into computer system 104.
Shown in memory 108 of computer system 104 is proxy program 120, which includes graph reading system 122, reference identifier system 124, reference object system 126, adapter generation system 128. These systems provide the functionality of the present invention discussed above. It should be understood that although not shown, other programs such as components of a distributed application will likely be loaded on computer system 104.
In any event, assume that data object 132A of data graph 130A references data object 132B on data graph 130B. Under the present invention, graph reading system 122 will read data graphs 130A-B into memory 108. This process can also be referred to as a deserialization process as known in the art. In any event, the reference to data object 132B from data object 132A will be detected/identified by reference identifier system 124. In response, reference object system 126 will insert/provide a proxy object in data graph 130A as a proxy for the reference. As indicated above, the proxy object can include the reference to data object 132B (e.g., based on a UUID), or an actual instance of data object 132B. Whether the reference object contains the reference or the instance can be indicated based on a setting of the proxy property (e.g., true vs. false). In addition, the reference object is typically added to data graph 130A at runtime of an application (not shown) that utilizes data graphs 130A-B. In any event,
It should be understood that although
While shown and described herein as a method and system for providing proxies for data objects, it is understood that the invention further provides various alternative embodiments. For example, in one embodiment, the invention provides a computer-readable/useable medium that includes computer program code to enable a computer infrastructure to provide proxies for data objects. To this extent, the computer-readable/useable medium includes program code that implements each of the various process steps of the invention. It is understood that the terms computer-readable medium or computer useable medium comprises one or more of any type of physical embodiment of the program code. In particular, the computer-readable/useable medium can comprise program code embodied on one or more portable storage articles of manufacture (e.g., a compact disc, a magnetic disk, a tape, etc.), on one or more data storage portions of a computing device, such as memory 108 (
In another embodiment, the invention provides a business method that performs the process steps of the invention on a subscription, advertising, and/or fee basis. That is, a service provider, such as a Solution Integrator, could offer to provide proxies for data objects. In this case, the service provider can create, maintain, support, etc., a computer infrastructure, such as computer infrastructure 102 (
In still another embodiment, the invention provides a computer-implemented method for providing proxies for data objects. In this case, a computer infrastructure, such as computer infrastructure 102 (
As used herein, it is understood that the terms “program code” and “computer program code” are synonymous and mean any expression, in any language, code or notation, of a set of instructions intended to cause a computing device having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form. To this extent, program code can be embodied as one or more of: an application/software program, component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to a person skilled in the art are intended to be included within the scope of the invention as defined by the accompanying claims.
This application is related in some aspects to the commonly-owned application entitled “Method, System, and Program Product for Managing Adapter Association for a Data Graph of Data Objects”, which is assigned attorney docket number RSW920050217US1, was filed on (to be provided), and was assigned Ser. No. (to be provided), the entire contents of which are herein incorporated by reference. This application is also related in some aspects to the commonly-owned application entitled “Method to Support Data Streaming in Service Data Objects Graphs”, which is assigned attorney docket number RSW920050210US1, was filed on (to be provided), and was assigned Ser. No. (to be provided), the entire contents of which are herein incorporated by reference.