IP Library Granted Patent US 8,856,234
Granted Patent B2
US 8,856,234 · App. 13/780,725 · Granted Oct 7, 2014

System and method for performing distributed asynchronous calculations in a networked environment

Inventors: Robert A. Kluin (Ames, IA); Beau D. Lyddon (Ames, IA)
Assignee: Workiva LLC
H04L67/42G06F17/30952G06F17/246G06F17/30563G06F17/30604
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 8,856,234
App. No.
13/780,725
Granted
Oct 7, 2014
Kind
B2
Abstract

A method and associated system are provided for performing calculations in a distributed networked environment, comprising: updating a source element on a first computer; sending a calculate update signal to a target calculated element for updating on a target element computer that may be the first computer or a second computer connected to the first computer that uses the source element in a calculation; obtaining the updated source element by a process on the target element computer associated with the target calculated element in response to the sending; and performing a calculation to update the target calculated element using the obtained updated source element.

Claims (94)

1. A method for performing calculations in a distributed networked environment, comprising:

updating a source element on a first computer;

sending a calculate update signal which is a message communicated through a message queuing system in response to the updating, specifically directed to a target calculated element for updating on a target element computer that may be the first computer or a second computer connected to the first computer that uses the source element in a calculation;

obtaining the updated source element by a process on the target element computer associated with the target calculated element in response to the sending; and

performing a calculation to update the target calculated element using the obtained updated source element

wherein:

at least one of the elements comprises a locally stored adjacency list comprising:

a used input list comprising a list of source elements that is separate from a particular element that defines each and every source element that is used by the particular element in its calculations; and

a using output list of other target elements separate from the particular element that use the particular element in a calculation;

the method further comprising:

sending a message directly to each of all elements in the using output list of the adjacency list.

2. The method according to claim 1 , further comprising:

dispatching, by a dispatcher, a first and second update message directed to a first target element;

bundling the first and second update message into a bundled message;

assigning a bundled message identifier to the bundled message;

sending the bundled message to a shard processor that handles the bundled message;

applying each message in the bundled message to the first target element; and

acknowledging, by the shard processor to the dispatcher, application of each bundled message.

3. The method according to claim 2 , further comprising:

determining, by the dispatcher, a state of completeness if all bundled messages have been acknowledged.

4. The method according to claim 2 , further comprising:

dispatching, by the dispatcher, a third and fourth update message directed to a second target element;

bundling the third and fourth update message into a second bundled message;

assigning a second bundled message identifier to the second bundled message; and

sending the second bundled message to the shard processor that handled the bundled message.

5. The method according to claim 4 , further comprising:

assigning a common graph identifier to each of the first target element and the second target element that are related to each other; and

splitting a graph containing the first target element and the second target element after the assigning; and

maintaining the common graph identifier in each of the first target element and the second target element after the split.

6. The method according to claim 1 , further comprising eliminating redundant messages for the updating from the message queuing system.

7. The method according to claim 1 , wherein:

the using output list for one of the source elements comprises:

a pending list of target elements that have not indicated having seen a current version of the source element; and

a completed list of target elements that have indicated having seen a current version of the source element;

the method further comprising:

moving one of the target elements from the pending list to the completed list when that target element indicates it has seen the current version of the source element; and

storing the other elements that have seen the element at its current version.

8. The method of claim 1 , further comprising:

defining a graph as a plurality of elements;

creating a graph table comprising a plurality of records, wherein each record corresponds to a table element that is one of the plurality of elements, each record comprising:

an element number;

a revision number;

an expected count number;

a pending element identifier list that is a list of elements expected to reference this element but that have not yet seen the element at its current revision; and

a complete element identifier list that is a list of elements which have seen this element at its current version;

updating a record in response to an element calculate signal;

wherein:

each table element is designated as being in a state of complete, incomplete, or unseen;

an element in the complete state is one in which the element is seen and the pending list is empty;

an element in the incomplete state is one in which the pending list is not empty; and

an element in the unseen state is one for which no signal has been received, but that is used by an element that has been seen.

9. The method of claim 8 , further comprising:

determining that the graph is complete when all table elements are in a state of complete.

10. The method of claim 8 , further comprising:

reconstructing calculations based on a stored graph table in response to a determination of a system error in which update signals are lost.

11. The method according to claim 1 , wherein each element comprises:

a value;

a local revision number that is updated at least each time the value changes; and

a global revision number that is updatable independent of the local revision number, and is usable to identify a state of the element with specific states of other elements.

12. The method according to claim 11 , further comprising:

storing an older archive copy of an element when at least one of the global and local revision numbers change.

13. The method according to claim 12 , further comprising:

loading one or more archived source elements;

performing a reconstruction calculation to update a target element using the one or more loaded elements.

14. The method according to claim 13 , wherein the loading of the one or more archived source elements is a loading of elements having a common global revision number.

15. The method according to claim 1 , further comprising, prior to the sending:

obtaining a local draft copy of the targeted calculated element; and

performing a calculation to update the local draft copy of the targeted calculated element.

16. The method according to claim 1 , further comprising:

blocking the performing of the calculation until a further criterion is met.

17. The method according to claim 1 , further comprising:

providing a second source element;

providing a certification indicator associated with each of a first source element, which is the source element, the second source element, and the target element, wherein the target element uses both the first and second source elements;

modifying a state of at least one of the certification indicators as certified based upon a predefined criteria; and

modifying the target element certification indicator as certified only after the first and second source element certification indicators are certified.

18. The method according to claim 17 , wherein the certification indicator is a flag that is set when the element is certified.

19. The method according to claim 17 , wherein the certification indicator is a message to the target element.

20. The method according to claim 17 , wherein the predefined criteria is an authenticated manual or electronic signature.

21. The method according to claim 17 , wherein the target element further requires either a manual or electronic signature to modify the target element certification indicator as certified.

22. The method according to claim 17 , wherein certifying of the target element takes place independently of the performing the calculation to update.

23. A system comprising:

a first computer comprising a source element;

a target element computer comprising a target element, the target element computer either being the first computer or a second computer connected to the first computer via a network;

an updater that updates a source element on a first computer system;

a dispatcher that sends a calculate update signal which is a message communicated through a message queuing system specifically directed to the target calculated element for updating in response to the update;

an obtaining routine that obtains the updated source element by a process on the target element computer associated with the target calculated element in response to the sending of the calculate update signal; and

a calculation engine that updates the target calculated element using the obtained updated source element;

wherein:

at least one of the elements comprises a locally stored adjacency list comprising:

a used input list comprising a list of source elements that is separate from a particular element that defines each and every source element that is used by the particular element in its calculations; and

a using output list of other target elements separate from the particular element that use the particular element in a calculation;

the method further comprising:

sending a message directly to each of all elements in the using output list of the adjacency list.

24. A non-transitory computer program product, comprising a computer usable medium having a computer readable program code embodied therein, said computer readable program code adapted to be executed to implement the method according to claim 1 .

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Aug 15, 2019
From: SILICON VALLEY BANK
To: WORKIVA INC.; WORKIVA INTERNATIONAL LLC
Reel/Frame 050062/0928 →
CHANGE OF NAME Recorded Mar 23, 2015
From: WORKIVA LLC
To: WORKIVA INC.
Reel/Frame 035247/0092 →
SECURITY AGREEMENT Recorded Oct 17, 2014
From: WORKIVA LLC; WORKIVA INTERNATIONAL LLC
To: SILICON VALLEY BANK
Reel/Frame 034013/0098 →
CHANGE OF NAME Recorded Aug 28, 2014
From: WEBFILINGS LLC
To: WORKIVA LLC
Reel/Frame 033647/0582 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2013
From: KLUIN, ROBERT A.; LYDDON, BEAU D.
To: WEBFILINGS LLC
Reel/Frame 029901/0087 →
Continuity (1)
Related Publication 20140244707A1 · Aug 28, 2014