有没有办法自动返回contractId
由如下命令生成的:
client.getCommandSubmissionClient().submit(...).blockingGet();
如果没有,最好的方法是什么?
没有内置的同步 API 调用返回(成功)命令提交的结果事务。命令服务只返回命令完成(即成功/失败)。
做你想做的事情的一种方法是使用该commandId
字段。它允许提交方关联命令提交和产生的交易。但是,您必须自己构建一个结合命令和事务服务的包装器。
查找您正在寻找的交易的一种简单方法是这样的:
client.getTransactionsClient()
.getTransactions(LedgerOffset.LedgerBegin.getInstance(), new FiltersByParty(Collections.singletonMap(party, NoFilter.instance)), false)
.filter(t => "MyCommandId".equals(t.getCommandId))
.singleOrError()
.blockingGet()
请注意,这里我们从LedgerBegin
. 通常,您会client.getTransactionsClient().getLedgerEnd()
在提交命令之前要求分类帐结束,并使用该偏移量来订阅交易。