我有2个节点,分别表示甲方和乙方。我正在通过甲方的节点访问一些数据的API,然后我需要处理(在流中)此数据并创建一个表示状态A(甲方将为参与者),那么我需要使用处理后的数据(来自第一个流本身)来启动另一个流,并以乙方作为发起者。那我该怎么做呢? 。基本上,我需要做的就像是需要在一个API调用中启动2个不同的启动程序流。
答案 0 :(得分:1)
我认为您可以使用sendAndReceive
。在Responder
类中,将由第二方发起,可以利用从MainClassInitiator
发送的数据,该数据将由第一方发起。
class MainClass {
@InitiatingFlow
@StartableByRPC
open class MainClassInitiator(val ParameterFromApi: DataType,
val NodeB: Party) : FlowLogic<SignedTransaction>() {
@Suspendable
override fun call(): SignedTransaction {
val notary = serviceHub.networkMapCache.notaryIdentities[0]
val initiator = NodeB
val session = initiateFlow(initiator)
val initiatorValue = session.sendAndReceive<SignedTransaction>(ParameterFromApi).unwrap { it }
}
}
@InitiatedBy(MainClassInitiator::class)
class Responder(val session: FlowSession) : FlowLogic<SignedTransaction>() {
@Suspendable
override fun call(): SignedTransaction {
val request = session.receive<DataType>().unwrap { it }
}
}
}