Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在AWS SWF中查找已完成活动的ActivityId?_Amazon Web Services - Fatal编程技术网

Amazon web services 在AWS SWF中查找已完成活动的ActivityId?

Amazon web services 在AWS SWF中查找已完成活动的ActivityId?,amazon-web-services,Amazon Web Services,我是AWS的SWF新手。 我正在创建一个工作流,很难弄清楚如何识别刚刚完成的活动的名称。决策者需要知道这一点,以便确定下一步要安排的活动 ActivityTaskCompletedEventAttributes()不包含有关刚刚完成的活动的id或名称的信息 另一方面,ActivityTaskScheduleEventAttributes()确实包含此信息 在识别刚刚报告完成的活动的ActivityId和名称时,是否通常只返回事件历史记录并获取上次计划的活动的id和名称(并假设这是报告完成的活动)

我是AWS的SWF新手。 我正在创建一个工作流,很难弄清楚如何识别刚刚完成的活动的名称。决策者需要知道这一点,以便确定下一步要安排的活动

ActivityTaskCompletedEventAttributes()不包含有关刚刚完成的活动的id或名称的信息

另一方面,ActivityTaskScheduleEventAttributes()确实包含此信息

在识别刚刚报告完成的活动的ActivityId和名称时,是否通常只返回事件历史记录并获取上次计划的活动的id和名称(并假设这是报告完成的活动)?我觉得这不太对

在文档()中,他们讨论了定义协调逻辑的方式,这种方式似乎知道先前完成的活动的名称

这实际上是如何在实践中实现的


经过一段时间的研究,我得出结论,处理这一问题的最佳方法基本上是通过检索事件历史记录列表来查找任务计划的时间。计划的事件包含我正在查找的信息

步骤可能如下所示:

1) 确保已将所有历史事件页面加载到下一个GetOken描述:

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

ActivityTaskCompletedEventAttributes.ScheduledEventId=> ActivityTaskScheduledEventAttribute.ActivityType.Name

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

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

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

谢谢。大约一小时前我也遇到了同样的问题,所以很高兴看到你找到了解决方案。这是一个有点奇怪的设计决定,不是吗?我理解这背后的逻辑(即,如果决策者将大型任务分为多个批次),但在大多数情况下,您肯定希望从一个任务过渡到另一个任务。同意。我也明白,如果数据可以在其他地方找到,就不要在对象上添加新属性的意义(即:如果在计划的事件中可用,则不要在已完成的事件中包含参与者名称),但这肯定不是很方便。