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



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

提前致谢

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

如果发送电子邮件活动失败,预计将在非常严格的重试计划内在短时间内重试。同时,用户操作的超时预计会大得多(可能是几天或几周(,并且通常不可重试。

编辑以回答重试问题:

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

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

最新更新