问题标签 [amazon-swf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Amazon Simple Workflow - 给定 workflowID 列出所有执行
再次启动工作流时,具有相同的工作流ID,它会获得不同的运行ID。有没有办法检索给定工作流 ID 的此类执行(包含不同的 runID)?
我探索了ListClosedWorkflowExecutionsRequest
API,但它只列出了所有工作流执行,而不是特定的工作流ID。
我要解决的问题是:有许多工作流程由于某种原因失败了。在重新启动过程中,我没有包含正确的时间过滤器,其中很少有人重新启动,而很少有人跳过。所以我想做的是,列出所有失败的工作流 ID,使用ListClosedWorkflowExecutionsRequest
. 对于每个 workflowID,获取所有执行,如果最近一次成功,则跳过它,否则重新启动。
我对 SWF 不太陌生,所以有更好的方法来完成同样的事情吗?
谢谢
amazon-web-services - 将某些工作流执行优先于其他执行
我一直在使用亚马逊 swf 的流程框架,我希望能够运行优先工作流执行和正常工作流执行。如果有优先任务,那么活动应该在正常优先任务之前获取优先任务。实现这一目标的最佳方法是什么?
我认为以下方法可能有效,但我想知道是否有更好/推荐的方法。
- 我将为该活动定义两个活动工作者和两个活动列表。一份优先清单和一份普通清单。每个工人将使用相同的活动类。
- 两个工作人员将在同一主机(ec2 实例)上运行。
- 在工作流上,我将定义两个方法:startNormalWorkflow 和 startHighWorkflow。在 startHighWorkflow 方法中,我可以使用 ActivitySchedulingOptions 将任务放在高优先级列表中。
这种方法的问题是不能保证高优先级任务在正常任务之前被调度。
java - AWS SWF - 如何将参数传递给工作流任务?
我刚开始使用适用于 Java 的 AWS Flow Framework。本质上,我正在尝试扩展HelloWorld 教程,但遇到了困难。
我autoScale
在接口中定义了一个新方法,它接受String
如下参数
实施也相当简单。
最后在GreeterWorkflowImpl
课堂上,我将 newTask
称为如下
但我收到诸如AWS 错误代码:ValidationError、AWS 错误消息:检测到 1 个验证错误:“autoScalingGroupName”处的值 null 未能满足约束:成员不得为空等错误
关于我做错了什么的任何想法?谢谢!
amazon-web-services - 使用workflowId保证工作流的唯一性
我们正在从各种基于 cron 的流程转移到 Amazon Simple Workflow Service。其中许多不再需要在特定时间运行,只需在需要时触发。但是,对于某些工作流,我们需要保证工作流(或者更确切地说,工作流中的所有活动)不会并行发生,并且在任何时候都只有一个运行。完成后,它可以再次运行。
依赖workflowId的唯一性会不会有任何问题,或者是某种糟糕的设计?如果是这样,会出现什么问题,以及如何设计系统以确保某些工作流在不应该启动时不启动。
amazon-web-services - 供 Amazon SWF 决策者检查活动任务状态的高级 PHP 库
我正在为 Amazon SWF 的相当简单的工作流程编写 PHP。我发现自己开始编写一个库来检查某些操作是否已经开始或完成。本质上是遍历事件列表以检查事情的进展情况,然后在需要时启动适当的活动。有时这可能有点奇怪,因为活动类型和输入信息并非在每个事件中,它似乎在 ActivityTaskScheduled 事件中。我在此过程中发现了这类事情,我担心我可能会遗漏有关事件列表的微妙内容。
这让我怀疑有人一定已经编写了某种通用库来查找各种活动的当前状态。甚至可能是某种更具说明性的方式来编码与 SWF 相关的流程图。PHP是否存在类似的东西?
(谷歌搜索没有想出任何东西)
php - 升级正在运行的 Upstart + PHP + SWF 活动脚本,直到活动完成
我正在尝试使用 PHP 守护程序(通过 Upstart)创建一个分布式系统,运行 SWF 决策程序和活动,以替换我们的许多 cron 作业和一些可以在后台异步运行的进程。
但是有些事情我不确定:
当这些脚本运行时升级这些脚本有什么好方法,可能在不止一台服务器上?
如何确保在升级脚本和重新启动守护程序之前完成任何正在运行的活动
由于代码库,我必须坚持使用 PHP,但这并不排除其他一些“包装”脚本(如果需要)。
amazon-web-services - AWS SWF Signal during vs Decision after Timer 最佳实践?
我有一组我认为非常适合 AWS SWF 的业务流程。
其中一些过程包括等待期,可能是一周到三个月不等。一个(简短且未完全解释)示例可能类似于“如果用户注册特定服务,如果他们在 4 个月后仍然订阅,则向他们发送某种形式的奖励”。
我正在通过让注册过程启动一个工作流程来对此进行建模,然后为 4 个月的等待期设置一个计时器。
问题在于如果订阅者在 4 个月内取消订阅,我们不想发送奖励。
我可以看到两种方法:取消时发出“取消”信号(这将停止“睡眠”工作流程),或者在“发送奖励”步骤之前做出“检查订阅”决定(即,在工作流程之后“醒来”)。(显然我也可以两者都做,对于“腰带和大括号”的方法)
这里有推荐的最佳实践吗?有可能存在数以万计的这些不同的业务流程,它们在任何时候都可能处于活动或休眠状态。
amazon-sqs - 基于 SQS 消息触发 SWF 工作流
前言:我正在尝试针对我认为非常常见的用例提出一个建议,并且我想使用亚马逊的 SWF 和 SQS 来实现我的目标。可能还有其他服务可以更好地匹配我正在尝试做的事情,所以如果您有建议,请随时将它们扔掉。
问题:最基本的需求是客户端(移动设备、Web 服务器等)发布一条消息,该消息将在不响应客户端的情况下异步处理 - 非常基本。
预期的实现是让客户端将消息发布到预先确定的 SQS 队列。至此,客户端就完成了。我们还将有一个已定义的 SWF 工作流,负责从队列中提取消息并(经过一些操作)将其放入 Dynamo DB 中——同样,这一切都相当简单。
不过,我似乎无法弄清楚如何触发工作流程开始。从我一直在阅读的内容来看,工作流程并不意味着是一个不确定的过程。它有开始、中间和结束。根据 SWF 文档,工作流可以运行不超过一年(在 SWF 中设置超时值)。
所以,我的问题是:如果我假设一个工作流代表一个消息处理流,我如何在消息发布到 SQS 时启动工作流?
警告:我也研究过使用 SNS 而不是 SQS。这将允许我运行一个可以订阅 SNS 的服务器,然后在发布通知时启动工作流。这当然是一种解决方案,但我想避免为单个 Web 服务设置服务器,然后我必须根据正在处理的消息数量来管理/扩展。我首先考虑使用 SQS/SWF 的原因是拥有一个我不必担心的自动缩放系统。
先感谢您。
asp.net - 使用 AWS 的计划任务
我目前在 AWS 上有一个 Windows 实例,它运行一个 Windows 计划任务来执行一个 .net 脚本来处理天数订单。
我最近使用 ELB 对一些实例进行了负载平衡,这一切都很好。
问题是如何设置计划任务,以便并非所有实例都运行它。我研究过 AWS 上的 OpsWorks、SimpleWorkFlow 等,但对于这个相对简单的任务,我应该专注于哪一个非常令人困惑。
谢谢
amazon-swf - Simple Workflow 注册新版本
我更改了活动的超时。在 aws doc 中,它说在这种情况下我必须注册该类型的新版本。但是如何让执行使用新版本呢?