IP Library › Granted Patent US 9,071,623
Granted Patent B2
US 9,071,623 · App. 12/240,888 · Granted Jun 30, 2015

Real-time data sharing

Inventors: Daniel Arthursson (Linkoeping, SE); Marcus Bristav (Linkoeping, SE)
Assignee: Xcerion Aktiebolag
H04L67/1095G06F9/45504G06F9/542G06F9/45529
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,071,623
App. No.
12/240,888
Granted
Jun 30, 2015
Kind
B2
Abstract

Generally described, the present invention is directed to a network operating system that provides more effective ways of leveraging the connectivity of computer networks. In one embodiment, an XML virtual machine is implemented that accepts high-level application code written in an XML programming language as input. Functionality is provided to interpret or translate the application code written in an XML programming language into code that is suitable for execution across computer platforms. Moreover, the XML virtual machine supports the Model View Controller (MVC) design paradigm that facilitates true data abstraction from applications to a common data model. Multi-instance applications, with each instance potentially supporting multiple views, may be created and executed.

Claims (36)

1. A method implemented in computer-executable instructions that, when executed by a computer processor, satisfies a request by a second client computing device to open a file that is open by a first client computing device, the method comprising:

on a server computing device, retrieving from a file server and caching in memory on the server computing device file data associated with a file requested to be opened by the first client computing device;

transmitting to the first client computing device the file data associated with the file requested to be opened;

transmitting the file data to the second client computing device in response to a request by the second client computing device to open the file;

notifying the first client computing device that the file is concurrently opened by more than one client computing device;

obtaining any previously uncommitted transactions from the first client computing device, wherein a transaction is a code fragment that semantically describes an update to the file data implemented on the first client computing device, and wherein the transaction does not include all of the file data;

notifying the second client computing device that the file is concurrently opened by more than one client computing device; and

propagating any uncommitted transactions obtained from the first client computing device to the second client computing device, the transactions configured to allow the version of the file on the second client computing device to be updated with the updates to the file data implemented on the first client computing device before the file was opened by the second client computing device.

2. The method as recited in claim 1 , further comprising interpreting the transactions propagated to the second client computing device and updating the version of the file stored locally on the second client computing device.

3. The method as recited in claim 1 , wherein the file data is retrieved from a file server and cached in memory by a transaction coordinator, the transaction coordinator configured to instruct a message server to add the file to subscription lists associated with both the first and second client computing devices.

4. The method as recited in claim 1 , wherein propagating any previously uncommitted transactions between the first and second client computing devices includes;

receiving a transaction at a network service;

determining that the file is shared by multiple client computing devices; and

causing a message server to send the transaction to each client computing device that is registered as a listener on the file.

5. The method as recited in claim 1 , wherein data updates that occur when the file is open by the first and second client computing devices as represented in transactions are sent to the server-side and committed to the file data cached in memory without immediately being committed to the file maintained, in storage on a file server.

6. The method as recited in claim 1 , wherein a transaction affecting a file that is open by multiple users is committed to storage on the file server in response to a commit event; wherein the commit event is one of a user generating a command to save the file, each client computing device closing the file, and after a predetermined time period elapsing from creation of the transaction.

7. The method as recited in claim 6 , wherein, in response to the commit event, all transactions affecting a file that is open by multiple users are committed to storage on the file server, and the transactions affecting the file are cleared from the server computing device.

8. The method as recited in claim 7 , wherein, in response to the commit event, a notification is transmitted to all client computing devices having the file open to apply any outstanding transactions to the file data and to clear a list of transactions associated with the file.

9. The method as recited in claim 1 , wherein a user is authenticated as having rights to access the file before the file data is transmitted to a computing device associated with the user.

10. The method as recited in claim 1 , wherein a transaction manager on the second client computing device is configured to determine whether any conflicts exist between transactions committed to the file by the first client computing device and transactions generated locally when the second client computing device was offline.

11. The method as recited in claim 1 , further comprising committing the previously uncommitted transactions from the first client computing device to the cached file data in memory on the server computing device,

12. The method as recited in claim 1 , wherein the previously uncommitted transactions are created and stored by a transaction manager of the first client computing device.

13. The method as recited in claim 1 , further comprising:

receiving, by the server computing device, additional uncommitted transactions from the first client computing device and the second client computing device representing updates to the file data associated with the file concurrently opened by the computing devices;

distributing, by the server computing device, the additional uncommitted transactions received from the first client computing device to the second client computing device; and

distributing, by the server computing device, the additional uncommitted transactions received from the second client computing device to the first client computing device.

14. The method as recited in claim 13 , wherein a first additional uncommitted transaction is received by the server computing device from the first client computing device, wherein a second additional uncommitted transaction is received by the server computing device from the second client computing device, and wherein the first additional uncommitted transaction and the second additional uncommitted transaction are concurrently created by the first client computing device and the second client computing device and represent updates to the file data of the same file concurrently opened by the computing devices.

15. The method as recited in claim 1 , further comprising:

creating, by a transaction manager of the first client computing device, an uncommitted transaction that represents an update made by the first client computing device to the file data associated with the file;

applying, by the transaction manager of the first client computing device, the update to the file data associated with the file to a version of the file cached by the first client computing device; and

storing, by the transaction manager of the first client computing device, the uncommitted transaction.

16. The method as recited in claim 1 , further comprising:

receiving, by a transaction manager of the second client computing device, an uncommitted transaction that represents an update made by the first client computing device to the file data associated with the file;

applying, by the transaction manager of the second client computing device, the update to the file data associated with the file to a version of the file cached by the second client computing device; and

storing, by the transaction manager of the second client computing device, the uncommitted transaction.

17. The method as recited in claim 1 , wherein the file represents one or more of a tile system folder, an XML document, a UI XML document, a process XML document, a view XML document, a data document, a state XML document, a directory listing, an atom feed, an RSS feed, a JSON object, a text file, a binary file, a data object, and a data model.

Assignments (1)
NUNC PRO TUNC ASSIGNMENT Recorded Mar 18, 2009
From: ARTHURSSON, DANIEL; BRISTAV, MARCUS
To: XCERION AKTIEBOLAG
Reel/Frame 022413/0554 →
Continuity (22)
Provisional Application 60976216 · Sep 28, 2007
Provisional Application 60976222 · Sep 28, 2007
Provisional Application 60976246 · Sep 28, 2007
Provisional Application 60976249 · Sep 28, 2007
Provisional Application 60976252 · Sep 28, 2007
Provisional Application 60976258 · Sep 28, 2007
Provisional Application 60976266 · Sep 28, 2007
Provisional Application 60976269 · Sep 28, 2007
Provisional Application 60976275 · Sep 28, 2007
Provisional Application 60976281 · Sep 28, 2007
Provisional Application 60976283 · Sep 28, 2007
Provisional Application 60976292 · Sep 28, 2007
Provisional Application 60976301 · Sep 28, 2007
Provisional Application 60976304 · Sep 28, 2007
Provisional Application 60976308 · Sep 28, 2007
Provisional Application 60976311 · Sep 28, 2007
Provisional Application 60976312 · Sep 28, 2007
Provisional Application 60976320 · Sep 28, 2007
Provisional Application 60976325 · Sep 28, 2007
Provisional Application 60976327 · Sep 28, 2007
Provisional Application 60976339 · Sep 28, 2007
Related Publication 20090172087A1 · Jul 2, 2009