我正在尝试确定哪些CorDapps正在节点上运行
此信息在启动期间显示在控制台和日志中Loaded CorDapps : blah-1.1.20, corda-core-2.0.0
有没有一种程序化方法来获取该列表? (RPC?)
答案 0 :(得分:1)
您可以使用CordaRPCOps.registeredFlows
方法检索节点上注册的流列表。
如果需要CorDapp名称列表,可以编写一个从节点的cordapps
目录中读取目录的流,如下所示:
@InitiatingFlow
@StartableByRPC
class ReadFilesFlow : FlowLogic<List<String>>() {
override val progressTracker = ProgressTracker()
@Suspendable
override fun call(): List<String> {
val cordappDirectory = File("./cordapps")
val cordappFiles = cordappDirectory.listFiles()
return cordappFiles.map { file -> file.name }
}
}
然后,您将使用以下方法通过RPC检索CorDapps列表:
CordaRPCOps.startFlowDynamic(ReadFilesFlow::class.java)
请注意,对于使用模拟网络的流测试,这不起作用,因为当前目录(./
)不会引用节点的基本目录。