历史回放如何以节奏进行?
我有一个按顺序调用两个活动的工作流。
比如说,第一个活动已经完成,第二个活动有 100 行代码。如果应用服务器在执行activity2中的第50行代码时重新启动,它是否正好从第50行开始执行。如果是,那么在节奏中发生了什么神奇的事情?
@Override
public String composeGreeting(String greeting, String name) throws Exception {
FileWriter fw =
new FileWriter(
"/Users/kumble-004/Documents/Uber_Cadence/Sample_Projects/TestCadence/src/com/company/"+name+".txt");
System.out.println(
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss").format(LocalDateTime.now())
+ " [Activity] started");
long time = System.currentTimeMillis() + 240000;
int i = 0, j=1;
while (System.currentTimeMillis() != time) {
if(i++ %10000000 == 0) {
fw.write("print - " + j++ + " " +
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss").format(LocalDateTime.now()) +"\n");
}
}
fw.close();
System.out.println(
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss").format(LocalDateTime.now())
+ " [Activity] ended");
return greeting + " " + name + "!";
}
}
我的 hello 活动中有上述代码。此代码将运行 4 分钟,当条件满足时,它将在文件中写入数据
我开始了一个工作流程,并在打印后退出了 cadence 服务器[Activity] started
。我没有启动它只是停止它。但 4 分钟后,它完全[Activity] Ended
在控制台中打印。我想知道这怎么可能,因为我停止了服务器但代码正在执行,数据正在写入文件中。
当我通过 cadence UI 检查它时,它显示最后的历史是
ActivityTaskStarted
. 我启动了我的服务器。15 分钟后(因为 scheduleToCloseTimeoutSeconds 是 15 分钟)活动返回事件ActivityTaskTimedOut
,并且整个 whorkflow 由于此超时而失败。
请解释重新启动 cadence 服务器时发生了什么?