You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BaSyx 1.3 AAS SDK问题:上传含子模型的AAS无法指定外部注册地址

BaSyx 1.3 AAS生产环境部署的外部URL注册问题

问题背景

部署包含AAS仓库服务器与AAS注册中心的AAS生产环境时,需要区分组件内部通信与外部访问方式。在AAS注册中心注册资产shell和子模型时,需写入AAS仓库的外部URL,但使用BaSyx 1.3时无法完整实现该操作。

当前可实现的AAS Shell注册

AAS仓库支持通过basyxaas_registry_host=${external_address}环境变量,确保启动时用正确外部地址注册存储的子模型与shell,该方式已通过MongoDB持久化集合验证。使用AASAggregatorProxy搭配AASRegistryProxy可正确添加shell,代码示例如下:

public void uploadShell2(AASBundle bundle) {
    AASAggregatorProxy repo = getRepository();
    AASRegistryProxy registry = getRegistry();
    AssetAdministrationShell aas = (AssetAdministrationShell) bundle.getAAS();
    repo.createAAS(aas);
    AASDescriptor descr = new AASDescriptor(aas, config.repoExternal());
    registry.register(descr);
}

子模型注册存在的问题

  • AASAggregatorProxy不支持创建或更新子模型
  • SubmodelAggregator虽可能提供所需操作,但API文档中未找到连接服务器的方式
  • ConnectedAssetAdministrationShellManager可上传子模型,但仅使用内部地址,无法指定所需的外部地址${external_address},代码示例如下:
public ConnectedAssetAdministrationShellManager getConnection() {
    AASRegistryProxy registryProxy = getRegistry();
    ConnectedAssetAdministrationShellManager caasm = new ConnectedAssetAdministrationShellManager(registryProxy);
    return caasm;
}

public void uploadShell(AASBundle bundle) {
    var con = getConnection();
    AssetAdministrationShell aas = (AssetAdministrationShell) bundle.getAAS(); 
    con.createAAS(aas, config.repository());
    for (var sm : bundle.getSubmodels()) {
        con.createSubmodel(aas.getIdentification(), (Submodel) sm);
    }
}

期望解决方案(满足任一即可)

  • AASAggregatorProxy新增子模型管理功能
  • 提供类似AASAggregatorProxy的子模型代理类
  • 允许为ConnectedAssetAdministrationShellManager指定与访问地址不同的注册地址

示例场景:代码中用http://localhost:8081/aasServer访问AAS仓库时,需以http://some-host:17081/aas注册,而非内部地址。

内容的提问来源于stack exchange,提问作者devledgers1357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:15:27