IP Library Granted Patent US 10,481,943
Granted Patent B2
US 10,481,943 · App. 15/858,155 · Granted Nov 19, 2019

System and method for state machine management

Inventors: John Golob (San Francisco, CA); Troy Goode (San Francisco, CA); Joshua Yanovski (Rockville, MD)
Assignee: Winmore, Inc.
G06F9/466G06F9/4843G06F9/542
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,481,943
App. No.
15/858,155
Granted
Nov 19, 2019
Kind
B2
Abstract

A system and method of state machine management includes loading a state machine. The state machine includes states, transitions between respective pairs of the states, and tasks for each of the state transitions. Each of the tasks represents a precondition before a corresponding state transition may occur and is identified by a task identifier and a version. The method further includes identifying a current state, providing a status of a first task associated with an outgoing state transition from the current state to an agent, receiving an update to the status of the first task, and recording the update to the status of the first task as a first task event. The task is identified by a first task identifier and a first version. The first task event records the first task identifier, the first version, a first time stamp of when the update occurred, and the agent.

Claims (65)

1. A method comprising:

loading, by a state machine engine operating on a server, an instance of a state machine, the state machine comprising a plurality of states, one or more state transitions between respective pairs of the states, and one or more tasks for each of the one or more state transitions, each of the one or more tasks representing a precondition before a corresponding state transition may occur and being identified by a respective combination of a task identifier and a task version;

identifying, by the state machine engine, a current state from among the plurality of states of the instance of the state machine;

providing, by the state machine engine to an agent, a status of a first task associated with an outgoing state transition from the current state, the task being identified by a first task identifier and a first task version;

receiving, by the state machine engine and from the agent, an update made to the status of the first task by the agent; and

recording, by the state machine engine, the update to the status of the first task as a first task event, the first task event recording the first task identifier, the first task version, a first time stamp of when the update occurred, and an identifier of the agent.

2. The method of claim 1 , wherein recording the update to the status of the first task further comprises recording a schema of current data values for data fields associated with the first task.

3. The method of claim 1 , further comprising:

determining, by the state machine engine, whether each required data field of the first task is assigned a value; and

providing, by the state machine engine to the agent and in response to the determining, an indication that the first task is completable.

4. The method of claim 3 , further comprising validating, by the state machine engine, whether values of data fields of the first task satisfy one or more validation rules before providing the indication that the first task is completable.

5. The method of claim 1 , further comprising:

determining, by the state machine engine, whether each non-skippable task of a first state transition is completable; and

providing, by the state machine engine to the agent and in response to the determining, an indication that the first state transition may be performed.

6. The method of claim 5 , further comprising:

receiving, by the state machine engine from the agent, an instruction to perform the first state transition; and

recording, by the state machine engine, a transition event, the transition event recording the current state, a new state determined by the first state transition, a second time stamp of when the first state transition is performed, and the identifier of the agent.

7. The method of claim 5 , further comprising recording, by the state machine engine, a second task event for a first skippable task indicating that the first skippable task was skipped.

8. The method of claim 1 , further comprising:

determining, by the state machine engine, the current state of the instance of the state machine by searching a plurality of recorded transition events to identify a first transition event having a most recent time stamp; and

determining, by the state machine engine, the current state from the first transition event.

9. The method of claim 8 , further comprising tracing, by the state machine engine, a history of states for the instance of the state machine based on time stamps and to and from states recorded in the transition events.

10. The method of claim 1 , further comprising tracing, by the state machine engine, a history of task updates for the instance of the state machine based on time stamps recorded in task events.

11. The method of claim 1 , wherein each combination of task identifiers and task versions corresponds to a task having one or more different data fields, one or more different validations, or one or more different completion conditions.

12. A non-transitory machine-readable medium comprising a plurality of machine-readable instructions which when executed by one or more processors associated with a server cause the processors to perform a method comprising:

loading an instance of a state machine, the state machine comprising a plurality of states, one or more state transitions between respective pairs of the states, and one or more tasks for each of the one or more state transitions, each of the one or more tasks representing a precondition before a corresponding state transition may occur and being identified by a respective combination of a task identifier and a task version;

identifying a current state from among the plurality of states of the instance of the state machine;

providing, to an agent, a status of a first task associated with an outgoing state transition from the current state, the task being identified by a first task identifier and a first task version;

receiving, from the agent, an update made to the status of the first task by the agent; and

recording the update to the status of the first task as a first task event, the first task event recording the first task identifier, the first task version, a first time stamp of when the update occurred, and an identifier of the agent.

13. The non-transitory machine-readable medium of claim 12 , wherein the method further comprises:

determining whether each required data field of the first task is assigned a value;

validating whether values of data fields of the first task satisfy one or more validation rules; and

providing, to the agent and in response to the determining and the validation, an indication that the first task is completable.

14. The non-transitory machine-readable medium of claim 12 , wherein the method further comprises:

determining whether each non-skippable task of a first state transition is completable;

providing, to the agent and in response to the determining, an indication that the first state transition may be performed; and

receiving, from the agent, an instruction to perform the first state transition;

recording a transition event, the transition event recording the current state, a new state determined by the first state transition, a second time stamp of when the first state transition is performed, and the identifier of the agent.

15. The non-transitory machine-readable medium of claim 12 , wherein the method further comprises:

determining the current state of the instance of the state machine by searching a plurality of recorded transition events to identify a first transition event having a most recent time stamp; and

determining the current state from the first transition event.

16. The non-transitory machine-readable medium of claim 15 , wherein the method further comprises:

tracing a history of states for the instance of the state machine based on time stamps and to and from states recorded in the transition events.

17. A computing system comprising:

a memory for storing a state machine repository storing:

one or more state machine objects describing structures of a state machine, the structures including a plurality of states, one or more state transitions between respective pairs of the states, and one or more tasks for each of the one or more state transitions, each of the one or more tasks representing a precondition before a corresponding state transition may occur and being identified by a respective combination of a task identifier and a task version; and

one or more task events describing respective updates to one of the one or more tasks, each of the one or more tasks including a respective task identifier, a respective task version, a respective time stamp of when a corresponding update occurred, and an identifier of a respective agent responsible for the corresponding update; and

one or more processors coupled to the memory, the one or more processors configured to execute instructions to cause the computing system to:

load an instance of a state machine;

identify a current state from among the plurality of states of the instance of the state machine;

provide, to an agent, a status of a first task associated with an outgoing state transition from the current state, the task being identified by a first task identifier and a first task version;

receive, from the agent, an update made to the status of the first task by the agent; and

record the update to the status of the first task as a first task event in the memory, the first task event recording the first task identifier, the first task version, a first time stamp of when the update occurred, and an identifier of the agent.

18. The computing system claim 17 , wherein the one or more processors are further configured to:

determine whether each required data field of the first task is assigned a value;

validate whether values of data fields of the first task satisfy one or more validation rules; and

provide, to the agent and in response to the determining and the validation, an indication that the first task is completable.

19. The computing system claim 17 , wherein the one or more processors are further configured to:

determine whether each non-skippable task of a first state transition is completable;

provide, to the agent and in response to the determining, an indication that the first state transition may be performed;

receive, from the agent, an instruction to perform the first state transition; and

record a transition event, the transition event recording the current state, a new state determined by the first state transition, a second time stamp of when the first state transition is performed, and the identifier of the agent.

20. The computing system claim 17 , wherein the one or more processors are further configured to:

trace a history of states for the instance of the state machine based on time stamps and to and from states recorded in a plurality of stored transition events.

Assignments (5)
SECURITY INTEREST Recorded Nov 20, 2019
From: WINMORE, INC.
To: SILICON VALLEY BANK
Reel/Frame 051115/0281 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2019
From: GOODE, TROY
To: LANETIX, INC.
Reel/Frame 049935/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2019
From: YANOVSKI, JOSHUA
To: LANETIX, INC.
Reel/Frame 049936/0038 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2019
From: GOLOB, JOHN
To: WINMORE, INC.
Reel/Frame 049936/0194 →
CHANGE OF NAME Recorded Aug 1, 2019
From: LANETIX, INC.
To: WINMORE, INC.
Reel/Frame 049937/0647 →
Continuity (2)
Provisional Application 62441133 · Dec 30, 2016
Related Publication 20180189096A1 · Jul 5, 2018