如何在Corda中的流中更改流的启动器?
我有两个节点,分别是甲方和乙方。我使用一些数据通过甲方的节点点击一个API,然后我需要处理(在流内部)这些数据并创建一个状态,比如状态A(甲方将是参与者),然后我需要使用处理后的数据(从第一个流本身)启动另一个流,并将乙方作为发起方。那我该怎么做呢。基本上,我需要做的是在一个API调用中启动两个不同启动器的流。我认为您可以使用如何在Corda中的流中更改流的启动器?,corda,Corda,我有两个节点,分别是甲方和乙方。我使用一些数据通过甲方的节点点击一个API,然后我需要处理(在流内部)这些数据并创建一个状态,比如状态A(甲方将是参与者),然后我需要使用处理后的数据(从第一个流本身)启动另一个流,并将乙方作为发起方。那我该怎么做呢。基本上,我需要做的是在一个API调用中启动两个不同启动器的流。我认为您可以使用send和receive。在将由第二方启动的响应者类中,可以使用将由第一方启动的主类启动者发送的数据 class MainClass { @Init
send和receive
。在将由第二方启动的响应者
类中,可以使用将由第一方启动的主类启动者
发送的数据
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 }
}
}
}
class类main类{
@启动流
@星表
打开类MainClassInitiator(val参数FromAPI:DataType,
val NodeB:参与方):FlowLogic(){
@暂停
重写趣味调用():SignedTransaction{
val notary=serviceHub.networkMapCache.NotaryIdentity[0]
val启动器=节点B
val会话=initiateFlow(启动器)
val initiatorValue=session.sendandereceive(ParameterFromApi).unwrap{it}
}
}
@发起人(MainClassInitiator::class)
类响应程序(val会话:FlowSession):FlowLogic(){
@暂停
重写趣味调用():SignedTransaction{
val request=session.receive().unwrap{it}
}
}
}
我们可以使用多重应答器类吗?我想我们不能使用。但是你可以打多次电话。