Distributed workflow management system
AssigneeAmazon Technologies, Inc.
InventorsJiaqi Guo, Baogang Song
Life of this patent
Estimating the term…
Abstract
A workflow management system having a queue service, a non-relational database, and a workflow engine. The queue service is configured to receive a task from a computing device. The non-relational database is configured to store data. The workflow engine has a workflow definition defining a plurality of operating states for an application. The workflow engine in communication with the queue service and the non-relational database, the workflow engine is configured to receive tasks from the queue service, query the non-relational database, receive query data from the non-relational database, and execute tasks based on task data, process data, and the workflow definition.
Claims20
A method for distributed workflow management by a workflow management system, the method comprising:
- creating a workflow definition for execution by a workflow engine, wherein the workflow definition defines a plurality of operating states for a workflow process, wherein each operating state has one or more state parameters;
- generating a plurality of instances of the workflow engine during runtime of the workflow management system;
- generating at least one queue of a queue service during runtime of the workflow management system;
- dynamically adjusting the number of instances of the workflow engine and the number of queues of the queue service based on a change in a workload demand of the workflow management system, the workflow demand based, at least in part, on a number of workflow processes executing within the workflow management system, wherein each workflow process includes one or more tasks;
- for each task, by one of the plurality of instances of the workflow engine:
- retrieving a task from a queue of the queue service, wherein the task includes a unique identifier associated with one of the workflow processes;
- sending a query request to a non-relational database based, at least in part, on the unique identifier;
- receiving a query response from the non-relational database, wherein the query response identifies a current operating state of the workflow process;
- executing the task independent of an execution history of the workflow process, wherein the task is executed based on the task, the query response, the current operating state of the process, and the workflow definition;
- and
- updating the non-relational database with a new operating state of the workflow process and removing operating state data associated with the previously executed task.
A system for workflow management, the system comprising:
- a queue service comprising at least one queue configured to receive a task from a computing device, wherein the queue service is configured to dynamically adjust the number of queues based, at least in part, on the workload demand of the workflow management system;
- a non-relational database configured to store data;
- and
- a plurality of instances of a workflow engine, each instance of the workflow engine configured to execute a workflow definition, the workflow definition defining a plurality of states and transitions of a workflow process, the plurality of instances of the workflow engine in communication with the queue service and the non-relational database, wherein the number of instances of the workflow engine are dynamically adjusted during runtime of the workflow management system based, at least in part on a workload demand, the workload demand based, at least in part, on a number of workflow processes executing within the workflow management system, wherein individual instances of the workflow engine are configured with computer-executable instructions that when executed by one or more processors are configured to:
- receive the task from the queue service;
- query the non-relational database;
- receive process data from the non-relational database;
- execute a task based on the process data, a current state of the process, and the workflow definition independent of the execution history of the process, wherein the task transitions the process from the current state of the process to a new state of the process;
- update the process data from the non-relational database to include the new state of the process and remove previous operating state data associated with the executed task.
A non-transitory computer readable medium comprising computer-executable instructions stored thereon for operating a workflow management system that, when executed in one or more processors, are configured to execute operations comprising:
- configuring a workflow definition with a plurality of states and transitions;
- generating a plurality of instances of a workflow engine during runtime of the workflow management system;
- generating at least one queue of a queue service during runtime of the workflow management system;
- dynamically adjusting the number of instances of the workflow engine and the number of queues of the queue service based on a change in a number of workflow processes executing within the workflow management system;
- for individual tasks in a workflow process, by an instance of the workflow engine:
- retrieving a task from a queue of the queue service, wherein the task has task data including a primary key associated with a unique process of the number of workflow processes;
- sending a query request to a non-relational database based at least in part on the primary key;
- receiving a process data from the non-relational database, wherein the process data contains data relating to the unique process;
- executing the task based on the task data, the process data, and a current state of the unique process independent of an execution history of the unique process;
- based, at least in part, on the execution of the task, transitioning from the current state of the process to a new state of the process;
- and
- updating the process data from the non-relational database to include the new operating state of the process and remove operating state data associated with the executed task.
Dependencies are inferred from the claim text.