Estado programável na programação de eventos Corda
Eu estava tentando o recurso de agendamento de eventos herdando estados agendáveis e testei o exemplo de pulsação também.
- Um evento de agendamento ocorre apenas quando um estado agendável é emitido recentemente ou é atualizado por consumo ? É possível fazer um evento recorrente usando um mesmo estado não consumido?
- Quando um estado planejável tem duas partes como participantes, quem realmente iniciará o fluxo de planejamento mencionado na função nextScheduledActivity () ? (Eu sei que isso acontece automaticamente, mas qual parte iniciará esse fluxo?)
É a mesma Parte que emitiu o estado programável está iniciando o fluxo programável também?
Por favor me ajude a entender isso. Obrigado!
Respostas
Uma atividade é agendada quando um estado agendável é criado e a atividade não é agendada se for consumida. Portanto, você pode ter uma atividade por estado. Você precisa consumir o estado para agendar um novo horário. Dê uma olhada nesta classe, ela é responsável por agendar / cancelar a programação de atividades:https://github.com/corda/corda/blob/release/os/4.7/node/src/main/kotlin/net/corda/node/services/events/ScheduledActivityObserver.kt
A atividade será acionada em todos os nós que têm o estado registrado, você precisa ter uma lógica em seu fluxo para restringir o fluxo de execução em partes que não devem executá-lo. Isso deve dar a você uma ideia:https://github.com/corda/samples-java/blob/master/Advanced/auction-cordapp/workflows/src/main/java/net/corda/samples/flows/EndAuctionFlow.java
Link para a conversa do CordaLedger Slack: https://cordaledger.slack.com/archives/C2KGD72UX/p1600771838039700