IP Library › Granted Patent US 10,936,292
Granted Patent B2
US 10,936,292 · App. 16/264,077 · Granted Mar 2, 2021

Offline capabilities for live applications in a cloud collaboration platform

Inventors: Julie Tung (Los Altos, CA); Rajeev Nayak (San Francisco, CA); Kevin Gibbs (San Francisco, CA); Bret Taylor (Lafayette, CA); Yang Su (San Francisco, CA); Nate Botwick (San Francisco, CA); Pedram Razavi (San Francisco, CA); Scott Goodfriend (Berkeley, CA); Nikrad Mahdi (San Francisco, CA); Andy Chung (Berkeley, CA); Drew Hamlin (San Francisco, CA); Patrick Linehan (San Francisco, CA); Sophia Westwood (San Francisco, CA); Lindsey Simon (San Francisco, CA); Shrey Banga (San Francisco, CA); Diana Berlin (San Francisco, CA)
Assignee: salesforce.com, inc.
G06F8/60G06F8/34G06F8/36G06F8/71G06F9/451G06F9/5072G06F9/5077G06F9/54G06F12/0871G06F16/172G06F16/1734G06F16/1774G06F16/252G06F16/901G06F16/93G06F21/31G06F21/53G06F21/563G06F40/166H04L63/10H04L63/20H04L65/4015H04L67/34
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 10,936,292
App. No.
16/264,077
Granted
Mar 2, 2021
Kind
B2
Abstract

Disclosed herein are system, method, and computer program product embodiments for providing offline capabilities to customizable live applications in a cloud collaboration platform. The cloud collaboration platform may provide offline functions and a data application programming interface to devices connecting to the cloud collaboration platform. The offline capabilities allow devices to store data related to documents and customizable live applications in a local cache. The offline capabilities retrieve data from and store modifications to data within the local cache. The cloud collaboration platform may subsequently process the changes and determine if conflicts arise, resolving conflicts where appropriate and possible. The cloud collaboration platform may then determine a final state for a record, return the final state to the devices, and update the local caches.

Claims (80)

1. A method, comprising:

exposing, by a cloud collaboration platform, offline functions and a data API to a live application to facilitate an offline mode on a device,

wherein the live application creates a record comprising a sequence number and a record type using the data API;

causing, by the cloud collaboration platform, the device to store a local version of the record in a local cache;

causing, by the cloud collaboration platform, the device to store a change to the local version of the record in the local cache using the offline functions;

receiving, by the cloud collaboration platform, the change from the device;

determining, by the cloud collaboration platform, a final state for the record based on the change, the record type, and the sequence number;

applying, by the cloud collaboration platform, the final state to the record in a data storage in the cloud collaboration platform; and

sending, by the cloud collaboration platform, the final state of the record to the device for application to the local version of the record in the local cache,

wherein at least one of the exposing, causing, receiving, determining, applying, and sending are performed by one or more computers.

2. The method of claim 1 , the determining further comprising:

receiving, by the cloud collaboration platform, a second change to the record;

determining, by the cloud collaboration platform, the change and the second change creates a conflict; and

resolving, by the cloud collaboration platform, the conflict based on the record type and the sequence number.

3. The method of claim 1 , the determining further comprising:

receiving, by the cloud collaboration platform, a second change to the record;

determining, by the cloud collaboration platform, that the change and the second change can be applied to the record without conflict based on the record type, the change, and the second change; and

applying, by the cloud collaboration platform, the change and the second change to determine the final state of the record.

4. The method of claim 1 , further comprising:

causing, by the cloud collaboration platform, the device to download data enabling the device to load a document in the offline mode and store the data in the local cache, wherein the live application is embedded in the document.

5. The method of claim 1 , wherein the record references a list of records.

6. The method of claim 1 , further comprising:

causing, by the cloud collaboration platform, the device to store an unsaved indicator in the local cache in association with the record when the change occurs; and

removing, by the cloud collaboration platform, the unsaved indicator after the sending the final state to the device.

7. The method of claim 1 , further comprising:

determining, by the cloud collaboration platform, an order to apply received changes based on sequence numbers; and

applying, by the cloud collaboration platform, the received changes to the data storage in the determined order.

8. A system, comprising:

a memory; and

at least one processor coupled to the memory and configured to:

expose offline functions and a data API to a live application in a cloud collaboration platform to facilitate an offline mode on a device,

wherein the live application creates a record comprising a sequence number and a record type using the data API;

cause the device to store a local version of the record in a local cache;

cause the device to store a change to the local version of the record in the local cache using the offline functions;

receive the change from the device;

determine a final state for the record based on the change, the record type, and the sequence number;

apply the final state to the record in a data storage in the cloud collaboration platform; and

send the final state of the record to the device for application to the local version of the record in the local cache.

9. The system of claim 8 , wherein to determine a final state the at least one processor further configured to:

receive a second change to the record;

determine the change and the second change creates a conflict; and

resolve the conflict based on the record type and the sequence number.

10. The system of claim 8 , wherein to determine a final state the at least one processor further configured to:

receive a second change to the record;

determine that the change and the second change can be applied to the record without conflict based on the record type, the change, and the second change; and

apply the change and the second change to determine the final state of the record.

11. The system of claim 8 , the at least one processor further configured to:

cause the device to download data enabling the device to load a document in the offline mode and store the data in the local cache, wherein the live application is embedded in the document.

12. The system of claim 8 , wherein the record references a list of records.

13. The system of claim 8 , the at least one processor further configured to:

cause the device to store an unsaved indicator in the local cache in association with the record when the change occurs; and

remove the unsaved indicator after the sending the final state to the device.

14. The system of claim 8 , the at least one processor further configured to:

determine an order to apply received changes based on sequence numbers; and

apply the received changes to the data storage in the determined order.

15. A non-transitory computer-readable device having instructions stored thereon that, when executed by at least one computing device, causes the at least one computing device to perform operations comprising:

exposing offline functions and a data API to a live application in a cloud collaboration platform to facilitate an offline mode on a device,

wherein the live application creates a record comprising a sequence number and a record type using the data API;

causing the device to store a local version of the record in a local cache;

causing the device to store a change to the local version of the record in the local cache using the offline functions;

receiving the change from the device;

determining a final state for the record based on the change, the record type, and the sequence number;

applying the final state to the record in a data storage in the cloud collaboration platform; and

sending the final state of the record to the device for application to the local version of the record in the local cache.

16. The non-transitory computer-readable device of claim 15 , the determining comprising:

receiving, by the cloud collaboration platform, a second change to the record;

determining, by the cloud collaboration platform, the change and the second change creates a conflict; and

resolving, by the cloud collaboration platform, the conflict based on the record type and the sequence number.

17. The non-transitory computer-readable device of claim 15 , the determining comprising:

receiving a second change to the record;

determining that the change and the second change can be applied to the record without conflict based on the record type, the change, and the second change; and

applying the change and the second change to determine the final state of the record.

18. The non-transitory computer-readable device of claim 15 , the operations further comprising:

causing the device to download data enabling the device to load a document in the offline mode and store the data in the local cache, wherein the live application is embedded in the document.

19. The non-transitory computer-readable device of claim 15 , the operations further comprising:

causing the device to store an unsaved indicator in the local cache in association with the record when the change occurs; and

removing the unsaved indicator after the sending the final state to the device.

20. The non-transitory computer-readable device of claim 15 , the operations further comprising:

determining an order to apply received changes based on sequence numbers; and

applying the received changes to the data storage in the determined order.

Assignments (2)
CHANGE OF NAME Recorded Aug 4, 2026
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 076118/0548 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2021
From: TUNG, JULIE; NAYAK, RAJEEV; GIBBS, KEVIN; TAYLOR, BRET; SU, YANG; BOTWICK, NATE; BERLIN, DIANA; RAZAVI, PEDRAM; GOODFRIEND, SCOTT; MAHDI, NIKRAD; CHUNG, ANDY; HAMLIN, DREW; LINEHAN, PATRICK; WESTWOOD, SOPHIA; SIMON, LINDSEY; BANGA, SHREY
To: SALESFORCE.COM, INC.
Reel/Frame 054795/0178 →
Continuity (3)
Provisional Application 62751074 · Oct 26, 2018
Provisional Application 62751058 · Oct 26, 2018
Related Publication 20200133922A1 · Apr 30, 2020
Cited By (1)
US 12,242,834