【发布时间】:2019-02-07 20:33:52
【问题描述】:
我有 2 个节点,分别是甲方和乙方。我通过甲方的节点使用一些数据访问 API,然后我需要处理(在流中)这些数据并创建一个状态,说状态 A(甲方将参与者)然后我需要使用已处理的数据(来自第一个流本身)和 B 方作为发起者来启动另一个流。那么我将如何做到这一点? .基本上我需要做的就像我需要在一个 API 调用中启动 2 个不同启动器的流。
【问题讨论】:
标签: corda
我有 2 个节点,分别是甲方和乙方。我通过甲方的节点使用一些数据访问 API,然后我需要处理(在流中)这些数据并创建一个状态,说状态 A(甲方将参与者)然后我需要使用已处理的数据(来自第一个流本身)和 B 方作为发起者来启动另一个流。那么我将如何做到这一点? .基本上我需要做的就像我需要在一个 API 调用中启动 2 个不同启动器的流。
【问题讨论】:
标签: corda
我认为您可以使用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 }
}
}
}
【讨论】: