这有点难以提供的“答案”,给你并没有真正问一个具体问题。我同意你的看法,使用定时器和信号就是你想要的。
不指定团队如何被通知有关审核。我假设你通过电子邮件通知他们,并指示他们访问某个网站,他们可以查看更改,然后点击指向批准或不批准的链接。点击批准链接将向Web服务器发送一个请求,该请求将向SWF发送信号,表明该评论已被批准。点击“不批准”链接会向SWF发出信号表明该评论尚未获得批准。如果没有人对审核采取行动,您提到您要对团队进行再审核(或者升级为经理)。假设这种再通过48小时后发生。复职后,你再批准他们72小时之前,不要批准。
这是你的工作流程的样子对我说:
- 用户上传文件,并揭开序幕工作流程
- 决胜局任务计划“TransformActivity”
- TransformActivity运行,转换数据到不同的文件,成功完成
- Decider任务计划“UpdateDatabaseActivity”
- UpdateDatabaseActivity运行,更新数据库并成功完成
- 决胜局任务计划“EmailTeamActivity”
- EmailTeamActivity运行,电子邮件的团队,并成功完成
- 决胜局任务时间表48小时定时器。
如果指示批准或不批准的48小时内被接收到的信号:
- 决策器任务调度“RecordFinalDecisionActivity”
- RecordFinalDecisionActivity将运行,记录批准(或不要批准)到数据库中,并成功完成。
- 然后Decider Task会关闭工作流程,因为它已完成。
如果没有接收到信号和定时器触发(48小时后):
- 决胜盘任务调度“EmailTeamAndManagerActivity”
- EmailTeamAndManagerActivity运行,电子邮件团队和经理,并成功完成。
- 判定器任务安排另一个定时器72小时。
如果指示批准或不批准给出的72小时内被接收到的信号:
- 重复相同的逻辑部“。如果指示批准信号或不允许是在48小时内收到“。
如果没有接收到信号且定时器火灾(附加72小时后):
- 此时,工作流可以假定这是一个不允许,调度“RecordFinalDecisionActivity”并在活动完成后关闭工作流程。
您不希望进行“审查”活动的原因是因为该任务被安排,然后一些活动工作人员需要回复成功。这将如何工作?当有人点击“批准”或“不批准”链接时,对网络服务器的请求将不得不从任务列表中拉下活动。但是,如果任务列表具有多个活动,则SWF只会发出其中的任何一个。它可能没有得到正确的。现在,你可以争辩说,你可以在不同的任务列表中安排不同的评论,但这只是繁琐而乏味。
信号是用来表示一个“外部”事件,这非常重要。 SWF documentation on Signals在谈论信号方面做得很好。这是SWF documentation on how to use Timers and Signals。至于关于如何使用SWF和Ruby的细节,我无法真正帮助你。我只使用AWS Flow Framework将SWF与Java结合使用。
感谢您的好解释。 我认为你设置的这些定时器是活动任务超时的副本。 为了给一个exec发信号,你需要domain + workflowId,为了响应一个activity,你只需要taskToken。 太糟糕了,当前的Ruby SDK不允许你只用taskToken(bit.ly/14QOIC8)实例化一个活动任务。 (对不起,我被宠坏了,我直接通过API工作)所以是的,你必须“下载”任务。 我还是比较喜欢活动。询问执行官清楚地表明它有一个[审查]活动任务。 – jmettraux 2013-04-08 08:14:31
是的...很好的解释。我真的在寻找关于我的建议流程的评论,看看是否有其他方法可以实现。而且你已经确认这是要走的路。我一直在阅读SDK源代码,并且已经找到了如何获得流程工作的基础知识,并将其发布到此处。再次感谢。 – 2013-04-08 21:50:25