Можно ли создать цепочку респондентов в Corda?например.FlowA - (инициирует) -> FlowB - (инициирует) -> FlowC - PullRequest
0 голосов
/ 07 февраля 2019

Я создал 3 потока FlowA, FlowB и FlowC.FlowA инициирует FlowB, а FlowB инициирует FlowC.Вот как выглядит мой код:

@StartableByRPC
@InitiatingFlow
class FlowA(val message: String) : FlowLogic<Unit>() {

    override val progressTracker = ProgressTracker()

    @Suspendable
    override fun call() {
        println("FlowA")
        initiateFlow(ourIdentity).send(message)
        println("FlowA End")
    }
}

@InitiatedBy(FlowA::class)
@InitiatingFlow
class FlowB(val flowASession: FlowSession) : FlowLogic<Unit>() {

    override val progressTracker = ProgressTracker()

    @Suspendable
    override fun call() {

        val message: String = flowASession.receive(String::class.java).unwrap {
            it
        }

        println("FlowB " + message)

        initiateFlow(ourIdentity).send(message)

        println("FlowB End")
    }
}

@InitiatedBy(FlowB::class)
class FlowC(val flowBSession: FlowSession) : FlowLogic<Unit>() {

    override val progressTracker = ProgressTracker()

    @Suspendable
    override fun call() {

        val message: String = flowBSession.receive(String::class.java).unwrap {
            it
        }

        println("FlowC " + message)
    }
}

Когда я запустил FlowA через оболочку путем передачи сообщения «Привет», я получил следующий вывод:

FlowA
FlowA End
FlowB Hi
Done
Flow completed with result: kotlin.Unit 

Почему FlowC несрабатывает и FlowB застревает?И как я могу заставить это работать должным образом?

...