- 文档
- 资产树节点
- Search Related Asset Node
Search Related Asset Node¶
查询指定资产树上的资产,指定相对于某个已知资产的关系作为查询条件。
请求格式¶
POST https://{apigw-address}/asset-tree-service/v2.1/asset-nodes?action=searchRelatedAsset
请求参数(URI)¶
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
orgId |
Query |
必需 |
String |
资产所属的组织 ID。如何获取 orgId 信息>> |
treeId |
Query |
必需 |
String |
需要获取的资产树 ID。如何获取资产树信息 ID>> |
请求参数(Body)¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
filter |
可选 |
Filter 结构体 |
资产的查询条件。 所有的条件都是可选的。 所有指定的条件之间都是“与”关系,即待查询的资产必须同时满足所有指定的条件。 4 个关系查询条件至多提供一个,其结构参见 Filter 结构体。 |
pagination |
可选 |
Pagination 请求结构体 |
用于在接口请求中描述分页要求。如未指定,默认每页 100 条。每页最大记录数为 1000 条,但为获得最佳性能,建议每页不超过 50 条。不支持使用 |
projection |
可选 |
Projection 结构体 |
指定对返回结果的裁剪。对于符合条件的搜索仅返回符合条件的字段,不设置则默认返回全部字段。Projection 参数如何对结果集做裁剪>> |
Filter 结构体 ¶
备注
isParentOfAssetId
、isChildOfAssetId
、isAncestorOfAssetId
和 isDescendantOfAssetId
不能同时填写多个,每次查询最多支持 1 个。
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
assetIds |
可选 |
String 数组 |
资产ID。如果想查询多个资产,就提供多个资产ID。如何获取 assetId 信息>> |
nameLike |
可选 |
I18nSearchVo 结构体 |
资产名称,支持模糊搜索。其结构参见 I18nSearchVo 结构体。 |
modelIds |
可选 |
String 数组 |
资产所属模型ID。如果想查询多个模型,就提供多个模型 ID。如何获取 modelId 信息>> |
rootModelIds |
可选 |
String 数组 |
资产所属的根模型 ID。如果想查询多个根模型,就提供多个根模型 ID。 |
isParentOfAssetId |
可选(见上述注解) |
String |
待查询的资产是指定资产的直接父节点,值为指定资产的资产 ID。如何使用查询表达式>> |
isChildOfAssetId |
可选(见上述注解) |
String |
待查询的资产是指定资产的直接子节点,值为指定资产的资产 ID。2.3 CU 2 更新后,返回值将按照节点绑定时间排序。如何使用查询表达式>> |
isAncestorOfAssetId |
可选(见上述注解) |
String |
待查询的资产是指定资产的祖先节点,值为指定资产的资产 ID。如何使用查询表达式>> |
isDescendantOfAssetId |
可选(见上述注解) |
String |
待查询的资产是指定资产的子孙节点,值为指定资产的资产 ID。如何使用查询表达式>> |
I18nSearchVo 结构体 ¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
locale |
可选 |
String |
语言类型,只支持 default、zh_CN、en_US、ja_JP 和 es_ES。 |
value |
可选 |
String |
资产名称在所属语言下的值。如果为 null,则无数据返回;如果传入空字符串,则返回对应语言下的所有数据。 |
响应参数¶
名称 |
数据类型 |
描述 |
---|---|---|
data |
AssetVo 结构体数组 |
AssetVo 的列表。其结构参见 AssetVo 结构体。 |
AssetVo 结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
assetId |
String |
资产 ID。 |
modelId |
String |
资产所属模型 ID。 |
modelIdPath |
String |
模型 ID 的路径。 |
name |
StringI18n |
支持国际化的资产名称。其结构参见 国际化名称结构体。 |
timezone |
String |
资产所属时区。 |
description |
String |
资产描述。 |
label |
String |
资产类型。
|
inValid |
Boolean |
|
attributes |
Map(Key 为 String,Value 为 Object) |
资产所属的模型属性。 |
tags |
Map(Key 为 String, Value 为 String) |
用户自定义标签。标签的作用与表示方法>> |
childAssetNodeCount |
Integer |
有效的子节点个数。使用该参数前确保当前环境已安装 2.3 CU 2。只有选择了 注:EnOS Edge 不支持该参数。 |
错误码¶
名称 |
错误信息 |
描述 |
---|---|---|
99400 |
Invalid arguments |
请求参数非法,请检查请求参数。 |
99500 |
System error |
服务器内部错误,请联系 EnOS。 |
示例¶
请求示例¶
url: https://{apigw-address}/asset-tree-service/v2.1/asset-nodes?action=searchRelatedAsset&treeId=k6wweMTP&orgId=yourOrgId
method: POST
requestBody:
{
"filter": {
"isChildOfAssetId": "4R6PbfVj"
},
"projection": ["attributes", "assetId", "name", "childAssetNodeCount"]
}
返回示例¶
{
"code":0,
"msg":"OK",
"requestId":"153ad7a2-2ec1-41b0-b750-e4ea2ce2786c",
"data":[
{
"assetId":"8byS3cuc",
"name":{
"i18nValue":{
},
"defaultValue":"ycmdevice_1"
},
"attributes":{
},
"childAssetNodeCount": 6
},
{
"assetId":"Fq5M1Y6E",
"name":{
"i18nValue":{
},
"defaultValue":"ycmdevice_3"
},
"attributes":{
},
"childAssetNodeCount": 2
},
{
"assetId":"nPQUW0Nr",
"name":{
"i18nValue":{
"en_US":"Rebecca_testSiteAPI3"
},
"defaultValue":"Rebecca_testSiteAPI3"
},
"attributes":{
},
"childAssetNodeCount": 3
},
{
"assetId":"oLrrH1uz",
"name":{
"i18nValue":{
},
"defaultValue":"Rebecca_Service1"
},
"attributes":{
},
"childAssetNodeCount": 6
},
{
"assetId":"vuT6x3Xl",
"name":{
"i18nValue":{
},
"defaultValue":"ycmdevice_2"
},
"attributes":{
},
"childAssetNodeCount": 1
}
],
"pagination":{
"pageNo": 1,
"pageSize": 10,
"totalSize": 10,
"sortedBy": null
}
}
Java SDK 调用示例¶
package com.envisioniot.enos.asset_tree_service;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.request.Projection;
import com.envisioniot.enos.asset_tree_service.v2_1.*;
import com.envisioniot.enos.asset_tree_service.vo.AssetSearchVo;
import com.envisioniot.enos.asset_tree_service.vo.RelatedAssetSearchVo;
import org.junit.Test;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class SearchNodeTest {
private static String AccessKey = "yourAccessKey";
private static String SecretKey = "yourSecretKey";
private static String OrgId = "yourOrgId";
private static String ServerUrl = "yourServerUrl";
@Test
public void testSearchRelatedAssetNode() {
SearchRelatedAssetNodeRequest request = new SearchRelatedAssetNodeRequest();
request.setOrgId(OrgId);
request.setTreeId("yourTreeId");
RelatedAssetSearchVo filter = new RelatedAssetSearchVo();
filter.setIsChildOfAssetId("yourAssetId");
Projection onep = new Projection();
onep.addAll(Arrays.asList("attributes", "assetId", "name"));
request.setFilter(filter);
request.setProjection(onep);
request.setFilter(filter);
SearchRelatedAssetNodeResponse response =
Poseidon.config(PConfig.init().appKey(AccessKey).appSecret(SecretKey).debug()).url(ServerUrl)
.getResponse(request, SearchRelatedAssetNodeResponse.class);
}
}