亚马逊发布了一份白皮书和代码示例,其中包含亚马逊简单工作流服务手册。
Amazon Simple workflow service(SWF)是指:用于创建可扩展且灵活的应用程序的工作流服务。无论是金融或保险应用程序中的业务流程自动化、构建复杂的数据分析应用程序,还是管理云基础设施的服务,Amazon SWF都可以可靠地协调应用程序中的每个处理步骤。
SWF的最大优势在于它是一种完全管理的服务。用户无需在硬件或管理和维护方面进行任何额外投资,也就是说,无需进行调优、修补或升级。它提供了一个简单的API,并允许在EC2或任何联网计算机上执行工作流步骤。Swf是基于轮询实现的,因此内部(企业内部)运行的程序可以轮询Swf以获得新任务。最后,AWS管理控制台还可以提供工作流当前状态和执行历史的详细报告。
SWF的实现需要向新的/现有的应用程序中添加决策代码,该代码通过指定工作顺序、分时和故障条件来定义工作流的协作逻辑。此外,还需要实现活动,即用于执行工作流每个步骤的组件。决策程序和活动形成一个工作流。一旦决策程序和活动到位,SWF服务代表将代表应用程序协调所有工作。
尽管AWS SWF具有这些优势,但由于缺乏实施方面的示例和最佳实践,构建SWF应用程序并不容易。亚马逊的新白皮书填补了这一空白。白皮书提供了大量工作流模式的实现示例,并提供了实现这些模式的代码。白皮书介绍了有关以下模式和实现的信息:
重复执行一项活动,包括:重复执行一项活动指定次数;以指定次数递归执行异步活动;满足条件时递归执行异步活动
多个活动的同步执行,包括:固定数量活动的分支聚合;动态确定活动数量的分支聚合;拆分多个活动并使用第一个完成的活动的执行结果
工作流逻辑的条件执行包括:基于条件执行多个活动之一;根据条件在较大的组中执行多项活动
手动完成活动任务:手动执行活动
异步执行异常处理:处理异步代码(如活动)产生的异常,通过try/catch/finally清理资源;处理由其他异步代码调用其他异步代码引起的异常
重试无法执行的异步代码:重试某个活动直到成功,或重试一定次数;注释一个活动,使框架可以使用时间增量重试策略自动重试,即每个重试间隔在达到指定值后增加并停止;retrydecorator类实现时间增量重试,即在运行时指定重试策略或根据需要修改;索引重试通过asyncretryingexecution类实现,也就是说,它允许运行时指定重试策略。此外,白皮书还展示了在运行方法的实现中使用asyncrunnable抽象,即asyncretryingexecution每次重试时都需要执行活动;实现自定义重试策略
工作流的信号传输:实现在执行前等待某一信号一定时间的工作流。