初始化工作流时,将调用@Execute任务,以便决策者可以决定任务流。
- 当决策程序未运行时会发生什么情况,SWF 是否可以启动决策程序并执行流程。
- 如果有多个决策者进程会发生什么,SWF 如何知道将请求处理到哪一个。
初始化工作流时,将调用@Execute任务,以便决策者可以决定任务流。
Amazon SWF 不需要决定由哪个决策者处理请求,因为您的工作是确保决策者正在运行并轮询新任务:
What happens when a decider process is not running, can the SWF start the decider process and execute the flow.
不,如果决策程序没有运行,工作流将根本不会启动。
What happens if there are multiple decider processes, how does SWF know which one to handle the request to.
在启动工作流时,您创建要启动的决策程序/工作流的实例。这个实例实际上决定了调用哪个工作流。
在实践中,我发现当决策者进程未运行时,有时工作流会进入“DecisionTaskStarted”状态,即使没有决策者接受决策任务。这使得工作流看起来没有运行。大概决策任务将超时,并且工作流将安排一个新的决策任务,该任务将被您的决策者拾取(如果它现在正在运行)。
如果您有多个决策者正在运行,那么首先获取决策任务的那个将处理它。如果您想将不同的决策任务分配给不同的决策者,请为工作流提供不同的“task_list”。具有“task_list”的决策者将仅对具有相同 task_list 的自己的工作流进行操作。