IP Library › Granted Patent US 10,691,694
Granted Patent B2
US 10,691,694 · App. 15/951,041 · Granted Jun 23, 2020

Method and system for defining an object-agnostic offlinable synchronization model

Inventors: Kaarthik Balasubrahmanian (Belmont, CA); Donald Creig Humes (Yorktown, VA); Hamid Bahadori (Atherton, CA); Sridhar Tadepalli (Bangalore, IN)
Assignee: Oracle International Corporation
G06F16/24552G06F9/466G06F16/2365G06F16/2386G06F16/2453G06F16/3349G06F16/951G06F16/9574
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,691,694
App. No.
15/951,041
Filed
Apr 11, 2018
Granted
Jun 23, 2020
Kind
B2
Examiner
VY, HUNG T
Art Unit
2163
USPC
707/610
Abstract

Some embodiments optimize a local, pending transaction queue of transactions locally executed by a client application to be synchronized with a server. Multiple transactions, which may be executed by the client application for a same local object, need to be synchronized with a server. The transactions, in queue for synchronization with the server, may include transactions to add, delete, or modify objects. Each set of transactions for a particular object in queue for synchronization with the server corresponds to a particular net effect on the server if synchronized individually to the server. The client application may replace the set of transactions for the particular object with a reduced set of transactions corresponding to the net effect, or entirely removed without replacement if there is no net effect of the set of transactions on the server.

Claims (46)

1. A non-transitory computer readable medium comprising instructions which, when executed by one or more hardware processors, causes performance of operations comprising:

defining an object-agnostic data structure at runtime according to metadata;

identifying a plurality of transactions in a pending transaction queue of locally executed transactions to be synchronized to a datastore;

determining a net effect on a particular object stored in the object-agnostic data structure based on at least a first transaction and a second transaction, in the pending transaction queue, that correspond to a same particular object;

generating a third transaction that modifies the particular object in accordance with the net effect on the particular object based on at least the first transaction and the second transaction; and

synchronizing the third transaction with the datastore without synchronizing the first transaction or the second transaction with the datastore.

2. The medium of claim 1 , wherein:

the pending transaction queue is stored on a client device;

the datastore is stored on a server; and

the client device and the server are intermittently communicatively coupled via a network;

wherein the synchronizing the third transaction is performed responsive to the client device and the server being communicatively coupled via the network.

3. The medium of claim 1 , wherein generating the third transaction that modifies the particular object in accordance with the net effect is responsive to determining that the second transaction does not have a dependency.

4. The medium of claim 1 , wherein the first transaction, second transaction, and third transaction reference the particular object stored in the object-agnostic data structure.

5. The medium of claim 4 , wherein the particular object stored in the object-agnostic data structure includes a different set of data fields than a corresponding object in the datastore that is updated when the third transaction is synchronized with the datastore.

6. A method comprising:

defining an object-agnostic data structure at runtime according to metadata;

identifying a plurality of transactions in a pending transaction queue of locally executed transactions to be synchronized to a datastore;

determining a net effect on a particular object stored in the object-agnostic data structure based on at least a first transaction and a second transaction, in the pending transaction queue, that correspond to a same particular object;

generating a third transaction that modifies the particular object in accordance with the net effect on the particular object based on at least the first transaction and the second transaction; and

synchronizing the third transaction with the datastore without synchronizing the first transaction or the second transaction with the datastore,

wherein the method is executed by at least one device including a hardware processor.

7. The method of claim 6 , wherein:

the pending transaction queue is stored on a client device;

the datastore is stored on a server; and

the client device and the server are intermittently communicatively coupled via a network;

wherein the synchronizing the third transaction is performed responsive to the client device and the server being communicatively coupled via the network.

8. The method of claim 6 , wherein generating the third transaction that modifies the particular object in accordance with the net effect is responsive to determining that the second transaction does not have a dependency.

9. The method of claim 6 , wherein the first transaction, second transaction, and third transaction reference the particular object stored in the object-agnostic data structure.

10. The method of claim 9 , wherein the particular object stored in the object-agnostic data structure includes a different set of data fields than a corresponding object in the datastore that is updated when the third transaction is synchronized with the datastore.

11. A system comprising:

one or more hardware processors;

instructions which, when executed by the one or more hardware processors, causes performance of operations comprising:

defining an object-agnostic data structure at runtime according to metadata;

identifying a plurality of transactions in a pending transaction queue of locally executed transactions to be synchronized to a datastore;

determining a net effect on a particular object stored in the object-agnostic data structure based on at least a first transaction and a second transaction, in the pending transaction queue, that correspond to a same particular object;

generating a third transaction that modifies the particular object in accordance with the net effect on the particular object based on at least the first transaction and the second transaction; and

synchronizing the third transaction with the datastore without synchronizing the first transaction or the second transaction with the datastore,

wherein the method is executed by at least one device including a hardware processor.

12. The system of claim 11 , wherein:

the pending transaction queue is stored on a client device;

the datastore is stored on a server; and

the client device and the server are intermittently communicatively coupled via a network;

wherein the synchronizing the third transaction is performed responsive to the client device and the server being communicatively coupled via the network.

13. The system of claim 11 , wherein generating the third transaction that modifies the particular object in accordance with the net effect is responsive to determining that the second transaction does not have a dependency.

14. The system of claim 11 , wherein the first transaction, second transaction, and third transaction reference the particular object stored in the object-agnostic data structure.

15. The system of claim 11 , wherein the particular object stored in the object-agnostic data structure includes a different set of data fields than a corresponding object in the datastore that is updated when the third transaction is synchronized with the datastore.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2018
From: BALASUBRAHMANIAN, KAARTHIK; HUMES, DONALD CREIG; BAHADORI, HAMID; TADEPALLI, SRIDHAR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 045555/0959 →
Continuity (4)
Provisional Application 62519076 · Jun 13, 2017
Provisional Application 62519068 · Jun 13, 2017
Provisional Application 62519072 · Jun 13, 2017
Related Publication 20180357237A1 · Dec 13, 2018