Amazon SWF Workflows
What is a Workflow?
Using the Amazon Simple Workflow Service (Amazon SWF), you can implement distributed, asynchronous applications as workflows. Workflows coordinate and manage the execution of activities that can be run asynchronously across multiple computing devices and that can feature both sequential and parallel processing.
When designing a workflow, you analyze your application to identify its component tasks. In Amazon SWF, these tasks are represented by activities. The order in which activities are performed is determined by the workflow's coordination logic.
A Simple Workflow Example: an E-Commerce Application
For example, the following figure shows a simple e-commerce order-processing workflow involving both people and automated processes.
This workflow starts when a customer places an order. It includes four tasks:
Verify the order.
If the order is valid, charge the customer.
If the payment is made, ship the order.
If the order is shipped, save the order details.
The tasks in this workflow are sequential: an order must be verified before a credit card can be charged; a credit card must be charged successfully before an order can be shipped; and an order must be shipped before it can be recorded. Even so, because Amazon SWF supports distributed processes, these tasks can be carried out in different locations. If the tasks are programmatic in nature, they can also be written in different programming languages or using different tools.
In addition to sequential processing of tasks, Amazon SWF also supports workflows with parallel processing of tasks. Parallel tasks are performed at the same time, and may be carried out independently by different applications or human workers. Your workflow makes decisions about how to proceed once one or more of the parallel tasks have been completed.
Workflow Registration and Execution
After the coordination logic and the activities have been designed, you register these components as workflow and activity types with Amazon SWF. During registration, you specify for each type a name, a version, and some default configuration values.
Only registered workflow and activity types can be used with Amazon SWF. In the e-commerce example, you would register the CustomerOrder workflow type and the VerifyOrder, ChargeCreditCard, ShipOrder, and RecordCompletion activity types.
After registering your workflow type, you can run it as often you like. A workflow execution is a running instance of a workflow. In the e-commerce example, a new workflow execution is started with each customer order.
A workflow execution can be started by any process or application, even another workflow execution. In the e-commerce example, what type of application initiates the workflow depends on how the customer places the order. The workflow could be initiated by a web site or mobile application or by a customer service representative using an internal company application.
With Amazon SWF, you can associate an identifier—called a
workflowId—with your workflow
executions, so you can integrate your existing business identifiers into your workflow. In the e-commerce example,
each workflow execution might be identified using the customer invoice number.
In addition to the identifier that you provide, Amazon SWF associates a unique system-generated
runId—with each workflow execution. Amazon SWF allows only one workflow execution
with this identifier to run at any given time; although you can have multiple workflows executions of the same
workflow type, each workflow execution has a distinct