【问题标题】:Find ActivityId of completed activity in AWS SWF?在 AWS SWF 中查找已完成活动的 ActivityId?
【发布时间】:2016-09-11 03:31:34
【问题描述】:

我对 AWS 中的 SWF 相当陌生。 我正在创建一个工作流程,并且很难弄清楚如何识别刚刚完成的活动的名称。决策者需要知道这一点,以便确定接下来要安排哪个活动。

ActivityTaskCompletedEventAttributes (http://docs.aws.amazon.com/amazonswf/latest/apireference/API_ActivityTaskCompletedEventAttributes.html) 不包含有关刚刚完成的活动的 ID 或名称的信息。

另一方面,ActivityTaskScheduleEventAttributes (http://docs.aws.amazon.com/amazonswf/latest/apireference/API_ActivityTaskScheduledEventAttributes.html) 确实包含此信息。

在识别刚刚报告完成的活动的 ActivityId 和名称时,通常只返回事件历史记录并获取已安排的最后一个活动的 ID 和名称(并假设这是报告完成的活动) )?这对我来说似乎不对。

在文档 (http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-dev-deciders.html#swf-dg-coordination-logic) 中,他们谈到定义协调逻辑的方式似乎知道之前完成的活动名称的名称。

这在实践中是如何实现的?

【问题讨论】:

    标签: amazon-web-services


    【解决方案1】:

    经过一段时间的研究,我得出的结论是,处理此问题的最佳方法基本上是通过回溯事件历史列表来查找任务的安排时间。预定的事件包含我正在寻找的信息。

    步骤可能如下所示:

    1) 确保您已加载所有历史事件页面(此处为 nextPageToken 描述):http://docs.aws.amazon.com/amazonswf/latest/apireference/API_PollForDecisionTask.html#API_PollForDecisionTask_RequestSyntax

    2) ActivityTaskCompleted 与已完成的活动名称之间的联系如下:

    ActivityTaskCompletedEventAttributes.ScheduledEventId => ActivityTaskScheduledEventAttributes.ActivityType.Name

    在 C# 中,这可能看起来像

    var name = eventHistory
                    .Find(e => e.EventId == mostRecentEvent
                                                .ActivityTaskCompletedEventAttributes
                                                .ScheduledEventId)
                    .ActivityTaskScheduledEventAttributes
                    .ActivityType
                    .Name
    

    eventHistory 是 SWF 提供给决策者的历史事件列表,mostRecentEvent 是您感兴趣的 ActivityTaskScheduledEvent。

    【讨论】:

    • 谢谢。大约一个小时前我遇到了同样的问题,所以很高兴看到你找到了解决方案。这是一个奇怪的设计决定,不是吗?我了解这背后的逻辑(即,如果您的决策者将大型任务分成多个批次),但在大多数情况下,您肯定希望从一项任务过渡到另一项任务。
    • 同意。如果可以在其他地方找到数据,我也看到了不要在对象上添加新属性的要点(即:如果在预定事件中可用,则不要在完成的事件中包含演员名称),但这绝对不是很方便。
    猜你喜欢
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多