Понимание сигнала и запроса в каденции

#cadence-workflow #uber-cadence

Вопрос:

Запрос — Запрос заключается в том, чтобы раскрыть это внутреннее состояние внешнему миру. Запрос отображается как асинхронный обратный вызов, вызываемый внешними сущностями.

Что вы подразумеваете под асинхронным обратным вызовом?

И Док говорит, что запрос имеет два ограничения 1). Не должно изменять состояние рабочего процесса 2). Никакой операции блокировки не будет.

 @Override
    public String queryGreeting() {
      greeting = "val";
      return greeting;
    }
 

Но я изменил переменную в методе запроса, и она меняет значение.

Является ли это просто убеждением, что мы не должны писать изменяемый или блокирующий код внутри метода запроса?

Я не видел никакой разницы между запросом и сигналом. Метод запроса будет вызван даже после завершения рабочего процесса, когда сигнал as не будет?

Правильно ли я понимаю?

Ответ №1:

Запрос не должен изменять переменные рабочего процесса. Это нарушит восстановление рабочего процесса.

Сигнал может изменять любые данные рабочего процесса, а также вызывать блокирующие операции, такие как действия.

Комментарии:

1. Спасибо за ответ!! Извините, я перепутал. Это синхронный обратный вызов, а не асинхронный. Что это значит? (запрос отображается как синхронный обратный вызов)

2. Это означает, что вызывающий запрос блокируется до тех пор, пока функция запроса не вернется.