Amazon Simple Workflow Service
开发人员指南 (API 版本 2012-01-25)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

订阅工作流程教程:运行工作流程

既然已完成工作流程、活动以及工作流程和活动轮询器的实现,那么我们即准备就绪,可运行工作流程。

如果尚未这样做,则将需要在 aws-config.txt 文件中提供 AWS 访问密钥,如本教程的第 1 部分配置 AWS 会话所述。

现在,转到命令行,然后转到本教程源文件所在的目录。您应有以下文件:

. |-- basic_activity.rb |-- get_contact_activity.rb |-- send_result_activity.rb |-- subscribe_topic_activity.rb |-- swf_sns_activities.rb |-- swf_sns_workflow.rb |-- utils.rb `-- wait_for_confirmation_activity.rb

现在,使用以下命令启动工作流程。

ruby swf_sns_workflow.rb

此命令将开始工作流程,并应显示一条消息,其中有一行,您可将该行复制并粘贴到单独的命令行窗口(甚至其他计算机,如果已将本教程源文件复制到它上面)中。

Amazon SWF Example ------------------ Start the activity worker, preferably in a separate command-line window, with the following command: > ruby swf_sns_activities.rb 87097e76-7c0c-41c7-817b-92527bb0ea85-activities You can copy & paste it if you like, just don't copy the '>' character. Press return when you're ready...

工作流程代码将耐心等待您在单独的窗口中启动活动轮询器。

打开一个新的命令行窗口,再次切换到源文件所在的目录,然后使用 swf_sns_workflow.rb 文件提供的命令启动活动轮询器。例如,如果收到了前面的输出,则要键入(粘贴)以下内容。

ruby swf_sns_activities.rb 87097e76-7c0c-41c7-817b-92527bb0ea85-activities

一旦开始运行活动轮询器,它即开始输出有关活动注册的信息。

** initialized and registered activity: get_contact_activity ** initialized and registered activity: subscribe_topic_activity ** initialized and registered activity: wait_for_confirmation_activity ** initialized and registered activity: send_result_activity

现在可返回原有的命令行窗口,然后按回车键以启动工作流程执行。它将注册工作流程并安排第一个活动。

Starting workflow execution. ** registered workflow: swf-sns-workflow ** scheduling activity task: get_contact_activity

返回另一窗口,活动轮询器运行的位置。现在应看到所运行的第一个活动的结果,其中还提示您输入电子邮件和/或手机短信号码。输入其中一项或两项数据,然后确认所输入的文本。

activity task received: <AWS::SimpleWorkflow::ActivityTask> ** Starting activity task: get_contact_activity Please enter either an email address or SMS message (mobile phone) number to receive Amazon SNS notifications. You can also enter both to use both address types. If you enter a phone number, it must be able to receive SMS messages, and must be 11 digits (such as 12065550101 to represent the number 1-206-555-0101). Email: me@example.com Phone: 12065550101 You entered: email: me@example.com phone: 12065550101 Is this correct? (y/n): y

注意

此处提供的电话号码为虚构,仅作说明用途。请在此处使用您自己的手机号码和电子邮件地址!

输入此信息后不久,您应从 Amazon SNS 收到电子邮件或文字消息,要求您确认主题订阅。如果输入了手机短信号码,则将看到手机上显示类似如下内容。

如果向此短信回复 YES,则将获得在 send_result_activity 中提供的响应。

在发生所有这些情况时,您看到命令行窗口中发生了什么情况?工作流程和活动轮询器均在努力工作。

以下是来自工作流程轮询器的输出。

** scheduling activity task: subscribe_topic_activity ** scheduling activity task: wait_for_confirmation_activity ** scheduling activity task: send_result_activity !! All activities complete! Sending complete_workflow_execution...

以下是来自活动轮询器的输出,同一时间在另一命令行窗口中发生。

++ Activity task completed: get_contact_activity ** Starting activity task: subscribe_topic_activity ++ Activity task completed: subscribe_topic_activity ** Starting activity task: wait_for_confirmation_activity Topic subscription still pending for (email: me@example.com) Topic subscription confirmed for (sms: 12065550101) ++ Activity task completed: wait_for_confirmation_activity ** Starting activity task: send_result_activity Thanks, you've successfully confirmed registration, and your workflow is complete! ++ Activity task completed: send_result_activity All done!

恭喜,您的工作流程已完成,而本教程也已完成!

您可能要再次重新运行工作流程以了解超时如何发挥作用或输入其他数据。请记住,订阅主题后,即已订阅,直到取消订阅为止。取消订阅主题之前重新运行工作流程可能将导致自动成功,因为 wait_for_confirmation_activity 将发现已确认您的订阅。

要从 Amazon SNS 主题取消订阅,请执行以下操作

  • 向该手机短信回复拒绝(发送 STOP)。

  • 单击在电子邮件中收到的取消订阅链接。

现已准备就绪,可重新订阅该主题。

我从这里可以继续进行哪些内容?

本教程涉及很多知识点,但对于适用于 Ruby 的 AWS 开发工具包、Amazon SWF 或 Amazon SNS 仍有多得多的内容可供学习。有关详细信息和更多示例,请参阅以下各项的官方文档: