Amazon web services 使用计时器/信号允许人工干预AWS SWF工作流

Amazon web services 使用计时器/信号允许人工干预AWS SWF工作流,amazon-web-services,workflow,Amazon Web Services,Workflow,下面是一个场景。用户上传一个Excel文件,这将启动一个工作流,该工作流验证该文件,将其转换为几个不同的文件,然后根据转换对数据库执行更新。上传后,在流程可以继续之前,团队成员需要审查结果 我正在使用Ruby,并发现信号和计时器是在SWF中实现这一点的方法。然而,Ruby示例并不存在,我需要一些帮助来理解如何使用Ruby 到目前为止,我的理解是安排了一个计时器活动,它基本上会暂停流程,直到计时器过期(此时我可以取消工作流或向员工发送电子邮件并设置另一个计时器),或者向工作流发送信号以开始下一步。

下面是一个场景。用户上传一个Excel文件,这将启动一个工作流,该工作流验证该文件,将其转换为几个不同的文件,然后根据转换对数据库执行更新。上传后,在流程可以继续之前,团队成员需要审查结果

我正在使用Ruby,并发现信号和计时器是在SWF中实现这一点的方法。然而,Ruby示例并不存在,我需要一些帮助来理解如何使用Ruby

到目前为止,我的理解是安排了一个计时器活动,它基本上会暂停流程,直到计时器过期(此时我可以取消工作流或向员工发送电子邮件并设置另一个计时器),或者向工作流发送信号以开始下一步。决策者将处理信号,然后启动适当的活动

如有任何关于其他来源的想法或指导,将不胜感激

谢谢, 托马斯

  • 用户上传excel文件,执行“StartWorkflowExecution”,将决策任务排队
  • 决策人员通知流是新的/“第一阶段”,它安排“转换文件”活动任务
  • 活动工作人员拾取任务并执行“转换文件”活动,完成后执行“RespondActivityTaskCompleted”并产生“TransformationsDone”结果,将决策任务排队
  • 决策人员拿起决策任务,注意到转换已完成,并安排新的活动任务
  • 活动工作人员拿起活动任务,注意到它是针对团队成员的(根据决策工作人员在安排活动任务时给出的指示),团队成员收到通知,以某种方式执行其操作,然后以某种方式通知活动工作人员,活动工作人员将回答“RespondActivityTaskCompleted”
  • 我不认为需要计时器或信号,它只是简单的流程。如果您想要重复发生事件、超时和/或中断流程,这两个概念非常有用


    请注意,您可以通过使用任务列表来区分活动工作人员(例如,自动化工作的活动工作人员与人工参与者的活动工作人员,等等)。

    鉴于您没有真正提出特定问题,提供“答案”有点困难。我同意你的观点,使用定时器和信号是你想要的

    您没有指定团队如何获得有关审核的通知。我假设您通过电子邮件通知他们,并将他们引导到某个网站,在那里他们可以查看更改,然后单击一个链接以批准或不批准。单击要批准的链接将向web服务器发送一个请求,该请求将“通知”SWF审查已被批准。单击“不批准”链接将向SWF发出审查尚未批准的“信号”。您提到,如果没有人对审核采取行动,您希望重整团队(或者可能上报给经理)。比如说,48小时后会发生翻修。在重新认证后,你在假设不批准之前再给他们72小时

    以下是您的工作流程在我看来的样子:

  • 用户上载文件并启动工作流
  • 决策者任务计划“转换活动”
  • TransformActivity运行,将数据转换为不同的文件,并成功完成
  • 决策者任务计划“UpdateDatabaseActivity”
  • UpdateDatabaseActivity运行、更新数据库并成功完成
  • 决策者任务计划“EmailTeamActivity”
  • EmailTeamActivity运行、向团队发送电子邮件并成功完成
  • Decider任务安排了一个48小时的计时器
  • 如果在48小时内收到表示批准或不批准的信号:

  • 决策者任务计划“记录最终决策活动”
  • RecordFinalDecision活动将运行,将批准(或不批准)记录到数据库中,并成功完成
  • 决策者任务将关闭工作流,因为它已完成
  • 如果未收到信号且计时器启动(48小时后):

  • Decider任务计划“EmailTeamAndManagerActivity”
  • EmailTeamAndManagerActivity运行,向团队和经理发送电子邮件,并成功完成
  • 决策者任务安排另一个计时器72小时
  • 如果在规定的额外72小时内收到表示批准或不批准的信号:

  • 重复与“如果在48小时内收到表示批准或不批准的信号”一节相同的逻辑
  • 如果未接收到信号且计时器启动(额外72小时后):

  • 此时,工作流可以假定这是一个“不批准”,安排“RecordFinalDecision”活动,并在该活动完成后关闭工作流
  • 您不想进行“审阅”活动的原因是,该任务已被安排,然后某个活动工作人员需要回复成功。那怎么办?当有人单击“批准”或“不批准”链接时,对Web服务器的请求必须从任务列表中下拉该活动。然而,如果任务列表有多个活动,SWF只会给出其中的任何一个。它可能找不到合适的。现在,你可能会争辩说,你可以在不同的任务列表中安排不同的评审,但这只是一个麻烦和乏味的过程


    信号是用来表示“外部”事件的,这在很大程度上就是。在谈论信号方面,这本书做得很好。这是我的建议。至于如何使用SWF和Ruby的细节,我真的帮不了你。我只使用AWS Flow框架将SWF与Java结合使用。

    您在第5章中忽略了活动工作者。它将如何分配、通知用户、等待响应(可能需要几天)并回复SWF?使用计时器和信号是正确的方法。复习是一项活动。谢谢gre