With the advent of distributed computing environments, such as the Internet and intranets, it has become common practice to store various electronic files, such as word processing documents, spreadsheet documents, slide presentation documents, database files, and the like, on a server to which many users may obtain access for using stored files. Server systems have been developed that allow for collaborative working environments where various users may work on a given file or files as a team. Under such systems, a given user may “check out” a document for making edits to the document. While the document is checked out by the editing user, other users are notified that the document is checked out and the other users are prohibited from editing the document until the first user checks the document back into the server. Thus, conflicting edits to the document are prevented.
According to prior systems, a checked out document remains on the server while being edited. That is, the editing user may not check out the document to her local computer for editing the document during an offline session. In order to edit the document in an offline session, the user must copy the document to the local computer, make desired edits, and then manually save the edited document back to the server. Unfortunately, manually saving the edited document to the server requires the user to ensure that changes made to the document during the offline session do not conflict with changes made to the server copy during the offline session. Moreover, the document manually saved to the server by the editing user will bear a different version than the version previously saved to the server which may have been edited by others during the offline session. Such a process greatly decreases, if not eliminates altogether, the benefits of the collaborative working environment.
It is with respect to these and other considerations that the present invention has been made.
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 as an aid in determining the scope of the claimed subject matter.
Embodiments of the present invention solve the above and other problems by providing for mapping server files to corresponding locally stored copies of server files and for redirecting an application to a server copy or to a corresponding local copy for opening a most up-to-date or most reliable version of the desired file. According to one embodiment, a server-based document may be “checked out” and saved to a local computer for editing during an offline session. When the document is checked out to the local computer, a mapping is generated for relating a path to the server file with a path to the local copy. In addition, a date/time stamp for the last edit written to the server file is generated for future comparison with the local copy. According to one embodiment, the mapping and date/time stamp data may be stored in the local computer for optimization.
When a subsequent attempt to open either the server file or the local copy of the server file is received, a determination is made as to whether a mapping exists to a local copy. If a mapping does not exist, the server copy is opened. If a mapping to a local copy does exist, but a corresponding local copy is not available, the server file is opened. If a mapping to a local copy exists and the local copy is available, but the local copy is not checked out to the requesting user, then the server file is opened. If a mapping to the local copy exists and the local copy is available, but a review of the date/time stamp for the last written edits to the server file indicates that the server file has been changed since the local copy was stored to the local computer, then the server file is opened. If a mapping to the local copy exists, the local copy is available, and no changes have been made to the server file since the local copy was stored to the local computer, then the file open request is directed to the local copy, and the local copy is opened. According to an embodiment, a warning may be provided to the requesting user if the server file is opened when a local copy is also available but is not opened as set forth above.
According to another embodiment, a property may be set on the local copy to notify the requesting application of the server file to which the local copy is associated so that the local copy may be located by the requesting application regardless of the storage location on the local computer at which the local copy is stored.
These and other features and advantages will be apparent from a reading of the following detailed description and a review of the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are explanatory only and are not restrictive of the invention as claimed.
As briefly described above, embodiments of the present invention are directed to mapping server-based files to corresponding locally stored file copies and to directing a requesting application to a server file or to a local copy of a corresponding server file for opening a most up-to-date or most reliable version of the desired file. In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustrations specific embodiments or examples. These embodiments may be combined, other embodiments may be utilized, and structural changes may be made without departing from the spirit or scope of the present invention. The following detailed description is therefore not to be taken in a limiting sense and the scope of the present invention is defined by the appended claims and their equivalents.
Referring now to the drawings, in which like numerals refer to like elements through the several figures, aspects of the present invention and an exemplary computing operating environment will be described.
Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Embodiments of the invention may be implemented as a computer process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
With reference to
According to embodiments of the invention, the application 106 may comprise many types of software applications, such as an electronic mail program, a calendaring program, an Internet browsing program, and the like. An example of such programs is OUTLOOK® manufactured by MICROSOFT CORPORATION. The application 106 may include a number of other types software applications including a multiple-functionality software application for providing many other types of functionalities. Such a multiple-functionality application may include a number of program modules, such as a word processing program, a spreadsheet program, a slide presentation program, a database program, and the like. An example of such a multiple-functionality application is OFFICE™ manufactured by MICROSOFT CORPORATION. According to embodiments of the present invention, the application 106 is illustrative of any software application operable for requesting the opening of a server file or local copy of a server file according to embodiments of the invention described herein.
The computing device 100 may have additional features or functionality. For example, the computing device 100 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
The computing device 100 may also contain communication connections 116 that allow the device to communicate with other computing devices 118, such as over a network in a distributed computing environment, for example, an intranet or the Internet. Communication connection 116 is one example of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media.
Referring now to
According to one embodiment, documents stored on the server 200 are stored in a database operative to allow the documents to be accessed and utilized by one or more users operating in a collaborative working environment. An example of such a database for enabling a collaborative working environment is SHAREPOINT® manufactured by MICROSOFT CORPORATION. For example, a word processing document may be stored on the server 200 that contains a company proposal for an upcoming project by a department of the company. Various members of a work team may access the document from time to time to make changes to the document or to add information to the document. According to embodiments of the present invention, when a given user desires to edit a given document on the server 200, the user may “check out” the document so that only the requesting user may make edits or other changes to the document while the document is checked out to the requesting user. That is, during the period in which the document is checked out by the requesting user, other users may not open the document and make edits or other changes to the document. Thus, conflicting edits or changes to the document by different users are prevented.
Once a user has completed all her desired edits or other changes to a checked out document, the user may check the document back into the server, and the checked in document is then available for editing by other users. As described in detail below, files maintained on the server 200 may be checked out by a requesting user and may be stored to a local computer 100 with which the requesting user may edit the locally stored files during an offline editing session. That is, the requesting user may check out a desired file from the server 200 and operate on the file with the local computer 100 after the local computer has been disconnected from the server 200 during an offline editing session. When the user reconnects her local computer 100 to the server 200, the previously checked out document may be checked back into the server 200, and edits or other changes made to the document at the local computer 100 during the offline session are published to the server 200.
According to embodiments of the present invention, when a document is checked out from the server 200 to the local computer 100, as described above, a copy of the checked out file is stored in a local data store 215 of the local computer 100. According to one embodiment, the locally stored file copy is saved to a “drafts” folder in the local data store for providing users an efficient way to locate and edit locally stored files. When the local copy of the file is stored at the local computer 100, a mapping is generated for mapping a path to the server file to a path to the local copy of the file. According to embodiments, the mapping generated for the stored file contains data for directing a requesting application to each stored file. A server path is included in the mapping data and includes a value that may be utilized by a requesting application, for example, a word processing application, for locating the server file at the server 200. For example, the server path may be a uniform resource locator (URL) address for the server file for directing a requesting application to the server file at the server 200.
A local copy path is included in the mapping, and the path is a value that may be utilized by a requesting application for locating the local copy of the server file at the local computer 100. A last write time value is included in the mapping data for the server file. The server file “last write time” is a date/time stamp associated with the date and time at which last edits or changes were made to the server file prior to the date and time at which the server file was checked out to the local computer 100. According to embodiments, the last write time for the server file is recorded and is utilized by a requesting application as a reference point for determining whether changes have been made to the server file after the local copy of the server file has been stored to the local computer 100.
When a subsequent attempt is made to open either the server file or the local copy, as described below, a determination may be made as to whether changes were made to the server file after the local copy of the file was stored to the local computer 100. If the server file has been changed since the local copy of the file was stored to the local computer 100, then the server copy of the file may be opened in response to a file open request so that a requesting user is provided the most up-to-date version of the server file then stored at the server. As will be described below, in such a case, the local copy of the file may contain edits or other changes that are now in conflict with changes made to the server file after the local copy of the file was stored to the local computer 100, but provision of the server file under this circumstance is required to prevent confusion as to the status of the server file maintained for the collaborative working environment.
According to one embodiment, when the local copy of the server file is stored at the local computer 100, a property is set on the local copy of the file for identifying the server file to which the local copy is associated. Thus, a subsequent requesting application may locate the local copy of the file in the local data store 215 of the local computer 100 regardless of the particular location in the local data store 215 at which the local copy of the file is stored.
After the mapping from server file to local copy is generated, as described above, storage for the mapping is established at the local computer 100. According to one embodiment, the operating system registry of the local computer 100 may be utilized. The server file path may be stored as a registry key, and the local copy path may be stored as a default value for that registry key so that subsequent requests for either the server file or the local copy will default to the path for the local copy for first determining whether a path to the local copy exists before determining whether the server file must be opened, as described below. The last write time for the server file may be stored as a string value in the registry for comparing last edit dates/times for the server file with edit dates/times of the server file potentially made after the local copy was stored, as described above. As should be appreciated, the mapping data may be stored in the operating system registry for optimization purposes, or alternatively, the mapping data may be stored in any number of other local data stores 215 for access by a requesting application during a file open operation directed to server files or corresponding local copies. According to another embodiment, the mapping is also stored in the associated file. Thus, if a user moves the file to different memory locations on the local computer 100, the mapping data is always available with the file for directing a requesting application back to the server via the mapping, as described herein.
Referring now to
When the desired document is checked out, the document is stored to the local computer 100 as described above. When the local copy of the document is stored to the local computer 100, a property is set on the local copy for allowing a subsequently requesting application, for example, a word processing application, spreadsheet application, and the like, to locate the locally stored copy of the document regardless of a particular location in the local data store 215 at which the local copy is stored.
At mapping operation 315, a mapping of the server-based document to the local copy of the requested document is generated. As described above, data comprising the mapping includes a path to the server file, a path to the locally stored copy, and a date/time stamp for the “last write time” for the server copy of the document.
At operation 320, a storage location at the local computer 100, for example, at the local data store 215, is defined for storing the mapping data generated at operation 315. As described above, according to one embodiment of the present invention, the storage location for the mapping data is defined at the operating system registry for the local computer 100 for purposes of optimization. That is, storing the mapping data in the operating system registry allows the mapping data to be efficiently and quickly retrieved by a requesting application when required. At mapping storage operation 325, the mapping data generated for the locally stored document copy is stored.
Once the local copy of the server-based document is stored, and the mapping is generated and stored, the requesting user may operate on the locally stored document in an online session with the server 200. That is, edits or other changes made to the local copy may be automatically published to the server 200 during a period in which the document is checked out by the current user to the local computer 100. According to embodiments of the present invention, the user may also operate on the locally stored document during an offline editing session. For example, the user may desire to store the local document on a laptop computer 100 for editing the document during a flight from one location to another location. Once the user reconnects her computer 100 to the server 200 via the distributed computing environment 210, the user may synchronize the locally stored document along with any edits or changes back to the server 200 by “checking in” the locally stored document to the server 200, as described above.
Once the user reconnects her computer to the server 200 after an offline editing session, a request for either the server file or the locally stored copy of the server file may be received by a requesting application. For example, the user who originally stored the local copy of the document to her local computer, or a different user may attempt to check out the subject document from the server 200, or the user may attempt to open the subject document from her local computer 100. For example, a user may attempt to launch the subject document via a requesting application, for example, a word processing application, a spreadsheet application, a slide presentation application, and the like.
At document request operation 330, a request is received at the server 200 or at the local computer 100 for the subject document via a requesting application. At mapping retrieval operation 335, the requesting application requests the desired document via the path to the requested document at the server 200. That is, the requesting document attempts to open the requested document at a memory location accessible via the server path for the requested document. When the requesting application attempts to retrieve and open the requested document via the server path for the requested document, the requesting application will be redirected to the mapping data for the requested document if the requested document has been previously checked out to and potentially edited at a local computer 100.
At operation 338, the requesting application follows the server path for the desired document. If a mapping has been generated for the desired document, mapping the server path for the desired document to a local copy path for the desired document, then the requesting application will be redirected to the local copy path as a default path, as described above. However, if no mapping is available for the requested document, which means that the requested document has not been checked out to a local computer 100, then the routine proceeds directly to file open operation 340, and the server file for the requested document is opened by the requesting application.
Referring back to operation 342, if the requesting application follows the server path for the requested document and determines that a mapping is available for the requesting document, the requesting application is then redirected to a path for the local copy of the document, as described above. When the requesting application follows the path to the local copy, a determination is made as to whether the local copy is available. If the local copy of the document is not available, for example, the local copy has been moved, deleted, checked out to a different location, etc., the routine proceeds to operation 344, and a warning may be provided to the requesting user. For example, a dialog box may be presented to the requesting user to let the user know that a local copy of the document has been checked out and stored locally, but that the local copy is not available for opening by the requesting application.
According to one embodiment, the user may be provided additional options via the warning dialog. For example, the user may be allowed to retry the opening of the local copy, the user may be allowed to abort the file-opening request, or the user may be directed to open the server copy of the document. As a default operation, in this situation, the routine proceeds to operation 346, and the server copy is opened in response to the file open request.
Referring back to operation 348, if the requesting application determines that a mapping is available, and upon following the path to the locally stored copy, a determination is made that a local copy is available, the requesting application next determines whether the local copy is or is not checked out. For example, if a first user checked out the requested document to her local computer 100, and the first user then went on an extended absence from the office during which the first user failed to reconnect to the server 200 to check the locally stored document back into the server, a subsequent requesting user may attempt to open the document. If the subsequent requesting user determines that the first user has been absent from the document for an excessive period, the subsequent requesting user may decide to break the file checkout system by overriding the system to allow the second requesting user to check out the server-based copy of the document.
According to an embodiment of the present invention, mapping data for the previously stored local copy may be updated to indicate that the checkout system has been broken and that the subject document has been checked out by the second requesting user. Thus, if the first user returns from the extended absence and attempts to open the previously stored local document copy, then at operation 348, the user will be notified that a mapping is available, a local copy is available, but that the document has now been checked out by another user. After a warning is provided to the requesting user at operation 350, the server copy of the document is provided to the requesting user. Thus, even if the first user has made edits or other changes to the locally stored document during the first user's extended checkout session, the first user is now required to open and utilize the server copy that is now the most up-to-date and the most reliable copy because the server-based copy may have been edited or otherwise changed by the second user.
Referring back to operation 354, if the file open request results in a determination that a mapping to a local copy is available, that the local copy of the document is available, but that the server copy has changed with respect to the local copy, a warning is provided to the user at warning operation 356. As described above, at the time a local copy of the server document is stored to the local computer 100, a date/time stamp for the last write time associated with last edits or changes made to the server document prior to storing the document locally is stored with other mapping data. When the requesting application is directed to the mapping data for the requested document, as described herein, the previously stored last write time is considered an anticipated last write time for the server document. The requesting application then follows the server path back to the server-based document and retrieves a current last write time for the requested document. A comparison is then made between the previously stored or anticipated last write time for the requested document with the current last write time for the requested document. If the current last write time for the server document is later than the previously stored or anticipated last write time, then a determination is made that the server-based document has been changed by a subsequent user after the local copy of the server-based document was checked out to the local computer 100. Because the server-based copy of the requested document includes edits or other changes that were not included in the document when the local copy of the document was stored to the local computer 100, the routine proceeds to file open operation 358, and the server-based copy is opened by the requesting application as the most up-to-date version of the document. Thus, any edits or other changes made to the locally stored copy of the document by the requesting user must be made to the opened server copy of the document after the requesting user checks out the local server copy of the document at operation 358.
Referring to operation 360, if during the file open operation, a determination is made that a mapping from the server file to a local copy is available, that a local copy is available, that the document has not been checked out by another user, and that the server copy has not been changed, then the routine proceeds to operation 362, and the locally stored copy of the document is launched in response to the file open request.
As described herein, embodiments of the present invention are directed to mapping a server file to a corresponding locally stored copy of a server file and to redirecting an application to a server file or to a corresponding local copy for opening a most up-to-date or most reliable version of the desired file. It will be apparent to those skilled in the art that various modifications or variations may be made in the present invention without departing from the scope or spirit of the invention. Other embodiments of the present invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein.
Number | Name | Date | Kind |
---|---|---|---|
5121499 | McCaskill et al. | Jun 1992 | A |
5175810 | Young et al. | Dec 1992 | A |
5247611 | Norden-Paul et al. | Sep 1993 | A |
5255356 | Michelman et al. | Oct 1993 | A |
5319777 | Perez | Jun 1994 | A |
5359729 | Yarnell et al. | Oct 1994 | A |
5396587 | Reed et al. | Mar 1995 | A |
5418898 | Zand et al. | May 1995 | A |
5418902 | West et al. | May 1995 | A |
5455853 | Cebulka et al. | Oct 1995 | A |
5471575 | Giansante | Nov 1995 | A |
5510980 | Peters | Apr 1996 | A |
5535324 | Alvarez et al. | Jul 1996 | A |
5553215 | Kaethler | Sep 1996 | A |
5598519 | Narayanan | Jan 1997 | A |
5600584 | Schlafly | Feb 1997 | A |
5604854 | Glassey | Feb 1997 | A |
5615373 | Ho | Mar 1997 | A |
5649192 | Stucky | Jul 1997 | A |
5685001 | Capson et al. | Nov 1997 | A |
5701499 | Capson et al. | Dec 1997 | A |
5708827 | Kaneko et al. | Jan 1998 | A |
5740370 | Battersby et al. | Apr 1998 | A |
5752253 | Geymond et al. | May 1998 | A |
5758337 | Hammond | May 1998 | A |
5768158 | Adler et al. | Jun 1998 | A |
5812983 | Kumagai | Sep 1998 | A |
5819293 | Comer et al. | Oct 1998 | A |
5838965 | Kavanagh et al. | Nov 1998 | A |
5864854 | Boyle | Jan 1999 | A |
5881381 | Yamashita et al. | Mar 1999 | A |
5890174 | Khanna et al. | Mar 1999 | A |
5893920 | Shaheen et al. | Apr 1999 | A |
5913033 | Grout | Jun 1999 | A |
5920725 | Ma et al. | Jul 1999 | A |
5926822 | Garman | Jul 1999 | A |
5944789 | Tzelnic et al. | Aug 1999 | A |
5966716 | Comer et al. | Oct 1999 | A |
5987481 | Michelman et al. | Nov 1999 | A |
6021413 | Vaduvur et al. | Feb 2000 | A |
6055548 | Comer et al. | Apr 2000 | A |
6055549 | Takano | Apr 2000 | A |
6070177 | Kao et al. | May 2000 | A |
6112214 | Graham et al. | Aug 2000 | A |
6119151 | Cantrell et al. | Sep 2000 | A |
6134552 | Fritz et al. | Oct 2000 | A |
6134563 | Clancey et al. | Oct 2000 | A |
6134583 | Herriot | Oct 2000 | A |
6138130 | Adler et al. | Oct 2000 | A |
6151601 | Papierniak et al. | Nov 2000 | A |
6151624 | Teare et al. | Nov 2000 | A |
6216139 | Listou | Apr 2001 | B1 |
6292811 | Clancey et al. | Sep 2001 | B1 |
6334158 | Jennyc et al. | Dec 2001 | B1 |
6341291 | Bentley et al. | Jan 2002 | B1 |
6374268 | Testardi | Apr 2002 | B1 |
6477527 | Carey et al. | Nov 2002 | B2 |
6510439 | Rangarajan et al. | Jan 2003 | B1 |
6542933 | Durst, Jr. et al. | Apr 2003 | B1 |
6567822 | Cudahy et al. | May 2003 | B1 |
6631519 | Nicholson et al. | Oct 2003 | B1 |
6640234 | Coffen et al. | Oct 2003 | B1 |
6694321 | Berno | Feb 2004 | B1 |
6785704 | McCanne | Aug 2004 | B1 |
6820088 | Hind et al. | Nov 2004 | B1 |
7062502 | Kesler | Jun 2006 | B1 |
7139768 | Janzig et al. | Nov 2006 | B1 |
7174327 | Chau et al. | Feb 2007 | B2 |
7222294 | Coffen et al. | May 2007 | B2 |
7225189 | McCormack et al. | May 2007 | B1 |
20020049764 | Boothby et al. | Apr 2002 | A1 |
20020052769 | Navani et al. | May 2002 | A1 |
20020063734 | Khalfay et al. | May 2002 | A1 |
20020087729 | Edgar | Jul 2002 | A1 |
20020184043 | Lavorgna et al. | Dec 2002 | A1 |
20030046366 | Pardikar et al. | Mar 2003 | A1 |
20030145224 | Bailey | Jul 2003 | A1 |
20030154191 | Fish et al. | Aug 2003 | A1 |
20030154197 | Millet et al. | Aug 2003 | A1 |
20030158947 | Bloch et al. | Aug 2003 | A1 |
20030159089 | DiJoseph | Aug 2003 | A1 |
20030225758 | Yamasaki | Dec 2003 | A1 |
20040001106 | Deutscher et al. | Jan 2004 | A1 |
20040039743 | Maleport et al. | Feb 2004 | A1 |
20040103365 | Cox | May 2004 | A1 |
20040133652 | Miloushev et al. | Jul 2004 | A1 |
20040138815 | Li et al. | Jul 2004 | A1 |
20040172424 | Edelstein et al. | Sep 2004 | A1 |
20040193969 | Nemoto et al. | Sep 2004 | A1 |
20040236777 | Pardikar et al. | Nov 2004 | A1 |
20050034064 | Meyers et al. | Feb 2005 | A1 |
20050069361 | Wang et al. | Mar 2005 | A1 |
20050080823 | Collins | Apr 2005 | A1 |
20050091253 | Cragun et al. | Apr 2005 | A1 |
20050172261 | Yuknewicz et al. | Aug 2005 | A1 |
20050187897 | Pawar et al. | Aug 2005 | A1 |
20050228990 | Kato et al. | Oct 2005 | A1 |
20060004815 | Murata et al. | Jan 2006 | A1 |
20060020586 | Prompt et al. | Jan 2006 | A1 |
20060095447 | Dickinson et al. | May 2006 | A1 |
20060101038 | Gabriel et al. | May 2006 | A1 |
20060155705 | Kamper et al. | Jul 2006 | A1 |
20060161533 | Selca et al. | Jul 2006 | A1 |
20060168325 | Wood et al. | Jul 2006 | A1 |
20060168557 | Agrawal et al. | Jul 2006 | A1 |
20060200499 | Bhatia et al. | Sep 2006 | A1 |
20060242189 | Leetaru et al. | Oct 2006 | A1 |
20060259506 | Kim | Nov 2006 | A1 |
20070005630 | Selca et al. | Jan 2007 | A1 |
20070005634 | Selca et al. | Jan 2007 | A1 |
20070038702 | Taylor et al. | Feb 2007 | A1 |
20070198657 | Saliba et al. | Aug 2007 | A1 |
Number | Date | Country |
---|---|---|
1452981 | Sep 2004 | EP |
WO 0060484 | Oct 2000 | WO |
Number | Date | Country | |
---|---|---|---|
20070198657 A1 | Aug 2007 | US |