Corda-为模拟网络指定应用程序名称

问题描述

如果我使用flowSession.getCounterpartyFlowInfo()从单元测试中调用MockNetwork,它将返回FlowInfo(flowVersion=1,appName=<unkNown>)

这是我当前的MockNetwork配置:

network = MockNetwork(
    MockNetworkParameters(
        cordappsForAllNodes = listof(
            TestCordapp.findCordapp("com.example.contract"),TestCordapp.findCordapp("com.example.workflow")
        ),networkParameters = testNetworkParameters(
            minimumPlatformVersion = 5
        )
    )
)

是否可以指定在模拟网络中运行的应用程序的appName

解决方法

我认为没有配置。通过删除'.jar'扩展名,从jar文件名派生出appName。

对于MockNode,将扫描软件包并加载类。

这是它的派生方式:

val Class<out FlowLogic<*>>.appName: String
get() {
    val jarFile = location.toPath()
    return if (jarFile.isRegularFile() && jarFile.toString().endsWith(".jar")) {
        jarFile.fileName.toString().removeSuffix(".jar")
    } else {
        "<unknown>"
    }
}