The accompanying figures where like reference numerals refer to identical or functionally similar elements throughout the separate views, and which together with the detailed description below are incorporated in and form part of the specification, serve to further illustrate various embodiments and to explain various principles and advantages all in accordance with the present invention.
As required, detailed embodiments of the present invention are disclosed herein; however, it is to be understood that the disclosed embodiments are merely exemplary of the invention, which can be embodied in various forms. Therefore, specific structural and functional details disclosed herein are not to be interpreted as limiting, but merely as a basis for the claims and as a representative basis for teaching one skilled in the art to variously employ the present invention in virtually any appropriately detailed structure. Further, the terms and phrases used herein are not intended to be limiting; but rather, to provide an understandable description of the invention.
The terms “a” or “an”, as used herein, are defined as one or more than one. The term plurality, as used herein, is defined as two or more than two. The term another, as used herein, is defined as at least a second or more. The terms including and/or having, as used herein, are defined as comprising (i.e., open language). The term coupled, as used herein, is defined as connected, although not necessarily directly, and not necessarily mechanically. The terms program, software application, and the like as used herein, are defined as a sequence of instructions designed for execution on a computer system. A program, computer program, or software application may include a subroutine, a function, a procedure, an object method, an object implementation, an executable application, an applet, a servlet, a source code, an object code, a shared library/dynamic load library and/or other sequence of instructions designed for execution on a computer system.
Exemplary Massively Parallel Processing System
According to an embodiment of the present invention, as shown in
Each of the client systems 104, 106 are communicatively coupled to each other and the server 108 via the network 102. In the current example, the client systems 104, 106, server 108, and the network 102 are part of the distributed processing system 100. In one embodiment, the client systems 104, 106 access data stored on the server 108. A copy of the data to be accessed is stored locally on the client system 104, 106. From hereon in the data accessed by each of the client systems 104, 106 is referred to as “shared data” 110. The shared data 110, in the current example, resides within a shared data store 112 such as a relational database, extensible markup language (“XML”) documents, resource description framework (“RDF”) graphs, or the like.
A shared data store 112, in one embodiment, allows a plurality of clients to access the same data. The shared data 110 does not have to reside on the server 108. For example, the shared data 110 can reside within a distributed data store comprising a plurality of remote information processing systems. The shared data 110 can also reside within a central data store located on the server 108 or on a remote information processing system communicatively coupled to the server 108. In the examples where the shared data resides on one or more remote information processing systems, the client systems 104, 106 access the data through the server 108.
The client systems 104, 106 can interact with the shared data 100 via distributed applications 136 residing on the server 108. For example, each client system 104, 106 initializes a distributed application 136 such as a spreadsheet application for creating, and modifying the shared data 110. The client systems 104, 106 modify the data locally (i.e. the local shared data 114, 116), which is then merged with the shared data 110 on the shared data store 112. Therefore, local changes to the data 114, 116 are not reflected in the shared data store 112 until the data 114, 116 is sent back to the shared data store 112. However, in the distributed processing system 100 other clients may also be interacting with the same data or data that affects the data 114, 116. Therefore, when one client system 104, 106 tries to modify certain data, those modifications may conflict with modifications made by another client system 104, 106.
To resolve these conflicts, a command or modification request generator 118, 120, a precondition generator 122, 124, a conflict resolution user interface 126, 128, and a globally unique identifier generator 130, 132 are provided to the client systems 104, 106. In one embodiment, these components reside within a data modification module 138, 140. For example, the distributed application 136 being used by a client system 104, 106 provides each of these modules 118, 122, 126, 130 to a client system 104, 106. These modules can reside locally on a client system 104, 106, as shown in
In the embodiment where the distributed application 136 presents a form to the user for interacting the local shared data 114, 116, each element of the form such as the form itself, the fields of the form, sub-forms, and the like are assigned a globally unique identifier. The globally unique identifier is generated, in this example, by the globally unique identifier generator 130, 132. When a user modifies the local shared data 114, 116, a modification request is generated that encapsulates the modification and the globally unique identifier generator 126 generates a unique identifier for the modification request. A globally unique identifier can be created for the modification(s) itself, the data to be modified, the application used to make the modification, the form, document, or sheet the modification was performed in, and the like. By associating a globally unique identifier with all of these elements, the location of a conflict can be identified and displayed to a user through the conflict resolution user interface 126, 128.
When a modification request is generated, the precondition generator 122 performs a precondition query against the local shared data 114, 116. Alternatively, the precondition query can also be performed against the shared data 110 in the shared store 112. The precondition query can be a query such as an SQL query, SPARQL query, XPath query, or the like. The precondition query creates an “expected result” based on the modification request and the local shared data 114, 116 (or the shared data 110 in the shared store 112). This “expected result” becomes a precondition that is associated with the modification request. For example, consider an example of a form having a “Name” filed. The local shared data 114, 116 shows the current value in the name field being “Rob” and a user wants to change the field from “Rob” to “Robert”. The precondition generator 122 performs a query on the local shared data 114, 116. The precondition generator 122 generates the precondition that for the modification request to be valid, the “Name” field must be “Rob” prior to performing the modification. If the “Name” field is not “Rob”, for example, because another user has modified the data, then the modification is not performed at the shared data store 112.
A transaction is created that includes all the modification requests, the unique identifiers associated with each modification request, the unique identifiers for the application used to perform the modification, the unique identifiers for the sheets, forms, or documents where the modification was performed on, and the preconditions associated with each modification request. In one embodiment, the modification requests are stored in a transaction in a first-in-first-out fashion. The transaction is sent to the server 108 which analyzes the transaction. Each modification request tests its precondition against the shared data 110 in the shared store 112. For example, a precondition tester 134 analyzes the shared data 110 to determine if the current state of the shared data 110 matches the precondition associated with the modification request. Using the example above, for a modification request to change a field value from “Rob” to “Robert”, the precondition tester 134 checks to see whether the field to be changed is currently “Rob”. It be noted that the precondition tester 134 can also reside within a client system 104, 106.
If the precondition of a modification request passes, the requested modification is allowed and the client system is notified of a successful modification request. If, however, the precondition fails, the client system 104, 106 is notified of the failure. In other words, a conflict exists within the shared data 110. For example, another user has changed the value for the field comprising “Rob”. In one embodiment, the client system 104, 106 notifies the user of the failure. The notification can be a visual and/or an audible notification. For example, a conflict resolution user interface 126 visually indicates to the user the conflict on the form including the conflict. The conflict resolution user interface 126 can highlight an area on the form where the conflict exists, highlight the conflicting data, change the color of the text associated with the data, display a message, or the like. The unique identifiers associated with each modification, data set, application, forms, sheets, or documents, enables the conflict resolution user interface 126 to display the conflict to the user. The present invention creates a mapping from the change made by a user to the shared store which can be displayed back to a user for conflict resolution.
As can be seen, the present invention provides automatic conflict resolution for shared data. Modification requests are generated when a user modifies shared data on a local machine. Preconditions are also generated that are associated with the modification requests to detect and surface conflicts when the modifications are attempted at the local store. If a conflict is detected, a user is visually shown where in a document the conflict exists and, in one embodiment, is also shown the conflicting data. This allows the user to either cancel his/her modification request of the change the modification request based on the conflicting data.
It should be noted that the example above of only changing a single field value and a precondition only testing a single element is for illustrative purposes. The modification request and the precondition can be arbitrarily complex. For example, a plurality of fields in a plurality of forms can be modified in a single modification request. A precondition can also test for a plurality of conditions.
Exemplary User Conflict Resolution Interface
The conflict resolution user interface 200, in one embodiment, visually indicates to the user the field comprising the data conflict. In the example of
The conflict resolution user interface 200, in one embodiment, can also display a message 206 notifying the user of a conflict. For example, the message 206 shown in
In the example of
Distributed Processing System Architecture
Information Processing System
The main memory 320, in one embodiment, includes the shared local data 114, modification request generator 118, precondition generator 122, conflict resolution user interface 126 and globally unique identifier generator 130. A discussed above, the local shared data 114 is a copy of shared data residing in a shared data store 110. A user of the information processing system 104 can interact with this local shared data 114 via a distributed application. The modification request generator 118, precondition generator 122, conflict resolution user interface 126 and globally unique identifier generator 130 reside within the data modification module 138 and can all be provided to the information processing system via the distributed application.
Although only one CPU 324 is illustrated for computer 402, computer systems with multiple CPUs can be used equally effectively. Embodiments of the present invention further incorporate interfaces that each includes separate, fully programmed microprocessors that are used to off-load processing from the CPU 324. The terminal interface 406 is used to directly connect the information processing system 104 with one or more terminals 412 to the information processing system 104 for providing a user interface to the computer 402. These terminals 412, which are able to be non-intelligent or fully programmable workstations, are used to allow system administrators and users to communicate with the information processing system 104. A terminal 412 is also able to consist of user interface and peripheral devices that are connected to computer 802.
An operating system image 312 included in the main memory 320 is a suitable multitasking operating system such as the Linux, UNIX, Windows XP, and Windows Server 2003 operating system. Embodiments of the present invention are able to use any other suitable operating system. Some embodiments of the present invention utilize architectures, such as an object oriented framework mechanism, that allows instructions of the components of operating system (not shown) to be executed on any processor located within the information processing system 104. The network adapter hardware 106 is used to provide an interface to the network 102. Embodiments of the present invention are able to be adapted to work with any data communications connections including present day analog and/or digital techniques or via a future networking mechanism.
Although the exemplary embodiments of the present invention are described in the context of a fully functional computer system, those skilled in the art will appreciate that embodiments are capable of being distributed as a program product via a CD/DVD, e.g. CD 410, or other form of recordable media, or via any type of electronic transmission mechanism.
Exemplary Process for Sending a Modification Request to a Shared Data Store
A modification request, at step 512, is generated for the changes made by the user to the local shared data 114. Precondition queries, at step 514, are performed on the local shared data 114, 116 within the client system 104, 104. Alternatively, precondition queries can also be performed on the related shared data 110 at the shared data store 112. An “expected result”, at step 516, is returned from each precondition query and associated with each respective modification request. As discussed above, the “expected result” encapsulates the state of the shared data 110 in the shared data store 12 that is required for the modification request to be valid. A transaction, at step 518, which includes each modification request and their associated unique identifiers and preconditions. This transaction is then sent to the shared data store 112. The control flow then exits at step 520.
Exemplary Process for Detecting a Data Conflict in a Shared Data Store
Exemplary Process for Resolving Data Conflicts in a Shared Data Store
The distributed application, at step 710, determines if the user has modified the conflicting data. If the result of this determination is negative, the control flow exits at step 712. If the result of this determination is positive, a precondition query, at step 714, is performed on the local shared data 114, 116 (or the related shared data 110 at the shared data store 112). An “expected result”, at step 716, is returned for the modification. The modification request, at step 718, is updated to include the new precondition. The updated modification request is then submitted to the shared data store. The process discussed above with respect to
Non-Limiting Examples
The present invention as would be known to one of ordinary skill in the art could be produced in hardware or software, or in a combination of hardware and software. However in one embodiment the invention is implemented in software. The system, or method, according to the inventive principles as disclosed in connection with the preferred embodiment, may be produced in a single computer system having separate elements or means for performing the individual functions or steps described or claimed or one or more elements or means combining the performance of any of the functions or steps disclosed or claimed, or may be arranged in a distributed computer system, interconnected by any suitable means as would be known by one of ordinary skill in the art.
According to the inventive principles as disclosed in connection with the preferred embodiment, the invention and the inventive principles are not limited to any particular kind of computer system but may be used with any general purpose computer, as would be known to one of ordinary skill in the art, arranged to perform the functions described and the method steps described. The operations of such a computer, as described above, may be according to a computer program contained on a medium for use in the operation or control of the computer, as would be known to one of ordinary skill in the art. The computer medium, which may be used to hold or contain the computer program product, may be a fixture of the computer such as an embedded memory or may be on a transportable medium such as a disk, as would be known to one of ordinary skill in the art.
The invention is not limited to any particular computer program or logic or language, or instruction but may be practiced with any such suitable program, logic or language, or instructions as would be known to one of ordinary skill in the art. Without limiting the principles of the disclosed invention any such computing system can include, inter alia, at least a computer readable medium allowing a computer to read data, instructions, messages or message packets, and other computer readable information from the computer readable medium. The computer readable medium may include non-volatile memory, such as ROM, Flash memory, floppy disk, Disk drive memory, CD-ROM, and other permanent storage. Additionally, a computer readable medium may include, for example, volatile storage such as RAM, buffers, cache memory, and network circuits.
Furthermore, the computer readable medium may include computer readable information in a transitory state medium such as a network link and/or a network interface, including a wired network or a wireless network that allows a computer to read such computer readable information.
Although specific embodiments of the invention have been disclosed, those having ordinary skill in the art will understand that changes can be made to the specific embodiments without departing from the spirit and scope of the invention. The scope of the invention is not to be restricted, therefore, to the specific embodiments, and it is intended that the appended claims cover any and all such applications, modifications, and embodiments within the scope of the present invention.