在Corda flow中,java.lang.IllegalStateException:在同一个InitiatingFlow中尝试initiateFlow()两次
我有以下Corda flow,其中我传入了一个在Corda flow中,java.lang.IllegalStateException:在同一个InitiatingFlow中尝试initiateFlow()两次,corda,Corda,我有以下Corda flow,其中我传入了一个参与方的列表,并尝试与每个参与方启动flow会话: @InitiatingFlow @StartableByRPC class MyFlow(val parties: List<Party>) : FlowLogic<Unit>() { @Suspendable override fun call() { // Flow logic. val flowSessions = pa
参与方的列表,并尝试与每个参与方启动flow会话:
@InitiatingFlow
@StartableByRPC
class MyFlow(val parties: List<Party>) : FlowLogic<Unit>() {
@Suspendable
override fun call() {
// Flow logic.
val flowSessions = parties.forEach { party ->
initiateFlow(party)
}
// Flow logic.
}
}
@InitiatingFlow
@星表
类MyFlow(valparties:List):FlowLogic(){
@暂停
覆盖有趣的调用(){
//流逻辑。
val flowSessions=parties.forEach{party->
发起人(聚会)
}
//流逻辑。
}
}
但是,当我调用它时,我得到以下异常:
java.lang.IllegalStateException:尝试在中启动两次流()
相同的InitiatingFlow com.template。TwoTransactionsFlow@1ba8d137对于
同一方O=PartyB,L=London,C=GB。此文档中不支持此操作
科尔达的版本。或者,您可以通过调用
@InitiatingFlow子流中的initiateFlow()
此异常的原因是什么?此异常表示您已尝试在同一流上下文中与同一方启动流会话两次,在这种情况下,因为您传递到流中的参与方
列表包含重复项。这是不允许的
你应该:
与给定参与方重复使用现有会话(即,使用PartyA
创建单个FlowSession
,并使用相同的FlowSession发送PartyA
信息两次)
将子流导入另一个@initialingflow
并在那里创建流会话
(每个@initialingflow
及其内联子流共享相同的流上下文)