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
相关产品推荐
相关产品推荐

