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

时间:2018-01-05 12:07:35

标签: corda

我在recordAuditEvent(...)课程中找到了FlowLogic方法,但我无法理解如何使用该方法,而且我不知道它是否可以使用#39} ;对这个用例很有用。

1 个答案:

答案 0 :(得分:2)

recordAuditEvent仅供内部使用。

您可以使用CordaRPCOps.startTrackedFlowDynamic跟踪流程的进度。此函数返回具有FlowHandle属性的progressprogressObservable,它为流中的每个进度跟踪器步骤发出事件。您可以按如下方式使用它:

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

flowHandle.progress.subscribe { progressTrackerLabel ->
    // Log the progress tracker label.
}

您还可以通过FlowHandle的{​​{1}}媒体资源获取该流的唯一运行ID。您可以使用此ID通过检查流是否仍然存在于当前状态机列表(即流)中来检查流是否仍在进行中:

id

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

val flowInProgress = flowHandle.id in cordaRPCOps.stateMachinesSnapshot().map { it.id }