Я создал 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 застревает?И как я могу заставить это работать должным образом?