Как воспроизведение истории работает в каденции?
У меня есть рабочий процесс, который последовательно вызывает два действия.
Скажем, первое действие завершено, а второе содержит 100 строк кода. Если сервер приложений перезагружается при выполнении 50-й строки кода в activity2, он точно начинает выполнение с 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 + "!";
}
}
У меня есть приведенный выше код в моем приветственном действии. этот код будет работать в течение 4 минут и будет записывать данные в файл, когда выполняется условие
Я запустил рабочий процесс и покинул сервер каденции после печати [Activity] started
. Я не начинал, это просто останавливает. Но через 4 минуты в консоли точно печатается [Activity] Ended
. Мне интересно, как это возможно, потому что я останавливаю сервер, но код выполняется, данные записываются в файл.
Пока я проверяю его через пользовательский интерфейс каденции, он показывает, что последняя история - ActivityTaskStarted
. И я запустил свой сервер. Через 15 минут (например, scheduleToCloseTimeoutSeconds - 15 минут) активность возвращается с событием ActivityTaskTimedOut
, и весь whorkflow завершился неудачно из-за этого тайм-аута.
Пожалуйста, объясните, что происходит при перезапуске сервера каденции?