我有以下Corda流,我在其中传递了Party
列表,并尝试与每个流会话发起流会话:
@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.
}
}
但是,当我调用它时,出现以下异常:
java.lang.IllegalStateException:尝试在两次中初始化InitialFlow() 相同的InitiatingFlow com.template.TwoTransactionsFlow@1ba8d137 同一方O = PartyB,L =伦敦,C = GB。这不被支持 版本的Corda。或者,您可以通过调用以下命令来启动新流程 @InitiatingFlow子流中的initializeFlow()。
此异常的原因是什么?
答案 0 :(得分:1)
此异常表示您已尝试在同一流上下文中与同一方发起两次流会话,在这种情况下,因为要传递到流中的parties
列表包含重复项。这是不允许的。
您应该:
FlowSession
创建一个PartyA
,并使用同一流程会话两次发送PartyA
信息)@InitiatingFlow
中并在其中创建FlowSession
(每个@InitiatingFlow
及其内联子流共享相同的流上下文)