Allocating Resources to Tasks in Workflows
First Claim
1. A method of allocating resources to tasks in a workflow comprising:
- receiving information about a workflow comprising information about a plurality of tasks and, for each of those tasks, resource allocation requirements;
receiving information about one or more policies for allocating resources to tasks;
accessing resource characteristic information;
defining a constraint optimization problem on the basis of the received information and the accessed resource characteristic information;
using a constraint programming problem solver to find possible solutions to the constraint optimization problem; and
storing the resulting allocated resource information.
2 Assignments
0 Petitions
Accused Products
Abstract
Previous workflow engines have typically used definitions of workflows with tasks having pre-assigned resources or resources computed by earlier tasks in the workflow. Also, previous workflow engines have typically used if-then rules and conditions to specify and control execution of tasks in the workflow. In contrast, the methods described herein use constraint programming techniques. Information about a workflow is provided, comprising a plurality of tasks, and for at least some of those tasks, resource allocation requirements. Using this workflow information together with policy information and information about resource characteristics, a constraint optimization problem is specified. This problem is solved using a constraint programming solver and the resulting information about resources allocated to tasks is stored. In this way, resources may be allocated to tasks in a dynamic manner, during execution of a workflow if required.
-
Citations
20 Claims
-
1. A method of allocating resources to tasks in a workflow comprising:
-
receiving information about a workflow comprising information about a plurality of tasks and, for each of those tasks, resource allocation requirements; receiving information about one or more policies for allocating resources to tasks; accessing resource characteristic information; defining a constraint optimization problem on the basis of the received information and the accessed resource characteristic information; using a constraint programming problem solver to find possible solutions to the constraint optimization problem; and storing the resulting allocated resource information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of allocating resources to tasks in a workflow at a first workflow engine, the method comprising:
-
receiving information about a workflow comprising information about a plurality of tasks and, for at least some of those tasks, resource allocation requirements; receiving information about one or more policies for allocating resources to tasks; accessing resource characteristic information; receiving a request from a second workflow engine to allocate a resource to one of the tasks; defining a constraint optimization problem on the basis of the request and the accessed resource characteristic information; using a constraint programming problem solver to find a solution to the constraint optimization problem; and sending the solution to the second workflow engine. - View Dependent Claims (12, 13, 14)
-
-
15. A method of allocating a resource to a task in a workflow comprising:
-
receiving information about a workflow comprising information about a plurality of tasks and, for at least some of those tasks, resource allocation requirements; receiving information about one or more policies for allocating resources to tasks; accessing resource characteristic information; carrying out execution of the workflow until a task with no pre-assigned resource becomes current; defining a constraint optimization problem to allocate a resource to the current task on the basis of the received information and the accessed resource characteristic information; using a constraint programming problem solver to find a solution to the constraint optimization problem the solution comprising a resource allocated to the current task; and executing the current task using the allocated resource. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification