Individuals these days employ myriads of computer devices or systems on a regular basis. For example, individuals can have a desktop computer and/or associated file server with which they interact at work. They can also have a laptop computer for working away from the office as well as one or more desktop computers at home. Furthermore, they may have palm-top computers such as a personal digital assistant (PDA), pocket PCs, mobile phones and/or other portable devices they utilize for organizational, communication, and/or entertainment purposes. It is typically desirous for at least some data to be copied to multiple devices to enable convenient access thereto. For instance, often a user will copy files from a desktop computer or file server to a portable computer or device for use while the user is away from their office. The user may then modify or add some new files while away from the office and subsequently needs to copy these files to their desktop computer or file server when they return to the office. Similarly, users may wish to copy pictures or music from one device to another (e.g., computer to MP3 player; digital camera to computer . . . ). Still further yet, users may demand that personal preferences and contacts (e.g., address book) be maintained across all or a subset of their computers. Thus, certain files need to be synchronized across multiple computers or devices.
In its simplest form, synchronization is merely the task of causing designated information from multiple devices or systems to become the same or consistent. Typically, this means that the most up to date information associated with a data object is used to copy to a store. This process is automated by two-way, peer-to-peer, synchronization software applications. In particular, upon activation, a synchronization application can detect changes or additions to data objects on a first device and copy or replicate new and/or altered data objects to a second device communicatively coupled to the first device via, for instance, a hardwired or wireless connection. This causes the data objects on the first device to be synchronized with files on the second device. Synchronization can also be performed remotely by accessing a network having a first device such as desktop computer coupled thereto. A second device such as a second desktop computer or laptop computer can be synchronized with the first device utilizing synchronization software.
Conflicts can periodically occur during a synchronization process. For instance, if the information that is changed in the first device and the second device is associated with the same data object and occurs between synchronizations, a conflict is detected during the next synchronization session. In these situations, some systems that synchronized data objects would provide some type of user interface on the mobile device that would indicate that the conflict existed and that the conflict was with a certain object. In one example, the device user would receive a notification regarding the conflict and the user would be asked to resolve it manually. In other examples no user intervention is possible, such as when files are being synchronized on two servers, and thus conflicts need to be resolved automatically. In yet other examples a combination of both manual and automatic conflict resolution techniques are used. For instance, automatic resolution may be used with pre-established user preferences, such as when the user specifies that in any conflict the information on a particular device should prevail over all others.
Regardless of whether the conflict resolution technique that is employed is manual, automatic, or a combination thereof, it is generally created in a context specific manner that differs for different types of synchronization problems.
Conflicts may arise when a synchronization engine attempts to synchronize data objects between two or more devices. In an illustrative example, given a set of conflict resolution rules, a conflict resolution policy can be implemented. An algorithm is generated from the rules by decomposing each rule into three items. First, the rule is optionally decomposed into at least one pre-action that is to be performed on data in identified fields conflicting data objects. Second, the rule is decomposed into at least one condition that is to be applied to the conflicting data objects. Third, the rule is decomposed into at least one action that is to be performed on the identified fields in the conflicting data objects if the condition(s) is satisfied. The algorithm may be stored in an executable file for execution during the synchronization engine's runtime. Alternatively, the algorithm could be stored externally, thus providing extensibility and customization.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
The various aspects of the subject innovation are now described with reference to the annexed drawings, wherein like numerals refer to like or corresponding elements throughout. It should be understood, however, that the drawings and detailed description relating thereto are not intended to limit the claimed subject matter to the particular form disclosed. Rather, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the claimed subject matter.
As used in this application, the terms “component” and “system” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an instance, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
Turning now to
Generally, a sharing or synchronization relationship may exist between two or more endpoints. A particular sharing relationship may generally relate to a set of data comprising one or more data objects. When at least some kinds of changes are made to a data object, the changed information associated with the data object is synchronized to the other endpoint (or endpoints) in the synchronization relationship.
Endpoint A 110 and endpoint C 130 are shown in the system 100 as being connected by a communications network 115. Such an illustrative network should be interpreted as including any means by which data may be transmitted, including any type of network or any other kind of transfer, including the transfer of physical media, like a compact disc (CD) or flash memory drive. Endpoints might also be connected directly, such as might be illustrated, for example, by the connection between endpoint A 110 and endpoint B 120.
The information that is shared and synchronized between endpoints may be stored in a variety of manners and locations. In at least one implementation, an endpoint might store synchronized data locally on the same computing device or remotely on one or more other computing devices. Such storage may in some cases be embodied by one or more disk drives or magnetic, optical or other storage devices, or by any other electronic mechanism by which data may be stored. When some or all of the synchronized data is accessed remotely, the data may be accessed, for example, using a network or other communication means.
Each endpoint shown in this system might represent any number of general-purpose or dedicated computers, including desktop computers, server computers, laptop computers, workstation computers, mobile or cellular telephones, connected personal digital assistants (PDAs), and the like. In at least some implementations, an endpoint may be implemented by a computing environment including the illustrative computing environment discussed below with reference to
In one illustrative implementation, application programs 16 and 28 may be personal information manager (PIM) programs, which support, for example, electronic mail messaging, scheduling, calendaring, etc. Hereinafter, programs 16 and 28 will simply be referred to as PIMs 16 and 28. Of course, PIMs 16 and 28 can be configured to support a wide variety of other features, such as task lists and personalized address books, to name a few.
Data stores 20 and 32 are implemented in memory configured to store a plurality of individual data items, each comprising a plurality of fields or properties related to PIMs 16 and 28. Each data item may contain a body, metadata and attached documents. An example of data item could be an email or an entry in an address book, for instance. The metadata of a data item contains its properties and header information. The body may be the text or HTML part of the data item.
In one illustrative embodiment, PIMs 16 and 28 are programs, such as that available under the commercial designation “MICROSOFT OUTLOOK”, and data stores 20 and 23 are configured to store data items, each of which has a plurality of objects or records associated with electronic mail messaging, such as a sender's name, the recipient's name, text messages, etc. Computing device 14 executes PIM 28 to maintain objects stored in store 32, and mobile device 12 executes PIM 16 to maintain objects stored in object store 20. In one illustrative embodiment, each data item in data store 20 comprises the same set of objects or records stored in data store 32, or a subset of those objects or records.
Similarly, application programs 18 and 30 maintain data items on associated data stores 22 and 34, respectively. In one illustrative embodiment, application programs 18 and 30 are file system applications, such as those available under the commercial designation “MICROSOFT WORD”. It should also be noted that any suitable number of other application programs, and associated data stores, can be provided on mobile device 12 and computing device 14. However, for the sake of simplicity, only programs 16, 18, 28 and 30, and their associated data stores, are described herein.
The application programs 16 and 28 and application programs 18 and 30 shown in
In one illustrative embodiment, the user desires to synchronize data stores 20 and 32 and data stores 22 and 34. Thus, there are two instances of each data item associated with the pair of data stores 20 and 32 (one instance in object store 20 and one instance in object store 32) and two instances of each data item associated with the pair of object stores 22 and 34 (one instance in object store 22 and one instance in object store 34). When a user changes one instance of an object in a data item stored in either object store 22 or 34, the second instance of that object in the other of stores 22 and 34 is out of sync and is desirably updated the next time mobile device 12 has two-way communication with computing device 14, so that both instances of the same object contain synchronized data. The same is true for instances of objects in data items stored in data stores 20 and 32.
In order to accomplish synchronization, synchronization components 24 and 36 run on mobile device 12 and computing device 14, respectively. The synchronization components communicate with application programs 16, 18, 28 and 30 (or directly with the associated object stores) through well defined interfaces to manage communication and synchronization.
Synchronization components 24 and 36 communicate with each other through two-way communication interfaces 26 and 38. Communication interfaces 26 and 38 are illustratively commercially available communication interfaces using a suitable communications protocol. For instance, in one illustrative embodiment, mobile device 12 is connected to computing device 14 with a physical cable, which communicates using a serial communications protocol. Other communication mechanisms are also contemplated by the present invention, such as infra-red (IR) communication, direct modem communication, remote dial-up-networking communication, communication through commercially available network cards (i.e., using TCP/IP), remote access services (RAS), wireless modem, wireless cellular digital packet data (CDPD), or other suitable communication mechanisms. Communication interfaces 26 and 38 communicate with one another over communications network 50.
In the example shown in
Also shown in
The conflict resolution policy implemented by conflict resolution component 60 is based on one or more rules. Each rule includes three items. The first item is a list of pre-actions that are to be performed on specific data within an object before the comparison condition within the rule is executed. The second item is a condition which determines whether the rule should run. The third item is a list of actions to be performed on the data within the object in the event that the condition in the second item determines that the rule should be run.
The three items that make up a rule can be illustrated with an example. For instance, one object may be a person record, which contains fields for a first name, last name and phone number. One particular instance, instance A, of a person record may be (‘John’, ‘Doe’, “212-1223-4567) and another instance, instance B, of this person record may be (‘John Doe’, “+1-212-1223-4567). A rule that is to be applied to this person record may be as follows: If one instance contains the full name field inside the first name field and the other instance is properly separated into first and last name fields, accept the instance containing the separated fields.
For this object a pre-action that may need to be performed involves breaking up the name field in instance B into two separate fields (a first name field and a last name field) so that they can be compared to their corresponding fields in instance A. In this case the condition in item 2 of the rule is satisfied since in instance A the full name is located inside the first name field and in the other instance the full name is separated into first and last name fields. Accordingly the action specified in item 3 of the rule is performed. That is, the action that is performed selects the field (‘John’, ‘Doe’) from instance B and uses it to replace the corresponding field in instance A.
As previously mentioned, a conflict resolution policy consists of a series of rules. The ordered set of such rules may be referred to as a RuleSet.
The synchronization methodology described above will be illustrated with the following example.
Assume the data to be synchronized consists of Person records. Each Person has a first name, last name, and phone number.
Assume there are two RuleSet objects:
1) PhoneResolutionRules. Consists of two rules:
2) NameResolutionRules. Consists of two rules:
Given Person object A (‘John’, ‘Doe’, ‘212-123-4567’) and Person object B (‘John Doe’, “, ‘+1-212-123-4567’), the flow of the automatic resolution process is shown in
The method illustrated above may serve as a design framework for developers when they create RuleSet objects. RuleSet objects that are created in this manner may be loaded dynamically using the synchronization process' runtime. The data objects and other necessary information may be dynamically linked during runtime. The RuleSet name and other custom parameters can be placed in a configuration file, thereby making the design framework very customizable.
In some cases where a RuleSet may not be able to resolve a particular conflict, a possible implementation for a rule will be to present the user with the conflicting data and ask him or her to resolve it manually. A rule may apply machine learning to the manual user selections so that future conflicts of a similar nature can be automatically resolved without user intervention. For example, if a conflict arises between data items that comprise a contact residing in a personalized address book on WINDOWS LIVE and EXCHANGE, a rule may refrain from suggesting a solution to conflict, and let the user manually chose the solution. After a few consistent user selections to resolve such a conflict, the rule may subsequently choose a solution based on the user's previous manual selections.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.