WO2002033575A2 - Concurrent file access - Google Patents
Concurrent file access Download PDFInfo
- Publication number
- WO2002033575A2 WO2002033575A2 PCT/GB2001/004653 GB0104653W WO0233575A2 WO 2002033575 A2 WO2002033575 A2 WO 2002033575A2 GB 0104653 W GB0104653 W GB 0104653W WO 0233575 A2 WO0233575 A2 WO 0233575A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- file
- block
- server
- application
- client
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
Definitions
- This invention relates to methods and apparatus for sharing file access in a computer network.
- Sequential working stems from the fundamental limitations of the underlying file system.
- the underlying file system does not permit more than one user to have write access to a file.
- other users may view documents concurrently but this is on a "read-only" basis and thus only one user may perform edits on the original document.
- a method of sharing file access in a computer network comprising the steps of storing the file in the form of a plurality of blocks, delivering the file to a first client application by delivering the block contents to the client application, monitoring user editing actions performed on - the delivered file in the first client application, during editing of the delivered file, locking a stored block which corresponds to the portion of the file being edited to prevent other client applications editing the same block, and updating the locked block with edits performed by the first client application.
- the method further includes delivering the updated block to other client applications which have the file open.
- the other client applications are kept up to date with the most current version of the file.
- the invention provides a method of enabling a client application to provide shared file access in a computer network comprising intercepting a file open request in the application, receiving a file from a server as a plurality of blocks, opening a file in the application and populating the opened file with the contents of the delivered blocks, intercepting user editing actions performed in the application, locking a block in the server which corresponds to a portion of the file being edited by a user via the application, updating the locked block in the server with the user edits when the user has moved to another portion of the file, and distributing the updated block to any other client applications which have the same file open.
- This aspect may be embodied in the form of a software wrapper, for example, for a legacy application.
- the application may be "concurrency enabled".
- an application may be written explicitly with the method of the first aspect in mind and thus the invention also provides a workstation in a computer network operable to receive a file from a server as a plurality of blocks, open a file in a workstation application and to populate the opened file with the contents of the delivered blocks, record user editing actions performed in the application, cause the server to lock a block in the server which corresponds to a portion of the file being edited by a user via the application, and send updates for the locked block to the server which include the user edits when the user has moved to another portion of the file.
- the invention provides a computer program for a client in a computer network embodying the steps of receiving a file from a server as a plurality of blocks, opening a file in the application and populating the opened file with the contents of the delivered blocks, recording user editing actions performed in the application, causing the server to lock a block in the server which corresponds to a portion of the file being edited by a user via the application, sending updates for the locked block to the server which include the user edits when the user has moved to another portion of the file, and receiving updates from the server which represent changes made to the file by other users in communication with the server.
- the storage of the file in blocks in accordance with the first aspect will generally be carried out by a server which may, for example, be a file server in a client/server environment or a workstation in a peer-to-peer network configuration. Further alternatives are the provision of the document store and a server based in an Internet environment.
- the invention also provides a server in a computer network operable to deliver a file to a client application as a plurality of blocks, receive a lock request from a client application, check that the block requested to be locked is not already locked by another client application and to lock the requested block if it is not already locked, receive an updated block from the client which requested the block to be locked, and distribute the updated block to any other client applications which have the same file open.
- the invention provides a computer program for a server embodying the steps of delivering a file to a client application as a plurality of blocks, receiving a lock request from a client application, checking that the block requested to be locked is not already locked by another client application and locking the requested block if it is not already locked, receiving an updated block from the client which requested the block to be locked, and distributing the updated block to any other client applications which have the same file open.
- the invention provides a storage block for containing a portion of a computer file comprising an ID field, a contents field and a style field.
- Figure 1 is a schematic block diagram of a computer network in accordance with the invention.
- FIG. 2 is a schematic block diagram of the hierarchical block storage of files in accordance with the invention.
- Figure 3 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 4 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 5 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 6 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 7 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 8 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 9 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 10 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 11 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 12 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 13 is a schematic block diagram of information flow between a client and a concurrency server
- Figure 14 is a flow chart showing the overall operation of the system of Figure 1 ;
- Figure 15 is a schematic flow chart showing the steps taken by an application wrapper in accordance with the intention.
- FIG 16 is a flow diagram showing the steps carried out by a server in accordance with the invention. Detailed description of the preferred embodiments
- Figure 1 shows a plurality of client applications 2 such as Microsoft Word (trade mark) Star Office or Word Perfect (trade mark). These "legacy" applications are interfaced via wrappers 4-1 and 4-2 to a network such as an Ethernet network, 6. The new and custom applications interface directly to the network 6 since (as will be described in detail below) such applications effectively include the functionality of the wrappers 4-1 and 4-2.
- client applications 2 such as Microsoft Word (trade mark) Star Office or Word Perfect (trade mark).
- These "legacy” applications are interfaced via wrappers 4-1 and 4-2 to a network such as an Ethernet network, 6.
- the new and custom applications interface directly to the network 6 since (as will be described in detail below) such applications effectively include the functionality of the wrappers 4-1 and 4-2.
- the network 6 allows the applications 2 to connect to a concurrency engine 8 via an application program interface (API) 10.
- the concurrency engine stores documents for editing in a format described in detail below.
- the elements of the documents are stored using extensible mark up language (XML) objects in an XML repository 12.
- XML extensible mark up language
- a further network 14 which may, for example, be another Ethernet LAN in a WAN (The network 14 may also be another part of the network 6), interfaces with the API 10 and also with another set of applications 16.
- the applications 16 are arranged for the display of documents stored in the concurrency engine 8.
- a wrapper 4- 3 may be used to provide an interface for legacy applications such as Microsoft Word (trade mark), Star Office and/or Power Point (trade mark).
- the document may be formatted by the engine 8 and API 10 in hypertext transfer protocol (http) format (in which case it may be transmitted to HTML, WAP or PDF enable display devices), extensible mark up language (XML) which is interpretable by existing applications such as Quark Express or in XML transformed by applying extensible style sheet language (XSL) to modified XML or some other format.
- http hypertext transfer protocol
- XML extensible mark up language
- XSL extensible style sheet language
- the networks 6 and 14 need not be LANs but may, for example, be portions of an Internet, Intranet or Extranet.
- the concurrency engine 8 similarly may be located on a file server, on a workstation in a peer-to-peer network or on an Internet server such as a web server. All that is required is that the applications 4 are able to send and receive data to the API 10.
- Documents are stored in the engine 8 as blocks. With reference to Figure 2, a block is an element of a document such as a paragraph of text, a table, a table cell, or an embedded object, e.g. a picture.
- a container block 18-1 or 18-3 is a "parent" block which itself contains additional blocks or “children” 20-1 and 20-2 and 20-3 respectively.
- the document's root block 22 is the "parent" of the first level of content of the document, which in a simple unstructured document would be its entire contents.
- the title of the document , its ID and a list of style definitions is stored in a Document object 17.
- a client process 2 first connects to a specific concurrency engine 8.
- the engine 8 is located via a URL which points to a text file containing a unique IOR (Interoperable Object Reference).
- the client 2 asks the user for a username and password and sends these to the engine 8 as a login request.
- the username and password may be internal to the engine, or authenticated using an external security service, e.g. NDS, LDAP, NT, etc.
- the engine 8 creates a new thread and Corba object for the connected client 2 and returns the unique IOR for this object to the client.
- the client 2 then makes all further requests to that object.
- the client 2 If the client 2 requires updates made by other concurrently connected clients, it requests a "broadcast IOR" from the engine.
- the engine creates a further thread and Corba object which it will use to send updates made by other clients 2 to this client 2.
- the engine returns the unique IOR for this object to the client 2 and the client 2 makes requests for broadcast updates from that object.
- the client 2 is considered to be connected to the engine 8. If any of the steps fails, the client 2 is disconnected from the engine and displays a message to the user along the lines of "Failed to connect to the Concurrency Engine.”
- the engine also supports direct connection from Java clients.
- the client connects to a specified port on the machine which is running the Engine. Two parallel sockets connections are created, one in each direction.
- the client uses one to make requests of the Engine.
- the Engine uses the other to broadcast changes made by other clients.
- the client 2 requests a list of documents to which the logged in user has access. These are returned as a list of owned documents (documents this user created), a list of documents to which the user has write access, and a list of documents to which the user has read-only access. A unique document ID number and a document title is returned for each listed document.
- the document list is displayed as the contents of an extra storage drive in the operating system shell (e.g. Microsoft Windows Explorer and the Windows File Dialog).
- the owner (creator) of a document has control over which users may access the document.
- Other users can be granted write access or read-only access by calling the API 10, sending the document ID and the name of the user to be added, and setting a flag to read or write.
- access can be removed by calling the API 10, sending the document ID and the name of the user to be removed.
- a document can be made read-only to everyone who has access to the engine 8 by calling the API 10 and sending the document ID. This global access can also be removed by calling the API 10 and sending the document ID. Global changes may also be made for all users of a particular document.
- the engine 8 If the user(s) concerned are connected when their access is changed, the engine 8 notifies the client which then displays a message to the user along the lines of "You have just been granted access Jo New Document".
- the access right modification functionality is built into a dialog which is opened by an extra menu option.
- the client requests newDocument and the engine creates an empty document in the database 12, owned by this user, and returns a unique ID number and unique initial default title "New Document", "New Document 2", etc.
- the client requests getSummaryDocDetails, sending the ID of the document to be opened.
- the Engine returns the name of the document's creator, the number of users who have write access to this document and either the number of users who have read-only access, or a flag indicating that everyone has read-only access. It also returns the number of checkpoint versions of this document. (A checkpoint is a read-only snapshot of the document as it was at a moment in time.) Finally, the unique ID of the root block of the document is returned.
- the contents of the first structure level 18-1 , 18-2 and 18- 3 of the document are retrieved with getDocumentBlocks, sending the document's ID.
- the engine 8 returns the number of styles which may be applied to that document (In Word, the contents of the drop down list in the Formatting toolbar containing "Normal”, “Body Text”, “Heading 1", “Heading 2”, etc.). It also returns the number of blocks in the first structure level of the document.
- the actual styles are retrieved with getXMLEIementArray and the blocks are retrieved with getServerCachedTextBlockArray.
- Each array element relates to a block and for each block represented in the array, the information returned is: unique block ID, block text, name of style attached to block (may be blank), and a flag indicating whether block is a container.
- the contents of a container block are retrieved with getChildren, sending the ID of the block. This call must be followed by getServerCachedTextBlockArray, as for getDocumentBlocks.
- Word Wrapper client 4-1 the retrieved paragraphs are inserted into the Word document, via Word's own COM API, building up a document in Word's memory. A .doc file is not created. The ID of each block is hidden in Word's "Field Codes".
- getDocumentBlocks Once getDocumentBlocks is called by a client, the Engine will send it all changes made to that document by other connected clients, immediately as they occur. Requests to change the document made by the client and notifications of changes made by other clients do not interfere with each other, they can happen concurrently because there are two parallel client-Engine connections, one in each direction.
- Modifying a paragraph When a user attempts to modify the document for example by typing a character, pressing the return, delete or backspace key, cutting part of the text, pasting text, or selecting a menu option such as Insert, or changing a paragraph's style, the client requests a lock on the current paragraph, with requestLock ( Figure 8), sending the ID of the block which corresponds to the paragraph which is being edited. If the relevant block is not already locked by another user, the Engine locks it in the database and returns "success", otherwise, the Engine returns the name of the user who holds the lock.
- requestLock Figure 8
- the client ignores further key strokes, except navigation inputs such as arrow key keypresses, until the user has moved to a different paragraph.
- the client displays a message to the user such as "This paragraph is being modified by xxxx".
- the user can continue to modify the paragraph and all other users are locked out of it, until the user either navigates out of the paragraph, or selects "Save" from the menu or toolbar.
- the changes to the paragraph are sent to the Engine with updateBlockTextAndlnfo; ( Figure 9) sending the block ID, the new text, the new style of the paragraph, and the ID of the previous paragraph (block) in the document (this indicates the position of the block in the document).
- the Engine will store the update in the database, unlock the block, return a status code indicating success or failure of the update to the client, and will broadcast the change to all other connected clients who have this document currently open.
- the preferred embodiment provides support for styles at sub-paragraph level, e.g. applying "bold” or "italic” to one or two words in a paragraph.
- Cut and paste When a paragraph is cut, deleteBlock ( Figure 10) is called, sending the ID of the paragraph. If the paragraph is not already locked by earlier modifications, the Engine will lock the block and mark it for deletion. It is not actually removed from the database at this point, but it is removed from the document. If the block is then pasted, the block is then re-inserted using pasteBlock ( Figure 11), sending the ID of the block, the ID of the block immediately before it in its new position (-1 if it will be the first block in the structure level), the ID of its parent block in the document structure (this will be the document's root block if the document is unstructured), and the ID of the document.
- pasteBlock Figure 11
- the ID of the block immediately before the reinsertion point is used to indicate the block's position in "text editor” and "newspaper” format only.
- “whiteboard” format the information sent is the block's x, y, width, height.
- “table” format no positional information is sent because the cell's position in the table is fixed.
- pasteBlock is called to return the block to the database.
- updateBlockTextAndlnfo When a user inserts a new paragraph, no action is taken by the client until the user navigates out of the paragraph. Once this has happened, updateBlockTextAndlnfo is called, with a special flag indicating a new block.
- the engine 8 returns the ID which it has assigned to the new block and broadcasts the new block to other, connected clients with that document open.
- pasteBlock is called as described above in connection with "Moving a Paragraph".
- deleteBlock When a user removes an entire paragraph, deleteBlock is called, sending the ID of the block to the engine 8. If the user then reverses the removal, pasteBlock is called to put it back again.
- Tables are stored as a special type of block whose children are the cells of the table. If the table itself is modified e.g. add row, change line style, etc, the table block is locked with requestLock. To change the table style updateBlockTextAndlnfo is called once the Table is finished with. To insert or remove rows and cells, insertTableRow, insertTableColumn, removeTableRow or removeTableColumn are called. If one ceil of the table is modified, the block representing that cell is locked with requestLock, then updateBlockTextAndlnfo is called once the user leaves the cell. When calling updateBlockTextAndlnfo on a table cell, the previous block ID is irrelevant, as the cell's position in the table is fixed.
- An existing document (such as a Word document stored in a .doc file) can be imported into the engine by opening it in the existing application and selecting a special menu option "Concurrency Enable” which is inserted by the wrapper 4-1 , 4-2 or exists in the new or custom application 2.
- the client calls newDocument ( Figure 12), then converts the document into XML and calls importFromFile ( Figure 13), sending the document ID as returned by newDocument, and the XML as an array of strings.
- the engine 8 returns "success" when the document contents have been saved. At this point, the wrapper 4-1 , 4-2 shuts the document and reopens it from the engine 8.
- documents are stored in blocks.
- a container flag (which is not stored in the database), is used to denote a container block when transferring information about a block between the server and a client.
- a block can represent any part of a document.
- blocks represent paragraphs of text.
- Word a block which has a Heading style applied to it is considered to represent a structure level in the document, and all blocks between it and the next block in the document with the same style attached are considered to be its children. This is very useful when loading a very large structured document over a dial-up connection, because the document can be loaded one section at a time as the user navigates through the document, by calling getChildren. The user does not need to wait several minutes while a multi-megabyte document is downloaded but instead can navigate quickly to the area to be modified.
- a block can represent just one paragraph of text, or a structure level with further blocks as its children.
- Such a "container block” can store its child blocks in a variety of ways. For a page of text, the blocks are stored and sent to the client as an ordered array. In a table container block, the blocks (cells) are stored in a two- dimensional array. As well as embedded tables, this presentation type may be used to represent a spreadsheet. There is also a third type of container block: a "whiteboard". In this case, each block has a rectangle with x, y, width and height, in which its co-ordinates are displayed. This is used for a wrapper for graphics programs such as MS PowerPoint.
- a presentation slide may be represented as rectangles of fixed position and size, each containing text, an image, an animation, or further blocks.
- the "whiteboard” container may also be used for concurrent form- designer software.
- the block position information sent to the Engine is x, y, width, height, rather than the ID of the previous block.
- a fourth container type is "newspaper" in which the blocks are stored in an ordered array, but are displayed in a number of columns, with text wrapping from one column to the next.
- a third block, type (not a container or text) contains embedded objects, e.g. images, as binary data.
- each document is stored as a tree of XML Elements in the repository 12.
- the document is also represented as a tree of blocks ( Figure 2).
- the XML elements are mapped to the block tree so that the engine 8 has control over how the document is divided into units for editing.
- a paragraph having one bold word in it would be represented using 3 XML elements (one for the emboldened word and one each for the portions of the sentence either side of the emboldened word). Locking at XML element level in this paragraph would be nonsensical, so it is necessary to impose a structure to represent paragraphs, which is a much more intuitive locking unit.
- Figure 14 summarises in flow chart form the overall operation of the system of Figure 1. Initially, a file is stored in blocks (step 30) and then on request, the file is delivered in the form of blocks to a client application 2 (step 32).
- the wrapper 4-1 or 4-2 or the new or custom application 2 monitors the user edits (step 34). When it is detected that a change has been made to a particular portion of the document, a request is sent to the engine 8 to lock the block corresponding to the portion of the document which is being edited (step 36).
- the file block corresponding to the edited portion is updated (step 38) and sent to the concurrency engine 8.
- Figure 15 summarises the operation of an application wrapper 4-1 or 4-2.
- The- wrapper intercepts a file open request (step 42) and receives the file contents as a plurality of blocks from the engine 8 (step 44).
- the wrapper then interacts with the application to populate an open file with the block contents delivered by the concurrency engine (step 46).
- wrapper intercepts user edits (step 48), requests locking of the relevant block (step 50) and sends an updated block to the engine 8 once editing has finished (step 52).
- the application 2 requests locking of that of the corresponding block within the engine 8 (step 56).
- the engine 8 checks whether the relevant block has already been locked (which indicates that it is already being edited). This occurs in step 58. If the block is not locked then the engine 8 locks the block (step 60) to prevent other users editing that portion of the document at the same time. If the block is already locked then an error message is sent back to the application 2 or 16 with information about who is already editing the document (step 62).
- the engine 8 receives the updated block (step 63), unlocks the block in the server copy (step 61)and distributes it to other clients who are editing the same document (step 64).
- a "wrapper" client is built around an existing application, such as Microsoft Word, PowerPoint, Excel.
- the wrapper intercepts keyboard and mouse actions intended for the underlying application and uses them to feed data in and out of the Engine, via the API, instead of a file.
- the wrapper does not prevent the application from storing some documents in files, in the conventional way (instead of in the Engine), if the user desires,.
- a custom client is an application written from scratch solely to work with the Engine. Either a wrapper or custom client could be written to connect to the Engine via Corba, or Java sockets.
- Both wrapper and custom clients can begin a new document in the Engine, then import an existing file's content into that document.
- the Word Wrapper user for example, experiences this import as saving the document into a "file” onto a special drive which is mapped onto the Engine.
- an extra menu option is inserted by the Wrapper into Word's menu which says "Concurrency Enable Document" to cause the importation to begin.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Operations Research (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Economics (AREA)
- Marketing (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2001295748A AU2001295748A1 (en) | 2000-10-18 | 2001-10-18 | Concurrent file access |
GB0311372A GB2390713B (en) | 2000-10-18 | 2001-10-18 | Concurrent file access |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US69470900A | 2000-10-18 | 2000-10-18 | |
US09/694,709 | 2000-10-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2002033575A2 true WO2002033575A2 (en) | 2002-04-25 |
WO2002033575A3 WO2002033575A3 (en) | 2003-10-16 |
Family
ID=24789953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/GB2001/004653 WO2002033575A2 (en) | 2000-10-18 | 2001-10-18 | Concurrent file access |
Country Status (3)
Country | Link |
---|---|
AU (1) | AU2001295748A1 (en) |
GB (1) | GB2390713B (en) |
WO (1) | WO2002033575A2 (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1385104A3 (en) * | 2002-07-25 | 2004-08-18 | Microsoft Corporation | A system and method for image editing |
WO2006084331A1 (en) * | 2005-02-11 | 2006-08-17 | Nsynergy Pty Ltd | Communication system |
EP1543430A4 (en) * | 2002-08-23 | 2007-06-27 | Seagate Technology Llc | Peer to peer remote data storage and collaboration |
EP1830260A3 (en) * | 2005-12-14 | 2008-04-09 | Seiko Epson Corporation | Mounting device, electronic device, method of controlling mounting device, controlling program, and recording medium |
CN100438416C (en) * | 2005-12-02 | 2008-11-26 | 无锡永中科技有限公司 | Method for realizing file coordination processing |
US7707299B2 (en) | 2006-11-21 | 2010-04-27 | International Business Machines Corporation | Data package with recovery data |
US7941399B2 (en) | 2007-11-09 | 2011-05-10 | Microsoft Corporation | Collaborative authoring |
US8301588B2 (en) | 2008-03-07 | 2012-10-30 | Microsoft Corporation | Data storage for file updates |
US8346768B2 (en) | 2009-04-30 | 2013-01-01 | Microsoft Corporation | Fast merge support for legacy documents |
US8352870B2 (en) | 2008-04-28 | 2013-01-08 | Microsoft Corporation | Conflict resolution |
US8655847B2 (en) | 2010-08-16 | 2014-02-18 | Microsoft Corporation | Mirroring data changes in a database system |
US8825758B2 (en) | 2007-12-14 | 2014-09-02 | Microsoft Corporation | Collaborative authoring modes |
CN105681367A (en) * | 2014-11-17 | 2016-06-15 | 中国移动通信集团公司 | Method, server and client for sharing file contents |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2409541A (en) | 2003-12-23 | 2005-06-29 | Mandorla Technology Ltd | Editable information management system and method |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5043876A (en) * | 1988-05-27 | 1991-08-27 | International Business Machines Corporation | N-level file shadowing and recovery in a shared file system |
US5999976A (en) * | 1997-07-11 | 1999-12-07 | International Business Machines Corporation | Parallel file system and method with byte range API locking |
-
2001
- 2001-10-18 WO PCT/GB2001/004653 patent/WO2002033575A2/en active Application Filing
- 2001-10-18 AU AU2001295748A patent/AU2001295748A1/en not_active Abandoned
- 2001-10-18 GB GB0311372A patent/GB2390713B/en not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1385104A3 (en) * | 2002-07-25 | 2004-08-18 | Microsoft Corporation | A system and method for image editing |
EP1543430A4 (en) * | 2002-08-23 | 2007-06-27 | Seagate Technology Llc | Peer to peer remote data storage and collaboration |
WO2006084331A1 (en) * | 2005-02-11 | 2006-08-17 | Nsynergy Pty Ltd | Communication system |
CN100438416C (en) * | 2005-12-02 | 2008-11-26 | 无锡永中科技有限公司 | Method for realizing file coordination processing |
EP1830260A3 (en) * | 2005-12-14 | 2008-04-09 | Seiko Epson Corporation | Mounting device, electronic device, method of controlling mounting device, controlling program, and recording medium |
US7707299B2 (en) | 2006-11-21 | 2010-04-27 | International Business Machines Corporation | Data package with recovery data |
US8352418B2 (en) | 2007-11-09 | 2013-01-08 | Microsoft Corporation | Client side locking |
US7941399B2 (en) | 2007-11-09 | 2011-05-10 | Microsoft Corporation | Collaborative authoring |
US10394941B2 (en) | 2007-11-09 | 2019-08-27 | Microsoft Technology Licensing, Llc | Collaborative authoring |
US8825758B2 (en) | 2007-12-14 | 2014-09-02 | Microsoft Corporation | Collaborative authoring modes |
US20140373108A1 (en) | 2007-12-14 | 2014-12-18 | Microsoft Corporation | Collaborative authoring modes |
US10057226B2 (en) | 2007-12-14 | 2018-08-21 | Microsoft Technology Licensing, Llc | Collaborative authoring modes |
US8301588B2 (en) | 2008-03-07 | 2012-10-30 | Microsoft Corporation | Data storage for file updates |
US8352870B2 (en) | 2008-04-28 | 2013-01-08 | Microsoft Corporation | Conflict resolution |
US9760862B2 (en) | 2008-04-28 | 2017-09-12 | Microsoft Technology Licensing, Llc | Conflict resolution |
US8346768B2 (en) | 2009-04-30 | 2013-01-01 | Microsoft Corporation | Fast merge support for legacy documents |
US8655847B2 (en) | 2010-08-16 | 2014-02-18 | Microsoft Corporation | Mirroring data changes in a database system |
CN105681367A (en) * | 2014-11-17 | 2016-06-15 | 中国移动通信集团公司 | Method, server and client for sharing file contents |
Also Published As
Publication number | Publication date |
---|---|
WO2002033575A3 (en) | 2003-10-16 |
GB0311372D0 (en) | 2003-06-25 |
AU2001295748A1 (en) | 2002-04-29 |
GB2390713A (en) | 2004-01-14 |
GB2390713B (en) | 2005-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7818663B2 (en) | Editable information management system and method | |
EP3549013B1 (en) | Spreadsheet-based software application development | |
US7290205B2 (en) | System and method for management of document cross-reference links | |
US7430711B2 (en) | Systems and methods for editing XML documents | |
US7912811B2 (en) | Computer-based system and computer program product for collaborative editing of documents | |
US7406664B1 (en) | System for integrating HTML Web site views into application file dialogs | |
US7849401B2 (en) | Method and system for enabling collaborative authoring of hierarchical documents with locking | |
EP1927922A1 (en) | Data managing apparatus, data editing apparatus, data browsing apparatus, data managing method, data editing method, and data browsing method | |
US20090225981A1 (en) | Document processing and management approach to adding an exclusive plugin implementing a desired functionality | |
WO2002033575A2 (en) | Concurrent file access | |
US20060248442A1 (en) | Web page authoring tool for structured documents | |
US20090019064A1 (en) | Document processing device and document processing method | |
CN102682035A (en) | Data management method and system | |
JP3434038B2 (en) | Network construction support system | |
US6760886B1 (en) | Ensuring referential integrity when using WebDAV for distributed development of a complex software application | |
US20080133563A1 (en) | Data Processing Device And Data Processing Method | |
US20090021767A1 (en) | Document processing device | |
EP1811399A1 (en) | Data processing device and data processing method | |
AU1933801A (en) | Method for enforcing workflow processes for website development and maintenance | |
Paoli | Cooperative work on the network: edit the WWW! | |
EP1821220A1 (en) | Data processing device, document processing device, and document processing method | |
US20040025141A1 (en) | Vectoreyes web-viewer | |
US20080262832A1 (en) | Document Processing Device, and Document Processing Method | |
Collins et al. | Lotus Domino Release 5.0: A Developer's Handbook | |
US20080147957A1 (en) | Archiver Device, Data Acquisition Device, and Data Acquisition Method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PH PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
ENP | Entry into the national phase |
Ref document number: 0311372 Country of ref document: GB Kind code of ref document: A Free format text: PCT FILING DATE = 20011018 Format of ref document f/p: F |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
122 | Ep: pct application non-entry in european phase | ||
NENP | Non-entry into the national phase |
Ref country code: JP |