Corda 如何通过RPC检查流的当前状态?

Corda 如何通过RPC检查流的当前状态?,corda,Corda,我在FlowLogic类中找到了一个方法recordAuditEvent(…),但我不知道如何使用它,也不知道它是否对这个用例有用。recordAuditEvent仅供内部使用 您可以使用CordaRPCOps.starttracketflowdynamic跟踪流的进度。此函数返回具有progress属性的FlowHandle进度是一个可观察的,为流程中的每个进度跟踪步骤发出事件。您可以按如下方式使用它: val flowHandle = proxy.startTrackedFlowDynami

我在
FlowLogic
类中找到了一个方法
recordAuditEvent(…)
,但我不知道如何使用它,也不知道它是否对这个用例有用。

recordAuditEvent
仅供内部使用

您可以使用
CordaRPCOps.starttracketflowdynamic
跟踪流的进度。此函数返回具有
progress
属性的
FlowHandle
<代码>进度是一个可观察的,为流程中的每个进度跟踪步骤发出事件。您可以按如下方式使用它:

val flowHandle = proxy.startTrackedFlowDynamic(MyFlow::class.java, arg1, arg2, ...)

flowHandle.progress.subscribe { progressTrackerLabel ->
    // Log the progress tracker label.
}
您还可以通过
FlowHandle
ID
属性获取流的唯一运行ID。通过检查流是否仍存在于当前状态机(即流)列表中,可以使用此ID检查流是否仍在进行中:

您还可以监视状态机管理器,等待流完成,然后检查它是否成功并获得其结果:

val flowUpdates = cordaRPCOps.stateMachinesFeed().updates
flowUpdates.subscribe {
    if (it.id == flowHandle.id && it is StateMachineUpdate.Removed) {
        val int = it.result.getOrThrow()
        // Handle result.
    }
}
val flowUpdates = cordaRPCOps.stateMachinesFeed().updates
flowUpdates.subscribe {
    if (it.id == flowHandle.id && it is StateMachineUpdate.Removed) {
        val int = it.result.getOrThrow()
        // Handle result.
    }
}