Cumulocity新版本数据点访问及旧数据点服务复用问题咨询
新版Cumulocity数据点访问与交互能力实现指引
服务找不到的原因
c8yDataPointSvc、schemaPropertiesSvc 无法找到的原因是Cumulocity从1015版本完成前端架构迁移后,原属于旧版cockpit应用的内部私有服务不再通过全局运行时容器暴露,旧的全局依赖注入逻辑完全失效。
旧服务能力的等效替代
c8yDataPointSvc功能替代
该服务核心作用是拉取设备关联的测量、事件、告警类数据点元数据,现在可通过官方Client SDK直接实现同等能力:- 调用
ApplicationContext.getInstance().getMeasurementService()系列查询方法,传入目标设备ID即可获取对应设备下所有可绑定数据点的标识、类型、单位、分组信息,返回结构与旧服务输出完全对齐,可无缝替换原有业务逻辑。 - 如需复用原有旧组件逻辑,可通过Cumulocity Microfrontend框架将原Angular组件以远程模块的方式挂载到新版UI路由下,挂载时在模块依赖配置中显式声明该组件依赖的旧服务提供器,即可解决服务找不到的问题,无需全局暴露旧服务。
- 调用
schemaPropertiesSvc功能替代
该服务核心作用是解析设备资产的自定义Schema配置、渲染可交互的属性表单,新版UI已将同能力转为公开可复用的官方实现:- 直接引用
@c8y/ngx-components/schema-properties模块下的SchemaPropertiesComponent,组件内置了Schema结构解析、属性值校验、表单双向绑定逻辑,可直接替换原服务的相关调用,从1018版本开始该组件已纳入公开组件库,不再是内部私有实现。
- 直接引用
匹配示例交互的现成可复用组件
你需要的支持搜索、分类展示、层级筛选的数据点选择交互,不需要从零开发:
- 1017版本后官方上线了公开的
MeasurementDatapointSelectorComponent,内置能力完全匹配示例界面的交互逻辑:支持按目标设备筛选数据点、按测量片段自动分组、内置单位校验规则、支持单选/多选模式、自带全量关键词搜索能力。 - 组件引入方式:在自研Microfrontend的依赖配置中加入
@c8y/ngx-components/datapoint-selector包,在模块元数据中声明对应组件即可直接复用,无需额外编写服务调用逻辑。
常见开发注意事项
- 不要尝试在新版UI中通过全局依赖注入所有带
c8y前缀的私有服务,这类服务在新版构建流程中已标记为内部实现,不会打包到全局运行时,注入时必然抛出未找到的错误。 - 如需兼容自定义扩展的数据点类型,可在使用官方选择器组件时传入自定义
datapointResolver回调,将自定义元数据结构映射为组件要求的标准结构,无需修改组件源码。 - 挂载复用旧Angular组件时,需开启Shadow DOM样式隔离配置,避免旧组件的样式污染全局页面样式。
内容的提问来源于stack exchange,提问作者Alice Arkalykova
相关产品推荐
相关产品推荐

