【发布时间】:2020-05-29 00:59:11
【问题描述】:
以 Corda 文档中描述的流程为例(参见here),Bob 如何在不轮询自己的保管库的情况下收到他刚刚签署的交易已完成的通知? 是否存在特定回调?
我需要在 Bob 节点上运行的 CorDapp 实时向另一个系统传达交易状态
非常感谢
【问题讨论】:
标签: corda
以 Corda 文档中描述的流程为例(参见here),Bob 如何在不轮询自己的保管库的情况下收到他刚刚签署的交易已完成的通知? 是否存在特定回调?
我需要在 Bob 节点上运行的 CorDapp 实时向另一个系统传达交易状态
非常感谢
【问题讨论】:
标签: corda
您可以通过两种方式实现这一目标:
1.使用客户端订阅更新
cordaRPCOPS.vaultTrack(<YourState>.class).getUpdates().subscribe( update -> {
update.getProduced().forEach(stateAndRef -> {
// Action to be Performed on State Update
});
});
2。使用 CordaService 订阅更新:
getServiceHub().getVaultService().trackBy(<YourState>.class).getUpdates().subscribe( update -> {
update.getProduced().forEach(stateAndRef -> {
// Action to be Performed on State Update
});
});
【讨论】:
除了Ashutosh的回答,
在识别 API 以启动流程的 SpringBoot 网络服务器中,您可以使用 proxy.startTrackedFlowDynamic()(其中 proxy 是您节点的 RPC 连接);它返回一个FlowProgressHandle,您可以使用它来订阅流事件。
【讨论】: