В Corda, как определить поток InitiatedBy без определения инициирующего потока? - PullRequest
0 голосов
/ 11 мая 2018

Я хотел бы создать поток InitiatedBy, который инициируется классом потока, определенным в другом CorDapp. У меня нет исходных файлов другого CorDapp, который написан и поддерживается другой компанией.

Как я могу записать поток IntiatedBy в моем CorDapp так, чтобы он мог инициироваться инициирующим потоком, определенным в другом CorDapp?

1 Ответ

0 голосов
/ 11 мая 2018

В Corda 4 вы можете указать, какой поток ответчика использовать через конфигурацию узла. Смотри https://docs.corda.net/head/flow-overriding.html#overriding-a-flow-via-node-configuration.

В Corda 3 и более ранних версиях вам необходимо создать абстрактный класс с тем же полностью определенным именем, что и поток, который будет инициировать ваш InitiatedBy поток:

@InitiatingFlow
@StartableByRPC
abstract class Initiator : FlowLogic<Unit>()

Затем используйте этот класс в аннотации InitiatedBy вашего потока:

@InitiatedBy(Initiator::class)
class Responder(val counterpartySession: FlowSession) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        // TODO: Flow response logic.
    }
}

Поток Responder теперь будет реагировать на любые инициирующие потоки с именем Initiator, независимо от фактического класса, запущенного на другой стороне.

...