【发布时间】:2019-10-03 18:27:34
【问题描述】:
我有一个用例,我必须从 Sender 运营商 (TTL) 向两个运营商(比如 JIO 和 Airtel)发送投诉详细信息(投诉是一个分类帐,即 IOUState.class)
State 类构造函数有投诉详情和三个 Operator(Party 对象),一个发送者和两个接收者。
用户案例的第一部分执行良好,交易/投诉详细信息正在以保险柜状态/线性状态记录。
交易的第二部分涉及接收方运营商之一向发送方运营商发送投诉解决响应,不应向第三运营商发送合规响应。即说投诉与 Airtel 有关,然后 Airtel 将响应 TTL,JIO 需要脱离循环。
我写了一个状态类和两个流类。
但是当我执行第二个流程(Airtel 到 TTL)时,它抛出 java.lang.IllegalArgumentException:未为以下事务参与者提供流程会话:[O=PartyJIO, L=MUMBAI, C=IN]
我已经使用 Command 创建了交易,只需要两个 Signers TTL 和 Airtel 但不知道为什么仍然收到错误
//Airtel Node中的Flow类,TAP为TTL Node
列出 requiredSigners = Arrays.asList(getOurIdentity().getOwningKey(), TAP.getOwningKey());
Command command = new Command(new IOUContract.Create(), requiredSigners);
txBuilder = new TransactionBuilder(notary)
.addInputState(IOUState1.get(0))
.addOutputState(outputState, IOUContract.ID)
.addCommand(command);
FlowSession otherPartySession1 = 启动Flow(TAP); //TAP是TTL Party Object //Otherpartysession1 正在 Airtel 节点执行
SignedTransaction fullySignedTx = subFlow(new CollectSignaturesFlow(
signedTx, Arrays.asList(otherPartySession1), CollectSignaturesFlow.tracker()));
java.lang.IllegalArgumentException:未为以下事务参与者提供流会话:
SignedTransaction fullySignedTx = subFlow(new CollectSignaturesFlow(
signedTx, Arrays.asList(otherPartySession1), CollectSignaturesFlow.tracker()));
java.lang.IllegalArgumentException:未为以下事务参与者提供流会话:
【问题讨论】:
-
从参与者列表中删除 jio。
-
我有一个州级课程。在重写的 getparticipants 函数中,我检查存储 jio 的变量是否不为空,然后我包括三个参与者 ttl、airtel、jio,这是第一次交易所必需的。如果存储 jio 方的变量为空,则我将包括 ttl、airtel 作为返回参与者。因此,对于第二笔交易,它应该只返回两个参与者
-
你添加了subFlow(FinalityFlow(signedTx, listOfSession))
-
是的。我已经添加了它。会话列表只有一个。即airtel到ttl
-
然后仔细检查参与者列表在控制台上打印名称。
标签: corda