IP Library Granted Patent US 7,577,554
Granted Patent B2
US 7,577,554 · App. 11/120,588 · Granted Aug 18, 2009

Workflow modeling using an acyclic directed graph data structure

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 7,577,554
App. No.
11/120,588
Granted
Aug 18, 2009
Kind
B2
Abstract

A process for modeling at least a portion of a workflow includes accessing a computer data structure to represent an acyclic directed graph ( 10 ) including multiple nodes ( 12 ) and one or more edges ( 14 ), each edge ( 14 ) linking two adjacent nodes ( 12 ). The value of a function at a selected node ( 12 ) is requested, the value of the function at the selected node ( 12 ) depending on values of the function at one or more adjacent nodes ( 12 ) lying in a first direction from the selected node ( 12 ). If a cached value of the function at the selected node ( 12 ) is not assured to be valid, then the value of the function at the selected node ( 12 ) is recomputed based on the values of the function at the one or more adjacent nodes ( 12 ) and then returned. If the cached value is assured to be valid, then the cached value is returned without recomputing the value of the function at the selected node ( 12 ).

Claims (98)

1. A process for modeling at least a portion of a workflow for logistics planning of an enterprise, comprising:

accessing a computer data structure that represents an acyclic directed graph, the acyclic directed graph represents the workflow for logistics planning of the enterprise and comprises a plurality of nodes and one or more edges, each of the edges linking two adjacent nodes within the acyclic directed graph;

requesting the value of a first function at a selected node, the value of the first function at the selected node depending at least in part on values of the first function at one or more adjacent nodes lying in a first direction from the selected node within the acyclic directed graph, a cached value of at least a second function at the selected node depending only on the value of the first function at the selected node and one or more other values associated with the selected node;

determining whether a cached value of the first function at the selected node is assured to be valid;

if the cached value of the first function at the selected node is assured to be valid, then:

return the cached value of the first function at the selected node without recomputing the value of the first function at the selected node;

if the cached value of the first function at the selected node is not assured to be valid, then:

requesting the value of a second function at the adjacent node corresponding to an edge lying in a first direction from the selected node;

adding the returned value of the second function at the adjacent node to a value associated with movement in a second direction opposite the first direction from the adjacent node to the selected node along the edge, this addition generating a total value for the edge;

if the total value for the edge is greater than the cached value of the first function at the selected node, then exit the first iteration and perform the second iteration; and

if the total value for the edge is not greater than the cached value of the first function at the selected node, then either process the next edge within the first iteration or, if there are no more edges to be processed within the first iteration:

providing an indication associated with the selected node that the cached value of the first function at the selected node is assured to be valid; and

returning the cached value of the first function at the selected node.

2. The process of claim 1 , wherein the workflow comprises a planned flow of resources through a sequence of processing steps to transform less finished resources into more finished resources, the flow of resources being represented by the edges within the acyclic directed graph and giving a time-based directionality to the acyclic directed graph.

3. The process of claim 1 , wherein:

the selected node is associated with a Boolean variable indicating whether the cached value of the first function at the selected node is assured to be valid; and

determining whether the cached value of the first function at the selected node is assured to be valid comprises determining the value of the Boolean variable at the selected node.

4. The process of claim 1 , wherein requesting the value of the first function at the selected node comprises calling a corresponding node-local method of the selected node, the node-local method determining whether the cached value of the function at the selected node is assured to be valid and returning either the recomputed value or the cached value, as appropriate, of the function at the selected node.

5. The process of claim 1 , further comprising imposing an indication of possible invalidity on the cached values of the first function at all nodes in a second direction from the selected node in response to determining that the cached value of the first function at the selected node is not assured to be valid, the second direction being the opposite direction from the first direction.

6. The process of claim 1 , wherein the value of the first function at the selected node is selected from the group consisting of:

a value of an earliest possible starting time (EPST) for a portion of the workflow associated with the selected node;

a value of an EPET for a portion of the workflow associated with the selected node;

a value of a latest possible starting time (LPST) for a portion of the workflow associated with the selected node; and

a value of an LPET for a portion of the workflow associated with the selected node.

7. The process of claim 1 , wherein the value of the first function at the selected node is selected from the group consisting of:

a maximum quantity of an output of a portion of the workflow associated with the selected node for which production can be started, given an available supply of at least one input at a selected time; and

a maximum quantity of an output of a portion of the workflow associated with the selected node for which production can be completed, given an available supply of at least one input at a selected time.

8. The process of claim 1 , wherein the value of the first function at the selected node is selected from the group consisting of:

a minimum quantity of an input required to start production within at least a portion of the workflow, given a desired minimum quantity of an output that is to be produced by that portion of the workflow by a specified time;

a minimum quantity of an input required to complete production within at least a portion of the workflow, given a desired minimum quantity of an output that is to be produced by that portion of the workflow by a specified time.

9. The process of claim 1 , wherein the process is implemented using at least one component selected from the group consisting of a planner, a scheduler, and an optimizer.

10. A computer-implemented system for modeling at least a portion of a workflow for logistics planning of an enterprise, the system operating on one more computer processors collectively operable to:

access a computer data structure that represents an acyclic directed graph, the acyclic directed graph represents the workflow for logistics planning of the enterprise and comprises a plurality of nodes and one or more edges, each of the edges linking two adjacent nodes within the acyclic directed graph;

request the value of a first function at a selected node, the value of the first function at the selected node depending at least in part on values of the first function at one or more adjacent nodes lying in a first direction from the selected node within the acyclic directed graph, a cached value of at least a second function at the selected node depending only on the value of the first function at the selected node and one or more other values associated with the selected node;

determine whether a cached value of the first function at the selected node is assured to be valid;

if the cached value of the first function at the selected node is assured to be valid, then:

return the cached value of the first function at the selected node without recomputing the value of the first function at the selected node;

if the cached value of the first function at the selected node is not assured to be valid, then:

requesting the value of a second function at the adjacent node corresponding to an edge lying in a first direction from the selected node;

adding the returned value of the second function at the adjacent node to a value associated with movement in a second direction opposite the first direction from the adjacent node to the selected node along the edge, this addition generating a total value for the edge;

if the total value for the edge is greater than the cached value of the first function at the selected node, then exit the first iteration and perform the second iteration; and

if the total value for the edge is not greater than the cached value of the first function at the selected node, then either process the next edge within the first iteration or, if there are no more edges to be processed within the first iteration:

provide an indication associated with the selected node that the cached value of the first function at the selected node is assured to be valid; and

return the cached value of the first function at the selected node.

11. The system of claim 10 , wherein the workflow comprises a planned flow of resources through a sequence of processing steps to transform less finished resources into more finished resources, the flow of resources being represented by the edges within the acyclic directed graph and giving a time-based directionality to the acyclic directed graph.

12. The system of claim 10 , wherein:

the selected node is associated with a Boolean variable indicating whether the cached value of the first function at the selected node is assured to be valid; and

determining whether the cached value of the first function at the selected node is assured to be valid comprises determining the value of the Boolean variable at the selected node.

13. The system of claim 10 , wherein requesting the value of the first function at the selected node comprises calling a corresponding node-local method of the selected node, the node-local method determining whether the cached value of the function at the selected node is assured to be valid and returning either the recomputed value or the cached value, as appropriate, of the function at the selected node.

14. The system of claim 10 , wherein the one or more computer processors are further operable to impose an indication of possible invalidity on the cached values of the first function at all nodes in a second direction from the selected node in response to determining that the cached value of the first function at the selected node is not assured to be valid, the second direction being the opposite direction from the first direction.

15. The system of claim 10 , wherein the value of the first function at the selected node is selected from the group consisting of:

a value of an earliest possible starting time (EPST) for a portion of the workflow associated with the selected node;

a value of an EPET for a portion of the workflow associated with the selected node, node;

a value of a latest possible starting time (LPST) for a portion of the workflow associated with the selected node; and

a value of an LPET for a portion of the workflow associated with the selected node, node.

16. The system of claim 10 , wherein the value of the first function at the selected node is selected from the group consisting of:

a maximum quantity of an output of a portion of the workflow associated with the selected node for which production can be started, given an available supply of at least one input at a selected time; and

a maximum quantity of an output of a portion of the workflow associated with the selected node for which production can be completed, given an available supply of at least one input at a selected time.

17. The system of claim 10 , wherein the value of the first function at the selected node is selected from the group consisting of:

a minimum quantity of an input required to start production within at least a portion of the workflow, given a desired minimum quantity of an output that is to be produced by that portion of the workflow by a specified time; and

a minimum quantity of an input required to complete production within at least a portion of the workflow, given a desired minimum quantity of an output that is to be produced by that portion of the workflow by a specified time.

18. The system of claim 10 , wherein the process is implemented using at least one component selected from the group consisting of a planner, a scheduler, and an optimizer.

19. A method of modeling at least a portion of a workflow for logistics planning of an enterprise, comprising:

accessing a computer data structure that represents an acyclic directed graph, the acyclic directed graph represents the workflow for logistics planning of the enterprise and comprises a plurality of nodes and one or more edges, each of the edges linking two adjacent nodes within the acyclic directed graph, the acyclic directed graph having a time-based directionality;

requesting the value of a first function at a selected node, the value of the first function at the selected node depending at least in part on values of the first function at one or more adjacent nodes lying in a first direction from the selected node;

determining whether a cached value of the first function at the selected node is assured to be valid;

if the cached value of the first function at the selected node is assured to be valid, then:

return the cached value of the first function at the selected node without recomputing the value of the first function at the selected node; and

if the cached value of the first function at the selected node is not assured to be valid, then:

perform a first iteration through the edges lying in the first direction from the selected node, the first iteration comprising:

determining whether an edge might make invalid the value of the first function at the selected node;

if the edge will not make invalid the value of the first function at the selected node, then either processing the next edge within the first iteration or, if there are no more edges to be processed within the first iteration, providing an indication associated with the selected node that the cached value of the first function at the selected node is assured to be valid and returning the cached value of the first function at the selected node;

if the edge might make invalid the value of the first function at the selected node, then providing an indication associated with the edge that the edge does not make invalid the value of the first function at the selected node;

if the edge corresponds to an adjacent node lying in the first direction from the selected node that is at least partially responsible for the value of the first function at the selected node, then exit the first iteration and perform a second iteration through the edges lying in the first direction from the selected node; and

if the edge corresponds to an adjacent node lying in the first direction from the selected node that is not at least partially responsible for the value of the first function at the selected node, then:

requesting the value of a second function at the adjacent node corresponding to the edge;

adding the returned value of the second function at the adjacent node to a value associated with movement in a second direction opposite the first direction from the adjacent node to the selected node along the edge, this addition generating a total value for the edge;

if the total value for the edge is greater than the cached value of the first function at the selected node, then exit the first iteration and perform the second iteration; and

if the total value for the edge is not greater than the cached value of the first function at the selected node, then either process the next edge within the first iteration or, if there are no more edges to be processed within the first iteration, providing an indication associated with the selected node that the cached value of the first function at the selected node is assured to be valid and returning the cached value of the first function at the selected node;

the second iteration through the edges lying in the first direction from the selected node comprising:

requesting the value of the second function at the adjacent nodes corresponding to the edges;

adding the returned values of the second function at the adjacent nodes to the values associated with movement in the second direction from the adjacent nodes to the selected node along the edges to generate total values for the edges;

determining a maximum total value over all the adjacent nodes;

perform a third iteration through the edges lying in the first direction from the selected node comprising:

providing an indication associated with all edges that produced the maximum total value that these edges are at least partially responsible for the value of the first function at the selected node;

providing an indication associated with all edges that did not produce the maximum total value that these edges are not at least partially responsible for the value of the first function at the selected node; and

providing an indication associated with each edge that the edge will not make invalid the value of the first function at the selected node;

if the maximum total value is equal to the cached value of the first function at the selected node, then:

providing an indication that the cached value of the first function is valid; and

returning the cached value of the first function at the selected node without recomputing the value of the first function at the selected node; and

if the maximum total value is different from the cached value of the first function at the selected node, then:

providing an indication that the cached value of the second function is not valid;

updating the cached value of the first function at the selected node to the maximum total value;

providing an indication associated with the selected node that the cached value of the first function at the selected node is assured to be valid; and

returning the cached value of the first function at the selected node.

20. The method of claim 19 , wherein:

the value of the first function at a node comprises an earliest possible start time for a manufacturing operation represented by the node; and

the value of the second function at a node comprises an earliest possible end time for a manufacturing operation represented by the node.

Assignments (18)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053383/0117) Recorded Nov 3, 2021
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: BLUE YONDER GROUP, INC.
Reel/Frame 058794/0776 →
RELEASE OF SECURITY INTEREST Recorded Sep 16, 2021
From: JPMORGAN CHASE BANK, N.A.
To: BLUE YONDER GROUP, INC.; BLUE YONDER, INC.; JDA SOFTWARE SERVICES, INC.; I2 TECHNOLOGIES INTERNATIONAL SERVICES, LLC; MANUGISTICS SERVICES, INC.; MANUGISTICS HOLDINGS DELAWARE II, INC.; REDPRAIRIE COLLABORATIVE FLOWCASTING GROUP, LLC; JDA SOFTWARE RUSSIA HOLDINGS, INC.; REDPRAIRIE SERVICES CORPORATION; BY BOND FINANCE, INC.; BY NETHERLANDS HOLDING, INC.; BY BENELUX HOLDING, INC.
Reel/Frame 057724/0593 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REEL 026468 FRAME NUMBER FROM 0199 TO 0119 PREVIOUSLY RECORDED ON REEL 055136 FRAME 0623. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECTION ASSIGNMENT. Recorded Apr 19, 2021
From: I2 TECHNOLOGIES US, INC.
To: JDA TECHNOLOGIES US, INC.
Reel/Frame 056813/0110 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF THE CONVEYING AND RECEIVING PARTIES TO INCLUDE A PERIOD AFTER THE TERM INC PREVIOUSLY RECORDED AT REEL: 026740 FRAME: 0676. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 8, 2021
From: JDA TECHNOLOGIES US, INC.
To: JDA SOFTWARE GROUP, INC.
Reel/Frame 055257/0747 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF THE CONVEYING AND RECEIVING PARTIES TO INCLUDE A PERIOD AFTER THE TERM INC PREVIOUSLY RECORDED ON REEL 026468 FRAME 0199. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME FROM I2 TECHNOLOGIES US, INC. TO JDA TECHNOLOGIES US, INC.. Recorded Dec 12, 2020
From: I2 TECHNOLOGIES US, INC.
To: JDA TECHNOLOGIES US, INC.
Reel/Frame 055136/0623 →
SECURITY AGREEMENT Recorded Aug 3, 2020
From: BLUE YONDER GROUP, INC.
To: U.S. BANK NATIONAL ASSOCIATION
Reel/Frame 053383/0117 →
CHANGE OF NAME Recorded Apr 14, 2020
From: JDA SOFTWARE GROUP, INC.
To: BLUE YONDER GROUP, INC.
Reel/Frame 052393/0450 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 29556/0809 Recorded Oct 12, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: JDA SOFTWARE GROUP, INC.
Reel/Frame 040337/0356 →
SECURITY AGREEMENT Recorded Oct 12, 2016
From: RP CROWN PARENT, LLC; RP CROWN HOLDING LLC; JDA SOFTWARE GROUP, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 040326/0449 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 29556/0697 Recorded Oct 12, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: JDA SOFTWARE GROUP, INC.
Reel/Frame 040337/0053 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jan 2, 2013
From: JDA SOFTWARE GROUP, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 029556/0697 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jan 2, 2013
From: JDA SOFTWARE GROUP, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 029556/0809 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Dec 21, 2012
From: WELLS FARGO CAPITAL FINANCE, LLC
To: JDA TECHNOLOGIES US, INC.
Reel/Frame 029529/0812 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2011
From: JDA TECHNOLOGIES US, INC.
To: JDA SOFTWARE GROUP, INC.
Reel/Frame 026740/0676 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2011
From: I2 TECHNOLOGIES US, INC
To: JDA TECHNOLOGIES US, INC
Reel/Frame 026468/0119 →
PATENT SECURITY AGREEMENT Recorded Apr 4, 2011
From: JDA TECHNOLOGIES US, INC.
To: WELLS FARGO CAPITAL FINANCE, LLC, AS AGENT
Reel/Frame 026072/0353 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2005
From: LYSTAD, GARR S.; ZHAO, PENG
To: I2 TECHNOLOGIES, INC.
Reel/Frame 016524/0142 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2005
From: I2 TECHNOLOGIES, INC.
To: I2 TECHNOLOGIES US, INC.
Reel/Frame 016524/0220 →