华为云用户手册

  • 方案架构 本方案中主要使用 VPC终端节点 来实现通过内网访问iDME云服务。VPC终端节点的含义如下: VPC终端节点(VPC Endpoint),是能够将VPC私密地连接到终端节点服务(例如云服务、用户私有服务),使VPC中的云资源无需弹性IP就能够访问终端节点服务,提高了访问效率,为您提供更加灵活、安全的组网方式。 VPC终端节点由“终端节点服务”和“终端节点”两种资源实例组成。 终端节点服务(VPCEP Service),指将云服务或用户私有服务配置为VPC终端节点支持的服务,可以被终端节点连接和访问。 终端节点(VPCEP Client),用于在VPC和终端节点服务之间建立便捷、安全、私密的连接通道。 如图1所示,仅支持终端节点到终端节点服务所在后端资源的单向访问。在本方案中,图中“Region”为“华北-北京四”区域,用户VPC和iDME云服务属于同区域,将待访问的iDME资源创建为终端节点服务,并在用户VPC中购买终端节点,实现用户VPC中的E CS 通过私网IP访问iDME资源的目标。 图1 同区域跨VPC内网访问iDME云服务方案
  • 实施步骤 创建 虚拟私有云VPC 和子网。 创建流程详细请参考创建虚拟私有云和子网。 购买弹性云服务器。 购买流程详细请参考购买弹性云服务器。 购买“华北-北京四”区域的VPCEP。 iDME提供VPCEP的代买服务,只需为数据建模引擎运行服务开启内网访问,便可实现自动创建VPCEP Service和VPCEP Client,并将最终租户添加到白名单。根据实际区分以下两种场景: 新购数据建模引擎时开启内网访问,具体操控请参见开通数据建模引擎。 已有数据建模引擎开启内网访问,具体操作请参见配置内网访问。
  • 涉及接口 创建并执行清理数据任务 URI格式:POST http://{Endpoint}/rdm_{appID}_app/services/rdm/basic/api/v1/tenant-clean-task 查询任务执行结果 URI格式:GET http://{Endpoint}/rdm_{appID}_app/services/rdm/basic/api/v1/tenant-clean-task/{id} 重试清理数据任务 URI格式:PUT http://{Endpoint}/rdm_{appID}_app/services/rdm/basic/api/v1/tenant-clean-task/{id} 其中,{endpoint}表示承载REST服务端点的服务器 域名 或IP地址,{appID}表示应用ID,{id}表示清理数据任务ID。
  • 背景信息 追溯是维护工作的基本能力,维护工作中经常需要通过追溯排查问题、评估风险。 例如追溯出现问题的内存,需要先根据内存批次信息手工转换成采购商SN,然后手工分段查询当前状态,不仅效率低,而且查不到故障件的历史装配关系,出现追溯遗漏。一般情况下,在服务器存储硬件维护中,每周都有2~3次追溯需求。如果采用手工排查方式,计算维护人员、存储维护人员及MQE需要在CMES、悍马等多个系统手工导出数据,涉及十亿级数据量,使用Excel分析,简单的追溯每次至少1天时间;如果追溯的条件复杂( 如18nm内存发货,批次、型号、工艺等组合查询),有时甚至需要1周,且无法保证质量,追溯的需求非常迫切。
  • 示例场景 假设存在如下场景: 维护工程师收到问题单板时,采集其采购商条码和相关器件编码,追溯到涉及器件的DateCode、LotCode,确认问题器件批次等信息。 根据问题器件批次追溯到来料供应商,器件坏件影响的单板、模块以及影响客户、合同,制定应对措施并指导实施。 同时识别同批次器件来料和在库状态,及时做好质量隔离措施。 根据问题单板条码逆向追溯相关硬盘、内存等各种介质对应的供应商SN、批次等,支撑定位出嫌疑介质信息。根据嫌疑介质供应商SN等正向追溯相关硬盘阶段去向(在制在库、理货、发货、逆向退回、报废),及时采取召回、整改等措施将业务影响降到最低。
  • 解决方案 使用数字主线引擎(LinkX Foundation,简称LinkX-F)提供的图谱技术,构建出海量业务数据全关联图谱,可以联接内存的批次、容量、工艺、型号等信息,包括内存所在的父项条码、阶段去向、来料批次号、厂家名称、容量、型号等相关数据。通过多系统超大数据量处理,即可实现快速支撑连续性器件质量追溯一键式分析器件问题影响,有效提升器件质量问题分析处理效率。 在数字主线引擎中,聚合服务是数据服务的基本单位,也是实现业务功能的最小单元。利用聚合服务编排,通过拖拉拽图形化的方式,即可快速生成一个API。将数字主线引擎中开发的API集成到对应的数据查询应用,即可提供按厂家SN、21条码、整机SN等组合内存数据查询、数据导出、导入模板查询统计的能力,产品线硬件维护人员也可通过器件追溯应用对内存数据过滤查询、导出导入数据。利用数字主线引擎,轻松实现百亿级数据分钟级追溯,快速获得如下价值和收益。 计算&数据存储与机器视觉产品维护人员每周2-3次的追溯内存的效率,由原来的N天甚至1周提升到现在的1-10分钟。 支持1000条以内厂家SN、21条码、整机SN的文本输入查询,有效提升易用性。 支持10W+厂家SN、21条码数据查询,10分钟以内返回查询结果,快速高效。
  • 停止iDME服务 iDME提供了两种停止方式。 方式一:通过Linux命令结束iDME进程。 执行如下命令,获取当前服务的进程号(PID)。 jps -l | grep com.huawei.microservice.rdm.RdmApplication 执行如下命令,结束iDME进程。 kill PID 方式二(推荐使用):通过systemd命令停止iDME。 systemctl stop dme.service
  • 启动iDME服务 iDME提供了两种启动方式。 方式一:通过脚本启动iDME iDME运行态包分为4个目录:bin、config、lib和suggestion_sql。其中,启动iDME服务涉及的jar包均在lib目录下。iDME的主启动类为com.huawei.microservice.rdm.RdmApplication,启动时需要导入必要的环境变量信息(包括依赖的中间件信息:云数据库、MongoDB、Redis、 CSS 、Kafka以及文件存储系统)。iDME提供启动脚本模板(startxdm.bash),该脚本默认加载路径为/opt/cloud/tenant-service。通过该脚本配置环境变量,即可通过如下命令一键式启动应用。 ./startxdm.bash 方式二(推荐使用):通过systemd命令启动iDME。 执行如下命令,启动iDME服务。 systemctl start dme.service
  • 监控iDME服务 通过控制台监控 登录 应用运维管理 控制台,实时监控各 云服务器的使用 情况,包括CPU、内存、网络等各种看板,监控云服务器的负载水平。 通过云服务器监控 登录云服务器。 执行如下命令,进入arthas目录。 cd /opt/arthas 执行如下命令,启动arthas,查看当前的Java进程,如图1所示。 java -jar arthas-boot.jar 图1 iDME服务进程 输入iDME服务进程(com.huawei.microservice.rdm.RdmApplication)所对应的数字,按“Enter”。例如2。 执行如下命令,监控JVM状态(如内存使用情况、GC、线程等)。如图2所示。 dashboard 图2 JVM状态
  • URI URI格式: POST http://{Endpoint}/rdm_{appID}_app/services/rdm/basic/api/v3/transaction-apis/transactions/{tx_id}/rollback 参数说明: 表1 URI参数说明 参数 是否必填 参数类型 描述 Endpoint 是 String 承载REST服务端点的服务器域名或IP地址。 appID 是 String 应用ID。 tx_id 是 String 事务ID,即开启事务返回的transaction_id。
  • 访问验证 可通过以下两种方式进行验证访问iDME服务。 通过Ping方式验证 通过客户计算机,执行以下命令,验证自有服务器和iDME公网服务的通信情况。 ping 公网IP地址或者域名 公网IP地址和公网域名可在数据建模引擎运行服务详情页获取,详细请参见查看数据建模引擎运行服务详情信息。 经测试,可以正常访问应用运行态(iDME公网服务)。 通过API方式验证 通过API方式访问和使用iDME,详细操作指导请参考《iDME API参考》。
  • 应用场景 当用户拥有能支持公网访问的自有服务器,且业务应用服务部署在自有服务器上时,无需其他资源辅助,可直接访问iDME公网服务。 本节中的方案主要介绍用户从能支持公网访问的自有服务器如何经过业务应用服务,直接访问iDME公网服务。本方案具有以下优势: 无需购买其他资源,直连使用iDME,有效降低成本。 提供安全、稳定、高效的方式来集成iDME,实现用于二次开发。 例如:用户拥有能支持公网访问的自有服务器,不想借助其他资源,希望可以直接使用iDME服务,那么可以使用本方案。
  • 入参示例 POST http://dme.cn-north-4.huaweicloud.com/rdm_01a2b2c4764d4e00f123g345fd9baa9f_app/services/dynamic/api/People/list/20/1 { "params": { "sorts": [ { "sort": "DESC", "orderBy": "name" }, { "sort": "DESC", "orderBy": "age" } ], "filter": { "joiner": "and", "conditions": [ { "conditionName": "gender", "operator": "=", "conditionValues": [ "男" ] } ] }, "isNeedTotal": true } }
  • 出参示例 { "result": "SUC CES S", "data": [ { "id": "455304645330341888", "creator": "test1 3c03e719256a427eb9277b64fcXXXXXX", "createTime": "2023-01-13T01:38:07.000+00:00", "modifier": "test1 3c03e719256a427eb9277b64fcXXXXXX", "lastUpdateTime": "2023-01-13T01:38:07.000+00:00", "rdmVersion": 1, "rdmExtensionType": "People", "rdmDeleteFlag": 0, "tenant": { //tenant为参考对象 "id": "-1", "clazz": "Tenant" }, "className": "People", "name": "李四", "description": null, "kiaguid": null, "securityLevel": "internal", "gender": "男", "age": 20 }, { "id": "455304534248394752", "creator": "test1 3c03e719256a427eb9277b64fcXXXXXX", "createTime": "2023-01-13T01:37:40.000+00:00", "modifier": "test1 3c03e719256a427eb9277b64fcXXXXXX", "lastUpdateTime": "2023-01-13T01:37:40.000+00:00", "rdmVersion": 1, "rdmExtensionType": "People", "rdmDeleteFlag": 0, "tenant": { //tenant为参考对象 "id": "-1", "clazz": "Tenant" }, "className": "People", "name": "张三", "description": null, "kiaguid": null, "securityLevel": "internal", "gender": "男", "age": 18 } ], "errors": [], "pageInfo": { "curPage": 1, "pageSize": 20, "totalRows": 2, "totalPages": 1 } }
  • 入参 POST http://{Endpoint}/rdm_{appID}_app/services/dynamic/api/{entityName}/list/pageSize/curPage { "params": { "sorts": [ { "sort": "DESC", "orderBy": "属性名称" } ], "filter": { ...... }, "isNeedTotal": true } } {Endpoint}表示数据建模引擎所在域名或IP地址,{appID}表示应用ID,{entityName}表示实体的英文名称。 在URL上填写待查询的页码(curPage)和每页可显示的数据量(pageSize)。 在JSON代码中的设置sorts字段和filter字段。 sorts:填写需要按哪个字段进行排序,可为空。 filter:填写过滤条件,可为空。
  • 示例1:查询发货记录关联的所有组装记录 调用认证鉴权接口,获取用户的Token。 请求消息 URI: POST https://{Endpoint}/v3/auth/tokens 请求消息头: Content-Type: application/json 请求Body: { "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "user_name", "password": "user_password", "domain": { "name": "domain_name" } } } }, "scope": { "project": { "name": "project_name" } } } } 其中,加粗的斜体字段需要根据实际值填写。 Endpoint:表示承载REST服务端点的服务器域名或IP地址。 user_name:表示用户名。 user_password:表示用户登录密码。 domain_name:表示用户所属的账号名。 project_name:表示项目名,代表iDME应用的部署区域。 响应消息 返回状态码“200 OK”,在响应Header中获取“X-Subject-Token”的值即为Token。如下所示: X-Subject-Token: MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX... 调用关系实体“AssembleShipmentLink”的queryRelatedObjects接口,查询发货记录关联的所有组装记录。 请求消息 URI: POST http://{Endpoint}/rdm_{appID}_app/services/api/AssembleShipmentLink/queryRelatedObjects/100/1 请求消息头: Content-Type: application/json 请求Body: { "params": { "role": "source", "isNeedTotal": true, "objectId": 701125002182795264 } } 其中,加粗的斜体字段需要根据实际值填写。 Endpoint:表示承载REST服务端点的服务器域名或IP地址。 appID:表示应用ID。 role:表示角色,取值范围:TARGET(目标模型),SOURCE(源模型)。此处设置为“SOURCE”。 isNeedTotal:表示是否需要查询总记录数。此处设置为“true”。 objectId:表示role参数值对应的 数据实例 ID。 响应消息 为篇幅起见,这里只展示部分内容。 { "result": "SUCCESS", "data": [ { "id": "701124583796776960", "lastUpdateTime": "2024-11-21T09:38:47.042+0000", "rdmExtensionType": "ShipmentRecord", "className": "ShipmentRecord", "clazz": "ShipmentRecord", "vin": "001" }, { "id": "701124634447192064", "lastUpdateTime": "2024-11-21T09:38:59.118+0000", "rdmExtensionType": "ShipmentRecord", "className": "ShipmentRecord", "clazz": "ShipmentRecord", "vin": "002" } ], "errors": [], "pageInfo": { "curPage": 1, "pageSize": 100, "totalRows": 2, "totalPages": 1 } }
  • 前提条件 已在应用设计态创建了如下数据模型,并将这些数据模型部署至应用运行态。 表1 汽车追溯系统的数据模型 数据模型 基本信息 基本属性 数据实体 英文名称:SupplyRecord 中文名称:供货记录 中文描述:存储汽车每个零部件的名称、配件编号、厂家信息、进货数量、进货单价等信息。 模型类型:实体模型 父模型:BasicObject 模型分类:业务数据模型 表名称:VehicleTraceabilitySystem_SupplyRecord 同步至LinkX-F:否 其他配置项保持默认设置。 PartName属性信息: 英文名称:PartName 中文名称:配件名称 英文描述:Part Name 中文描述:配件名称 类型:文本 文本长度:100 默认值:PartName 密级:内部公开 唯一键:否 必填:是 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 PartNumber属性信息: 属性英文名称:PartNumber 属性中文名称:配件编号 英文描述:Part Number 中文描述:配件编号 类型:文本 文本长度:100 默认值:PartNumber 密级:内部公开 唯一键:否 必填:是 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 ManufactureInformation属性信息: 属性英文名称:ManufactureInformation 属性中文名称:厂家信息 英文描述:Manufacture Information 中文描述:厂家信息 类型:文本 文本长度:100 密级:内部公开 唯一键:否 必填:否 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 PurchaseQuantity属性信息: 属性英文名称:PurchaseQuantity 属性中文名称:进货数量 英文描述:Purchase Quantity 中文描述:进货数量 类型:整型 密级:内部公开 唯一键:否 必填:否 列表属性:是 入库:是 其他配置项保持默认设置。 英文名称:AssembleRecord 中文名称:组装记录 中文描述:存储汽车组装时所需的发动机、底盘、车身、电气设备等零部件信息。 模型类型:实体模型 父模型:BasicObject 模型分类:业务数据模型 表名称:VehicleTraceabilitySystem_AssembleRecord 同步至LinkX-F:否 其他配置项保持默认设置。 EngineNumber属性信息: 属性英文名称:EngineNumber 属性中文名称:发动机编号 英文描述:Engine Number 中文描述:发动机编号 类型:文本 文本长度:100 默认值:EngineNumber 密级:内部公开 唯一键:否 必填:是 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 ChassisNumber属性信息: 属性英文名称:ChassisNumber 属性中文名称:底盘编号 英文描述:Chassis Number 中文描述:底盘编号 类型:文本 文本长度:100 默认值:ChassisNumber 密级:内部公开 唯一键:否 必填:是 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 BodyNumber属性信息: 属性英文名称:BodyNumber 属性中文名称:车身编号 英文描述:Body Number 中文描述:车身编号 类型:文本 文本长度:100 默认值:BodyNumber 密级:内部公开 唯一键:否 必填:是 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 BrakePadNumber属性信息: 属性英文名称:BrakePadNumber 属性中文名称:刹车片编号 英文描述:Brake Pad Number 中文描述:配件编号 类型:文本 文本长度:100 默认值:BrakePadNumber 密级:内部公开 唯一键:否 必填:是 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 英文名称:ShipmentRecord 中文名称:发货记录 中文描述:存储车辆识别号(VIN)、销售日期、销售价格、销售渠道、销售地点等信息。 模型类型:实体模型 父模型:BasicObject 模型分类:业务数据模型 表名称:VehicleTraceabilitySystem_ShipmentRecord 同步至LinkX-F:否 其他配置项保持默认设置。 VIN属性信息: 属性英文名称:VIN 属性中文名称:车辆识别号 英文描述:Vehicle identification number 中文描述:车辆识别号 类型:文本 文本长度:100 默认值:VIN 密级:内部公开 唯一键:否 必填:是 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 SaleDate属性信息: 属性英文名称:SaleDate 属性中文名称:销售日期 英文描述:Sale Date 中文描述:销售日期 类型:日期 密级:内部公开 唯一键:否 必填:否 列表属性:是 值可变:是 入库:是 其他配置项保持默认设置。 SalesPrice属性信息: 属性英文名称:SalesPrice 属性中文名称:销售价格 英文描述:Sales Price 中文描述:销售价格 类型:浮点型 标度:2 密级:内部公开 唯一键:否 必填:否 列表属性:是 值可变:是 入库:是 其他配置项保持默认设置。 SalesChannels属性信息: 属性英文名称:SalesChannels 属性中文名称:销售渠道 英文描述:Sales Channels 中文描述:销售渠道 类型:文本 文本长度:100 密级:内部公开 唯一键:否 必填:否 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 SalesSite属性信息: 属性英文名称:SalesSite 属性中文名称:销售地点 英文描述:Sales Site 中文描述:销售地点 类型:文本 文本长度:100 密级:内部公开 唯一键:否 必填:否 列表属性:是 值可变:是 值存储方式:原值 入库:是 其他配置项保持默认设置。 关系实体 英文名称:SupplyAssembleLink 中文名称:供货与组装记录关系 中文描述:为SupplyRecord实体和AssembleRecord实体建立多对多关系。 模型分类:业务数据模型 关系类型:多对多 联动更新关系实例:否 表名称:VehicleTraceabilitySystem_SupplyAssembleLink_REL 同步至LinkX-F:否 源数据实体名称/别名:SupplyRecord/SupplyRecord 目标数据实体名称/别名:AssembleRecord/AssembleRecord 其他配置项保持默认设置。 - 英文名称:AssembleShipmentLink 中文名称:组装与发货记录关系 中文描述:为AssembleRecord实体和ShipmentRecord实体建立多对多关系。 模型分类:业务数据模型 关系类型:多对多 联动更新关系实例:否 表名称:VehicleTraceabilitySystem_AssembleShipmentLink_REL 同步至LinkX-F:否 源数据实体名称/别名:AssembleRecord/AssembleRecord 目标数据实体名称/别名:ShipmentRecord/ShipmentRecord 其他配置项保持默认设置。 -
  • 操作流程 表1 基线管理操作流程 主要操作流程 操作目的 构建数据模型 使用iDME的数据模型管理完成对业务数据对象的模型设计,为构建的数据模型添加文件类型属性。 发布在应用设计态构建的数据模型,并将应用部署至数据建模引擎。 使用文件服务功能 在数据模型实例化的过程中,使用文件服务功能管理文件,包括上传文件、下载文件、获取图片文件等。 可视化页面:在应用运行态的数据实例中管理文件。 API方式:使用iDME的全量数据服务API管理文件。
  • 解决方案 工业数字模型驱动引擎(Industrial Digital Model Engine,简称iDME)提供的文件服务功能可大大提升文件管理的效率。 通过将文件和数据模型的实例数据建立关联,以对象化方式管理文件,方便文件归类、查找和更新。 通过对文件类型属性的“密级”和“加密”设置,实现文件的加密或解密存储,保障企业知识资产。 提供BLOB和对象存储两种存储方式,支持简单上传、分块上传、断点续传上传和闪传。其中,BLOB表示数据库存储文件,对象存储表示使用 对象存储服务 存储文件。 当文件大于100MB或网络环境较差时,使用分块上传可实现并行上传多个分块以加快上传速度。如果分块上传过程中某一分块上传失败,再次上传时会从系统记录的点继续上传,从而达到断点续传的效果。如果系统已存在某个文件,后续再上传该文件时,系统会根据文件的唯一哈希值直接复制文件,无需重新上传文件,即可快速完成上传任务。
  • 业务痛点 近几年来,我国工业的数字化进程加速,从研发、生产、销售、物流等诸多环境都会产生大量的文件,多、杂且分散,给企业管理和协作都带来不少难点。 文件多,分散存储,查阅不方便,管理效率低 在工业相关企业的经营过程中,会涉及到很多合作单位或者部门,企业员工需要经常查阅各合作单位/部门的相关文件,例如图纸、施工记录、验收报告等纸质文件,各种电子文件、邮件等。传统文件管理方式存在着文件分散、没有集中管理等情况,不仅对文件的查阅带来极大的阻碍,还会耗费大量的人力和时间,效率低下,容易出现错误、遗漏等问题。 文件管理安全性不高 工业相关企业的文件中往往包含大量的敏感信息,例如设计图纸、客户订单、物料标准、财务报告等,具有很高的安全性和保密性要求,一旦泄露或者丢失会对企业的运营和发展造成很大影响。传统的文件管理方式,企业员工可以随时篡改、盗取或者销毁,极易导致重要数据资产丢失或泄露,给企业带来损失。 传输大文件时,传输速度慢、不稳定、不灵活、不兼容等 在各个领域中,有很多需要传输大文件的情况,例如国际数据传输、数据协作、数据备份等。这些情况涉及到的大文件包括图纸设计、图像、文档等。使用传统的FTP/HTTP等传输方式时,容易受到网络波动和网络延迟的制约或者其他因素的影响,从而导致传输中断或失败,需要重新开始或者手动恢复,增加工作负担和成本。
  • 功能对比 表1 数据实体查询接口 接口 适用场景 查询效率 多字段排序 Get 适用于通过实体或实例的ID,获取某实体或实例所有信息的场景。 模型越复杂,参考对象和扩展属性越多,查询效率越慢。 不支持。 Batchget 适用于通过实体或实例的ID,获取多个实体或实例所有信息的场景。 模型越复杂,参考对象和扩展属性越多,查询效率越慢。 不支持。 List 适用于只查询数据模型自身信息的场景。 不支持参考模型属性作为查询条件。 查询效率较快。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。 Find 适用于通过指定查询条件,获取符合条件的所有数据模型的所有信息的场景。 模型越复杂,参考对象和扩展属性越多,查询效率越慢。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。 Query 适用于只查询数据模型所有的列表属性信息的场景。 只返回符合查询条件的对象及列表属性。 查询效率相较于find更快一些。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。 Count 适用于通过指定查询条件,获取符合条件的数据模型总数的场景。 只返回符合查询条件的对象的记录总数。 查询效率较快。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。 Select 适用于只查询数据模型指定属性数据的场景。 查询效率较快。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。但数据过滤时,还需通过selectedField字段指定属性查询数据。 表2 关系实体查询接口 接口 描述 queryRelatedObjects 用于查询源或目标实体的属性。 batchQueryRelatedObjects 用于批量查询源或目标实体的属性。 queryRelationship 用于查询关系实例的数据。 queryTarget 用于查询目标实体的数据。 deleteTarget 用于删除关系实例。
  • 排序规则说明 数据实体、关系实体的接口,涉及排序的,根据数据库类型不同,字段首字母排序遵循如下规则: 如果是PostgreSQL数据库,在升降序排序时,先根据字母大小写,然后再根据英文字母顺序进行升降序排序显示。如升序排序时,字段首字母排序显示为B、X、Z、a、b、c。 如果是MySQL数据库,在升降序排序时,先根据英文字母顺序,然后再根据字母大小写进行升降序排序显示。如升序排序时,字段首字母排序显示为a、B、b、c、X、Z。
  • 入参示例 根据源端RelationLeft的ID为454580805678901111的关系实例,查询符合条件的全部数据。 { "params":{ "objectId":"454580805678901111", "role":"source", "latestOnly":false } }
  • 入参 { "params":{ "objectId": "XXXX", "role":"source", "latestOnly":false } } objectId:对象ID。 role:角色,源数据模型或目标数据模型。 latestOnly:目标对象是否仅返回源对象关联的最新版本目标对象,默认为false。(仅对M-V模型有效,即返回所有版本)
  • 示例场景 假设有一个源端为RelationLeft,目标端为RelationRight的关系实体(RelationTest)。其中, RelationLeft有两个关系实例,唯一编码为454580805678901111和454580805678902222。 RelationRight有两个关系实例,唯一编码为454580805678903333和454580805678904444。 并创建了如下唯一编码的关系实例: 1313:源端为454580805678901111,目标端为454580805678903333。 2424:源端为454580805678902222,目标端为454580805678904444。 1414:源端为454580805678901111,目标端为454580805678904444。
  • 出参示例 { "result": "SUCCESS", "data": [ { "id": "454580805678901111", "creator": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "modifier": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "createTime": "2023-01-12T11:56:55.551+0000", "lastUpdateTime": "2023-01-12T11:56:55.551+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "RelationTest", "tenant": { "id": "-1", "creator": "xdmAdmin", "modifier": "xdmAdmin", "createTime": "2022-09-22T04:10:48.543+0000", "lastUpdateTime": "2022-09-22T04:10:48.543+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "Tenant", "tenant": null, "className": "Tenant", "name": "basicTenant", "description": "默认租户", "kiaguid": null, "securityLevel": "internal", "code": "basicTenant", "disableFlag": false, "dataSource": "DefaultDataSource" }, "className": "RelationTest", "source": { "id": "454580805678901111", "creator": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "modifier": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "createTime": "2023-01-12T11:55:22.797+0000", "lastUpdateTime": "2023-01-12T11:55:22.797+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "RelationLeft", "tenant": { "id": "-1", "creator": "xdmAdmin", "modifier": "xdmAdmin", "createTime": "2022-09-22T04:10:48.543+0000", "lastUpdateTime": "2022-09-22T04:10:48.543+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "Tenant", "tenant": null, "className": "Tenant", "name": "basicTenant", "description": "默认租户", "kiaguid": null, "securityLevel": "internal", "code": "basicTenant", "disableFlag": false, "dataSource": "DefaultDataSource" }, "className": "RelationLeft", "name": null, "description": null, "kiaguid": null, "securityLevel": "internal", "stuId": null, "right": { "id": "427473106174128128", "clazz": "RelationRight" }, "stuName": null }, "target": { "id": "454580805678903333", "creator": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "modifier": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "createTime": "2023-01-12T11:55:43.192+0000", "lastUpdateTime": "2023-01-12T11:55:43.192+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "RelationRight", "tenant": { "id": "-1", "creator": "xdmAdmin", "modifier": "xdmAdmin", "createTime": "2022-09-22T04:10:48.543+0000", "lastUpdateTime": "2022-09-22T04:10:48.543+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "Tenant", "tenant": null, "className": "Tenant", "name": "basicTenant", "description": "默认租户", "kiaguid": null, "securityLevel": "internal", "code": "basicTenant", "disableFlag": false, "dataSource": "DefaultDataSource" }, "className": "RelationRight", "name": null, "description": null, "kiaguid": null, "securityLevel": "internal", "stuId": null, "courseId": null, "relationLeftList": null }, "name": null, "description": null }, { "id": "455098158066700288", "creator": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "modifier": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "createTime": "2023-01-12T11:57:36.198+0000", "lastUpdateTime": "2023-01-12T11:57:36.198+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "RelationTest", "tenant": { "id": "-1", "creator": "xdmAdmin", "modifier": "xdmAdmin", "createTime": "2022-09-22T04:10:48.543+0000", "lastUpdateTime": "2022-09-22T04:10:48.543+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "Tenant", "tenant": null, "className": "Tenant", "name": "basicTenant", "description": "默认租户", "kiaguid": null, "securityLevel": "internal", "code": "basicTenant", "disableFlag": false, "dataSource": "DefaultDataSource" }, "className": "RelationTest", "source": { "id": "454580805678901111", "creator": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "modifier": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "createTime": "2023-01-12T11:55:22.797+0000", "lastUpdateTime": "2023-01-12T11:55:22.797+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "RelationLeft", "tenant": { "id": "-1", "creator": "xdmAdmin", "modifier": "xdmAdmin", "createTime": "2022-09-22T04:10:48.543+0000", "lastUpdateTime": "2022-09-22T04:10:48.543+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "Tenant", "tenant": null, "className": "Tenant", "name": "basicTenant", "description": "默认租户", "kiaguid": null, "securityLevel": "internal", "code": "basicTenant", "disableFlag": false, "dataSource": "DefaultDataSource" }, "className": "RelationLeft", "name": null, "description": null, "kiaguid": null, "securityLevel": "internal", "stuId": null, "right": { "id": "427473106174128128", "clazz": "RelationRight" }, "stuName": null }, "target": { "id": "454580805678904444", "creator": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "modifier": "xdm_pub_validation f9828b63ee074aa69a2b3fb30aXXXXXX", "createTime": "2023-01-12T11:55:47.918+0000", "lastUpdateTime": "2023-01-12T11:55:47.918+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "RelationRight", "tenant": { "id": "-1", "creator": "xdmAdmin", "modifier": "xdmAdmin", "createTime": "2022-09-22T04:10:48.543+0000", "lastUpdateTime": "2022-09-22T04:10:48.543+0000", "rdmVersion": 1, "rdmDeleteFlag": 0, "rdmExtensionType": "Tenant", "tenant": null, "className": "Tenant", "name": "basicTenant", "description": "默认租户", "kiaguid": null, "securityLevel": "internal", "code": "basicTenant", "disableFlag": false, "dataSource": "DefaultDataSource" }, "className": "RelationRight", "name": null, "description": null, "kiaguid": null, "securityLevel": "internal", "stuId": null, "courseId": null, "relationLeftList": null }, "name": null, "description": null } ], "errors": [], "pageInfo": { "curPage": 1, "pageSize": 20, "totalRows": 2, "totalPages": 1 } }
  • 操作步骤 进入HarddiskTracing_GetDetailList服务详情页切换至“服务测试”页签。 在用例列表上方单击“新增用例”,弹出“新增测试用例”窗口。 填写测试用例信息,如表1所示: 表1 测试用例信息 参数 说明 用例信息 用例名称 test。 标签 支持用户自定义标签,可不填。 入参信息 PurchaserSN_BarCode 示例:102327137927。 Item_SN 示例:02354KMV-001。 pageSize 10。 每页条目数,即每页显示的数据条目数。 pageNumber 1。 分页页码,即返回指定页码的数据条目数。 returnTotalCountFlag false。 是否返回数据条目总数。 基于JSON识别入参 用户输入JSON脚本后,系统自动解析JSON脚本中的测试用例,并自动填充测试用例各字段,JSON参数名称区分大小写。 图1 新增测试用例 填写完后单击“确定”。 在用例列表中,勾选想要执行的test测试用例,单击列表上方的“执行用例”。 用例执行完成之后,您可查看下方“执行结果”,查看该条用例的执行结果详情。
  • URI URI格式: POST http://{Endpoint}/rdm_{appID}_app/services/rdm/basic/api/upload/uploadFile 参数说明: 表1 URI参数说明 参数 是否必填 参数类型 描述 Endpoint 是 String 承载REST服务端点的服务器域名或IP地址。 appID 是 String 应用ID。 modelNumber 是 String 数据模型的编码。 modelName 是 String 数据模型的英文名称。 dataType 否 String 数据模型的类型。 entity:数据实体 relation:关系实体 attributeName 是 String 数据模型的属性英文名称。 applicationId 是 String 应用ID。 username 否 String 用户名。 storageType 是 Integer 文件的存储类型。 0:对象存储 1:BLOB instanceId 否 String 数据实例的唯一编码。 exaAttr 是 String 是否为扩展属性。 0:非扩展属性 1:扩展属性 encrypted 否 Boolean 是否加密。当“storageType”设置为“0”时,需要设置此参数。 true:加密 false:不加密
  • 功能介绍 通过“文件管理”接口“upload_uploadFile”可以将本地的文件上传至工业数字模型驱动引擎(Industrial Digital Model Engine,简称iDME)中。完成文件上传后,可在调用数据实例的创建/更新接口时,将文件与该数据实例进行关联,从而实现对象化管理文件。 “upload_uploadFile”接口最大支持上传100MB文件。如需上传大于100MB的文件,请使用分块上传的接口。 本文仅指导您如何通过API方式上传简单文件。关于如何创建/更新数据实例的接口请参见全量数据服务。
  • 请求示例 POST https://dme.cn-north-4.huaweicloud.com/rdm_fce01234567d41828cf3473b07fa7ae2_app/services/rdm/basic/api/upload/uploadFile?applicationId=fce01234567d41828cf3473b07fa7ae2&attributeName=LargeFiles&dataType=entity&encrypted=false&exaAttr=1&modelName=Industrial_File&modelNumber=DM00127283&storageType=0&username=XDM_User X-Auth-Token: ABCDEFG.... [MultipartFile Form files]
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全