Uber Cadence中的子工作流程有什么好的用例?

时间:2019-04-25 01:04:48

标签: cadence-workflow

我正在尝试了解Uber Cadence的子工作流程的用例。与将工作流程简单地拆分为功能相比,子工作流程的优势是什么?我有一个相当复杂的工作流程,正在考虑将其拆分为多个子工作流程,但是我不确定这样做的利弊。

1 个答案:

答案 0 :(得分:2)

  • 子工作流程可以由不包含父工作流程代码的另一组工作人员托管。因此,它将作为一项单独的服务,可以从多个其他工作流程中调用。
  • 单个工作流程的大小有限。例如,它不能执行10万个活动。子工作流程可用于将问题分成较小的块。一位有1000个孩子的父母每个执行1000个活动,则可以执行100万个活动。
  • 子工作流程可以使用其ID来管理某些资源,以保证唯一性。例如,管理主机升级的工作流可以在每个主机上有一个子工作流(主机名是工作流ID),并使用它们来确保对主机上的所有操作进行序列化。
  • 子工作流程可用于执行某些定期逻辑,而不会增加父历史记录的大小。父级启动一个子级,该子级执行定期逻辑调用,并根据需要按新次数继续执行,然后完成。从父级if视图来看,这仅仅是一个子工作流程调用。

子工作流程与在单个工作流程中并置所有应用程序逻辑的主要限制是缺少共享状态。父母和孩子只能通过异步信号进行通信。但是,如果它们之间存在紧密的联系,则使用单个工作流程并仅依赖共享对象状态可能会更简单。

如果您的问题在已执行活动和已处理信号的数量方面受到限制,我个人建议从单个工作流程实施开始。它比多个异步通信的工作流简单。

还经常监督工作流不仅是功能,还可以在其中使用OO的全部功能。使用结构,接口和其他OO技术将逻辑分解为更易于管理的抽象。