Планируемое состояние в Corda Event scheduling

#kotlin #events #state #blockchain #corda

#kotlin #Мероприятия #состояние #блокчейн #corda

Вопрос:

Я пробовал функцию планирования событий, наследуя планируемые состояния, и я также протестировал пример сердцебиения.

  • Происходит ли событие планирования только тогда, когда новое планируемое состояние выдается или оно обновляется путем потребления? Возможно ли выполнить повторяющееся событие, используя то же неиспользованное состояние?
  • Когда планируемое состояние имеет две стороны в качестве участников, кто будет фактически инициировать поток планирования, упомянутый в функции nextScheduledActivity()? (Я знаю, что это происходит автоматически, но какая сторона будет инициировать этот поток?)

Является ли та же сторона, которая выдала планируемое состояние, также инициирует планируемый поток?

Пожалуйста, помогите мне понять это. Спасибо!

Ответ №1:

  1. Действие планируется, когда создается планируемое состояние, и действие не планируется, если оно используется. Таким образом, у вас может быть одно действие для каждого состояния. Вам нужно использовать состояние, чтобы запланировать новое время. Взгляните на этот класс, он отвечает за планирование / отмену действий: https://github.com/corda/corda/blob/release/os/4.7/node/src/main/kotlin/net/corda/node/services/events/ScheduledActivityObserver.kt

  2. Действие будет запущено на всех узлах, у которых записано состояние, вам необходимо иметь логику в вашем потоке, чтобы ограничить запуск потока сторонами, которые не должны его запускать. Это должно дать вам представление: https://github.com/corda/samples-java/blob/master/Advanced/auction-cordapp/workflows/src/main/java/net/corda/samples/flows/EndAuctionFlow.java

Ответ №2:

Ссылка на диалог CordaLedger Slack: https://cordaledger.slack.com/archives/C2KGD72UX/p1600771838039700