# US 7,610,263 B2 · Reusing intermediate workflow results in successive workflow runs

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,610,263 B2
- Document ID: US7610263B2
- Status: Granted
- Kind: B2
- Application number: 10/733,973
- Filed: 2003-12-11
- Published: 2005-06-16
- Granted: 2009-10-27
- Earliest claimed: 2003-12-11
- Assignees: International Business Machines Corporation
- Inventors: Richard D. Dettinger; Thomas J. Eggebraaten; Terrence R. O'Brien
- Web page: https://patentgrep.com/patent/US7610263B2

## CPC

- G06F 16/20: of structured data, e.g. relational data
- Y10S 707/99932: Access augmentation or optimizing
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

Methods, articles of manufacture and systems for managing execution of a multi-step workflow in which one or more steps are repeatedly executed on data of a database. One embodiment provides a method comprising receiving current input for execution of a step of the workflow on relevant data of the database, wherein the step has been previously executed on the relevant data using previous input identical to the current input and wherein the previous execution of the step produced previous output; determining whether the step is deterministic, whereby the step generates identical output for given input in repeated executions of the step on the relevant data; and, if the step is deterministic, returning the previous output produced during the previous execution of the step without re-executing the step.

## Claims

### Claim 1

A computer-implemented method of execution of a multi-step workflow that is repeatedly executed on data of a database, wherein the workflow is defined by a plurality of steps, each step being an executable function that operates on input from a previous step and produces output for a subsequent step and each step having a defined input format and output format, the method comprising:
receiving current input to a step of the workflow on relevant data of the database, wherein the step has been previously executed on the relevant data using previous input identical to the current input and wherein the previous execution of the step produced previous output;
determining whether the step is deterministic, in that the step generates identical output for given input in repeated executions of the step on the relevant data; and
if the step is deterministic, returning the previous output produced during the previous execution of the step without re-executing the step.

### Claim 2 (depends on 1)

The method of claim 1, further comprising using the returned previous output as input to a next sequential step in the workflow.

### Claim 3 (depends on 1)

The method of claim 1, wherein determining whether the step is deterministic comprises determining whether a workflow description of the step includes a deterministic flag indicating that the step generates identical output for given input in repeated executions of the step on the relevant data.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
determining whether the current input and the previous input are the same; and
returning the previous output produced during the previous execution of the step only if the current input and the previous input are determined to be the same.

### Claim 5 (depends on 4)

The method of claim 4, wherein determining whether the current input and the previous input are the same comprises accessing a hash table representative of the previous input.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
determining whether the relevant data has been changed since the previous execution; and
returning the previous output produced during the previous execution of the step only if the relevant data has not been changed.

### Claim 7 (depends on 6)

The method of claim 6, wherein determining whether the relevant data has been changed comprises:
determining a timestamp indicating a point of time of the previous execution; and
determining, from a transaction log of the database, whether transactions relative to the relevant data have occurred since the point of time indicated by the timestamp.

### Claim 8 (depends on 6)

The method of claim 6, further comprising:
if the relevant data has been changed since the previous execution:
executing the step on the relevant data to obtain a result; and
storing the result as output to be returned for subsequent invocations of the step taking input identical to the current input, in which case execution of the step is avoided and the stored output is returned for the step.

### Claim 9 (depends on 1)

The method of claim 1, wherein the current input comprises one or more result fields and input parameters.

### Claim 10

A computer-implemented method of managing execution of a workflow that is repeatedly executed on data of a database, wherein the workflow is defined by a plurality of steps, each step being an executable function that operates on input from a previous step and produces output for a subsequent step and each step having a defined input format and output format, the method comprising:
receiving current input for execution of a step of the workflow on relevant data of the database;
identifying the step as deterministic, in that the step generates identical output for given input in repeated executions of the step on the relevant data;
upon determining that the step has been previously executed using input identical to the current input:
returning output obtained in the previous execution of the step using input identical to the current input without executing the step using the received current input; and
upon determining that the step has not been previously executed using input identical to the current input:
executing the step for the current input on the relevant data to obtain a result; and
storing the result to enable managing a next invocation of the step in which the step is passed input identical to the current input, in which case the stored result is returned as output for the step without re-executing the step.

### Claim 11 (depends on 10)

The method of claim 10, further comprising, upon determining that the step has been previously executed using input identical to the current input and prior to returning the output:
determining whether the relevant data has been changed since the previous execution of the step using the input identical to the current input; and
if the relevant data has not been changed, retrieving the output obtained in the previous execution of the step using the input identical to the current input.

### Claim 12 (depends on 11)

The method of claim 11, wherein determining whether the relevant data has been changed comprises:
determining a timestamp indicating a point of time of the previous execution; and
determining, from a transaction log of the database, whether transactions relative to the relevant data have occurred since the point of time indicated by the timestamp.

### Claim 13

A computer readable storage medium containing a program which, when executed by a processor, performs an operation of managing execution of a multi-step workflow that is repeatedly executed on data of a database, wherein the workflow is defined by a plurality of steps, each step being an executable function that operates on input from a previous step and produces output for a subsequent step and each step having a defined input format and output format, the operation comprising:
receiving current input to a step of the workflow on relevant data of the database, wherein the step has been previously executed on the relevant data using previous input identical to the current input and wherein the previous execution of the step produced previous output;
determining whether the step is deterministic, in that the step generates identical output for given input in repeated executions of the step on the relevant data; and
if the step is deterministic, returning the previous output produced during the previous execution of the step without re-executing the step.

### Claim 14 (depends on 13)

The computer readable storage medium of claim 13, wherein the operation further comprises:
inputting the returned previous output to a next sequential step in the workflow.

### Claim 15 (depends on 13)

The computer readable storage medium of claim 13, wherein determining whether the step is deterministic comprises determining whether a workflow description of the step includes a deterministic flag indicating that the step generates identical output for given input in repeated executions of the step on the relevant data.

### Claim 16 (depends on 13)

The computer readable storage medium of claim 13, wherein the operation further comprises:
determining whether the current input and the previous input are the same; and
returning the previous output produced during the previous execution of the step only if the current input and the previous input are determined to be the same.

### Claim 17 (depends on 16)

The computer readable storage medium of claim 16, wherein determining whether the current input and the previous input are the same comprises accessing a hash table representative of the previous input.

### Claim 18 (depends on 13)

The computer readable storage medium of claim 13, wherein the operation further comprises:
determining whether the relevant data has been changed since the previous execution; and
returning the previous output produced during the previous execution of the step only if the relevant data has not been changed.

### Claim 19 (depends on 18)

The computer readable storage medium of claim 18, wherein determining whether the relevant data has been changed comprises:
retrieving a timestamp indicating a point of time of the previous execution; and
retrieving a transaction log of the database; and
determining, from the transaction log, whether transactions relative to the relevant data have occurred since the point of time indicated by the timestamp.

### Claim 20 (depends on 18)

The computer readable storage medium of claim 18, wherein the operation further comprises:
if the relevant data has been changed since the previous execution:
executing the step on the relevant data to obtain a result; and
storing the result as output to be returned for subsequent invocations of the step taking input identical to the current input, in which case execution of the step is avoided and the stored output is returned for the step.

### Claim 21 (depends on 13)

The computer readable storage medium of claim 13, wherein the current input comprises one or more result fields and input parameters.

### Claim 22

A computer readable storage medium containing a program which, when executed by a processor, performs an operation of managing execution of a workflow that is repeatedly executed on data of a database, wherein the workflow is defined by a plurality of steps, each step being an executable function that operates on input from a previous step and produces output for a subsequent step and each step having a defined input format and output format, the operation comprising:
receiving current input for execution of a step of the workflow on relevant data of the database, wherein the step generates identical output for given input in repeated executions of the step on the relevant data; and
without executing the step using the current input, returning output obtained in a previous execution of the step using input identical to the current input.

### Claim 23 (depends on 22)

The computer readable storage medium of claim 22, wherein the operation further comprises, prior to returning the output:
determining whether the step has been previously executed using the input identical to the current input;
if so, determining whether the relevant data has been changed since the previous execution of the step using the input identical to the current input; and
if the relevant data has not been changed, retrieving the output obtained in the previous execution of the step using the input identical to the current input.

### Claim 24 (depends on 23)

The computer readable storage medium of claim 23, wherein determining whether the relevant data has been changed comprises:
retrieving a timestamp indicating a point of time of the previous execution;
retrieving a transaction log of the database; and
determining, from the transaction log, whether transactions relative to the relevant data have occurred since the point of time indicated by the timestamp.

### Claim 25 (depends on 23)

The computer readable storage medium of claim 23, wherein the operation further comprises:
if the step has not been executed using the input identical to the current input:
executing the step for the current input on the relevant data to obtain a result; and
storing the result to enable managing a next invocation of the step in which the step is passed input identical to the current input, in which case the stored result is returned as output for the step without re-executing the step.

### Claim 26 (depends on 23)

The computer readable storage medium of claim 23, wherein the operation further comprises:
if the relevant data has been changed since the previous execution of the step using the input identical to the current input:
executing the step for the current input on the relevant data to obtain a result; and
storing the result to enable managing a next invocation of the step in which the step is passed input identical to the current input, in which case the stored result is returned as output for the step without re-executing the step.

### Claim 27

A computer system, comprising:
a database having data; and
a workflow execution manager residing in memory for managing execution of a multi-step workflow that is repeatedly executed on the data of the database, wherein the workflow is defined by a plurality of steps, each step being an executable function that operates on input from a previous step and produces output for a subsequent step and each step having a defined input format and output format, the workflow execution manager being configured for:
receiving current input to a step of the workflow on relevant data of the database, wherein the step has been previously executed on the relevant data using previous input identical to the current input and wherein the previous execution of the step produced previous output;
determining whether the step is deterministic, in that the step generates identical output for given input in repeated executions of the step on the relevant data; and
if the step is deterministic, returning the previous output produced during the previous execution of the step without re-executing the step.

### Claim 28

A computer system, comprising:
a database having data; and
a workflow execution manager residing in memory for managing execution of a workflow that is repeatedly executed on the data of the database, wherein the workflow is defined by a plurality of steps, each step being an executable function that operates on input from a previous step and produces output for a subsequent step and each step having a defined input format and output format, the workflow execution manager being configured for:
receiving current input to a step of the workflow on relevant data of the database, wherein the step generates identical output for given input in repeated executions of the step on the relevant data; and
without executing the step using the current input, returning output obtained in a previous execution of the step using input identical to the current input.

### Claim 29

A computer-implemented method of automatically executing a plurality of functional modules from within an application, comprising:
providing an interface for specifying a single multi-analysis functional module used to execute the plurality of functional modules, whereby user selection of the single multi-analysis functional module is an implicit selection of the plurality of functional modules, and wherein each of the plurality of functional modules is an executable function that operates on input from a previous functional module and produces output for a subsequent functional module and each functional module having a defined input format and output format;
receiving current input to at least one of the functional modules, wherein the at least one functional module has been previously executed using previous input identical to the current input;
determining whether the at least one functional module is deterministic, in that the at least one functional module generates identical output for given input in repeated executions of the at least one functional module; and
if the at least one functional module is deterministic, returning previous output produced during the previous execution without re-executing the at least one functional module.

### Claim 30 (depends on 29)

The method of claim 29, further comprising retrieving information regarding execution of the plurality of functional modules from a configuration file.

### Claim 31 (depends on 30)

The method of claim 30, wherein determining whether the at least one functional module is deterministic comprises examining information regarding the at least one functional module retrieved from the configuration file.

### Claim 32

A computer-implemented method of managing execution of a workflow that is repeatedly executed on data of a database, wherein the workflow is defined by a plurality of steps, each step being an executable function that operates on input from a previous step and produces output for a subsequent step and each step having a defined input format and output format, the method comprising:
receiving current input for execution of a step of the workflow on relevant data of the database;
identifying the step as deterministic, in that the step generates identical output for given input in repeated executions of the step on the relevant data;
upon determining that the step has been previously executed using input identical to the current input, determining whether the relevant data has been changed since the previous execution of the step using the input identical to the current input;
if the relevant data has been changed since the previous execution of the step using the input identical to the current input:
executing the step for the current input on the relevant data to obtain a result; and
storing the result to enable managing a next invocation of the step in which the step is passed input identical to the current input, in which case the stored result is returned as output for the step without re-executing the step; and
if the relevant data has not been changed since the previous execution of the step using the input identical to the current input:
returning output obtained in the previous execution of the step using the input identical to the current input without executing the step using the received current input.
