当前位置: 首页 > 知识库问答 >
问题:

使用异步活动与让工作流等待信号

孙岳
2023-03-14

假设我们需要向用户发送电子邮件并等待用户回复,然后继续执行工作流。我们是否应该创建一个异步活动来发送电子邮件,并在回复电子邮件到来时完成活动?或者我们是否应该创建一个正常活动来发送电子邮件,然后工作流等待信号,当回复电子邮件到来时,我们将信号发送到工作流?这两个选项是等效的吗?或者有一些差异可以用来决定哪一个用于不同的活动?

提前致谢

共有1个答案

堵飞鸿
2023-03-14

我推荐此用例的活动然后信号方法。原因是发送电子邮件和等待回复是两个不同的任务,具有不同的超时和重试策略。

如果发送电子邮件活动失败,预计将在一个非常紧凑的重试时间表中进行短暂的超时重试。同时,用户操作的超时预计会更长(可能是几天或几周),并且通常是不可重试的。

编辑以回答重试问题:

但如果我们真的想重试呢?假设我们希望用户在一天内回复电子邮件,否则我们会再次发送。我们可以重试整个工作流,但这并不理想,因为发送电子邮件和用户回复只是工作流的一部分。我们是否应该将其设置为子工作流并重试子工作流?

您重试整个交互。请参阅重试部分工作流的文件处理示例。这里是Go SDK和Java SDK版本。

 类似资料:
  • 然后我有了调用webAPI的dataLayer,它看起来像这样。为了简单起见,我直接使用。result。 我的问题是,我看到一些教程说我们应该避免使用。result,因为它可能会导致死锁。我不确定在我的情况下是否需要使用Async/await?如果我确实需要,我知道我应该一直异步,但我确实希望我的controlLayer是同步的,因为我有其他层调用controlLayer的函数,我不希望所有层的函

  • 问题内容: 示例了如何使用内置的加密库和流来计算文件的md5。 但是是否可以将其转换为使用ES8异步/等待而不是使用上述回调,但仍保持使用流的效率? 问题答案: / 仅适用于promise,不适用于流。有一些想法可以制作一种类似流的额外数据类型,该数据类型将具有自己的语法,但是如果有的话,这些想法是高度实验性的,我将不赘述。 无论如何,您的回调仅等待流结束,这非常适合兑现承诺。您只需要包装流: 现

  • 我试图在react/electron项目中使用async/await,但它不起作用。我想要的是获取docker容器状态列表。但是安慰。日志(列表)返回未定义的。 有人能帮我吗?:)

  • 问题内容: 给出以下代码: 产生以下错误: TS2322:类型’Promise []’无法分配给类型’number []’。类型’Promise 不可分配给类型’number’。 我该如何解决?怎样才能让和一起工作? 问题答案: 这里的问题是,您正在尝试兑现承诺而不是承诺。这没有达到您的期望。 当传递给的对象不是Promise时,只需立即按原样返回值,而不是尝试解析它。因此,由于您在此处传递了(P

  • 我试图为从服务调用异步函数的函数编写测试,但我一辈子都不知道如何让Jasmine在执行expect函数之前等待异步操作完成。 我试图使用Jasmine的“完成”功能,但我不知道如何实现它。 在本例中,只要 调用时,它立即跳转到expect并失败,因为异步操作尚未完成。

  • 我们希望异步调用一个长时间运行的活动,并且在一段时间后基于外部信号,想要取消该长时间运行的活动。 目前,活动了解取消的唯一方式是通过心跳。确保您的活动心跳,并且不吞下心跳方法抛出的异常。