Consistent modeling and execution of time constructs in business processes
First Claim
1. A computer system comprising the following:
- one or more processors;
system memory; and
one or more computer-readable storage media having stored thereon computer-executable instructions that are executable by the one or more processors to configure the computer system to execute a workflow using a virtualized clock, the computer-executable instructions including instructions that are executable to configure the computer system to perform at least the following;
determine that a workflow session has been initialized, the workflow session including one or more episodes, each episode comprising a pulse of work that is performed when triggered by an event, each workflow session being processed according to a virtualized clock that keeps a virtual session time for the workflow session, wherein receipt of an external message moves the virtualized clock forward if a timestamp on the external message is later than the current workflow session time, while receipt of local messages does not adjust the virtualized clock;
receive an event, the event including an indication of the time the event was generated;
access the received event to determine which one or more pulses of work are to be performed as part of a workflow session episode; and
execute the one or more specified pulses of work according to the virtual session time indicated by the virtualized clock.
3 Assignments
0 Petitions
Accused Products
Abstract
Embodiments are directed to executing a workflow using a virtualized clock and to ensuring idempotency and correctness among workflow processes. In one scenario, a computer system a computer system determines that a workflow session has been initialized. The workflow session runs as a set of episodes, where each episode includes one or more pulses of work that are performed when triggered by an event. Each workflow session is processed according to a virtualized clock that keeps a virtual session time for the workflow session. The computer system receives an event that includes an indication of the time the event was generated, and then accesses the received event to determine which pulses of work are to be performed as part of a workflow session episode. The computer system then executes the determined pulses of work according to the virtual session time indicated by the virtualized clock.
-
Citations
20 Claims
-
1. A computer system comprising the following:
-
one or more processors; system memory; and one or more computer-readable storage media having stored thereon computer-executable instructions that are executable by the one or more processors to configure the computer system to execute a workflow using a virtualized clock, the computer-executable instructions including instructions that are executable to configure the computer system to perform at least the following; determine that a workflow session has been initialized, the workflow session including one or more episodes, each episode comprising a pulse of work that is performed when triggered by an event, each workflow session being processed according to a virtualized clock that keeps a virtual session time for the workflow session, wherein receipt of an external message moves the virtualized clock forward if a timestamp on the external message is later than the current workflow session time, while receipt of local messages does not adjust the virtualized clock; receive an event, the event including an indication of the time the event was generated; access the received event to determine which one or more pulses of work are to be performed as part of a workflow session episode; and execute the one or more specified pulses of work according to the virtual session time indicated by the virtualized clock. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method, implemented at a computer system that includes one or more processors, for executing a workflow using a virtualized clock, the method comprising:
-
determining that a workflow session has been initialized, the workflow session including one or more episodes, each episode comprising a pulse of work that is performed when triggered by an event, each workflow session being processed according to a virtualized clock that keeps a virtual session time for the workflow session; receiving an event, the event including an indication of the time the event was generated; accessing the received event to determine which one or more pulses of work are to be performed as part of a workflow session episode; and executing the one or more specified pulses of work according to the virtual session time indicated by the virtualized clock, wherein side-processes triggered by the execution of the specified pulses of work are batched together for batch processing, and wherein the batched, side-processes are delayed until a notation has been recorded in a data store indicating that the batch of side-processes is pending. - View Dependent Claims (13, 14, 15, 16, 17, 18, 20)
-
-
19. A computer system comprising the following:
-
one or more processors; system memory; and one or more computer-readable storage media having stored thereon computer-executable instructions that are executable by the one or more processors to configure the computer system to ensure idempotency among workflow processes, the computer-executable instructions including instructions that are executable to configure the computer system to perform at least the following; instantiate at least one workflow session, the workflow session including one or more episodes, each episode comprising a pulse of work that is performed when triggered by an event, each workflow session being processed according to a virtualized clock that keeps a virtual time for the workflow session; determine that at least one of the work pulses has initiated one or more side-process that are to be completed as part of the work pulses; batch up the one or more side-processes to create a batch of side-processes that are part of the workflow session; persist the current virtual time and an indication of those side-processes that are part of the batch of side-processes to a data store; initiate processing of the batch of side-processes; and persist one or more portions of workflow state to the data store upon determining that the batch of side-processes has completed processing, such that the workflow session'"'"'s clock value is durably updated at the time of persistence of the one or more portions of workflow state.
-
Specification