Search Asset Path¶
查询资产树上符合条件的路径,路径是从一个上级资产节点到一个下级资产节点的完整路径,可以包含中间经过的资产节点。
请求格式¶
POST https://{apigw-address}/asset-tree-service/v2.1/asset-paths?action=search
请求参数(URI)¶
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
orgId |
Query |
必需 |
String |
资产所属的组织 ID。如何获取 orgId 信息>> |
treeId |
Query |
必需 |
String |
资产树 ID。 |
请求参数(Body)¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
pagination |
可选 |
Pagination 请求结构体 |
用于在接口请求中描述分页要求。如未指定,默认每页 100 条。每页最大记录数为 1000 条,但为获得最佳性能,建议每页不超过 50 条。不支持使用 |
from |
可选 |
From-to 结构体 |
表示资产路径的起始点条件。如果不提供,则表示资产树的根节点。From-to 结构体>>。 |
to |
可选 |
From-to 结构体 |
表示资产路径的终止点条件。如果不提供,则表示资产树的叶子节点。From-to 结构体>> |
projection |
可选 |
Projection 结构体 |
用于在接口请求中描述待返回的对象 projection。对于符合条件的搜索仅返回符合条件的字段,不设置则默认返回全部字段。Projection 参数如何对结果集做裁剪>>
|
pathProjection |
可选 |
String |
可填COMPLETE、END_NODE_ONLY。COMPLETE 表示返回路径上的每个资产节点,默认为 COMPLETE;END_NODE_ONLY 表示只返回路径的起始点和终结点。 |
From-to 结构体 ¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
rootModelIds |
可选 |
Strin g数组 |
根模型 ID,如果希望查询多个根模型就提供多个根模型 ID。 |
modelIds |
可选 |
String 数组 |
资产所属模型 ID。如果想查询多个模型,就提供多个模型 ID 组成的 List。如何获取 modelId 信息>> |
assetIds |
可选 |
String 数组 |
资产 ID,如果希望查询多个资产就提供多个资产ID。如何获取 Asset ID 信息>> |
响应参数¶
名称 |
数据类型 |
描述 |
---|---|---|
assets |
Map (Key 为 String,Value 为 Asset 结构体) |
路径上的资产数据。Asset 结构体的结构见下表。 |
assetPaths |
String 数组 |
当 pathProjection 参数为 COMPLETE 时,其中每一个 String Array 为路径上起始到终止节点的每个资产 ID,长度大于等于2。 当 pathProjection 参数为 |
Asset 结构体¶
名称 |
数据类型 |
描述 |
---|---|---|
assetId |
String |
资产 ID。 |
name |
StringI18n |
该资产的各语言名称。 |
description |
String |
资产描述。 |
attributes |
Map |
资产所属的模型属性。 |
timezone |
String |
时区。 |
modelId |
String |
资产所属模型 ID。 |
modelIdPath |
String |
模型 ID 路径。 |
tags |
Tag 结构体 |
用户自定义标签。 |
inValid |
Boolean |
节点是否有效。 |
label |
String |
资产标签。 |
示例 1¶
请求示例¶
url: https://{apigw-address}/asset-tree-service/v2.1/asset-paths?treeId=yourTreeId&action=search&orgId=yourOrgId
method: POST
requestBody:
{
"pagination":{
"pageNo":1,
"pageSize":10
},
"projection":[
"assets.*.attributes",
"assetPaths"
]
}
返回示例¶
{
"code":0,
"msg":"OK",
"requestId":"381ffc90-ee96-45a9-bbf4-8f82efed9823",
"data":{
"assets":{
"rzjwQAHU":{
"attributes":{
"starsystem":"sss",
"de001":123
}
},
"iQFjlwoH":{
"attributes":{
}
},
"sDx0Uk2Z":{
"attributes":{
}
},
"4uR3ZsqP":{
"attributes":{
}
}
},
"assetPaths":[
[
"4uR3ZsqP",
"rzjwQAHU",
"sDx0Uk2Z"
],
[
"4uR3ZsqP",
"iQFjlwoH"
]
]
},
"pagination":{
"sortedBy":null,
"pageNo":1,
"pageSize":10,
"totalSize":2
}
}
示例 2¶
请求示例¶
url: https://{apigw-address}/asset-tree-service/v2.1/asset-paths?treeId=yourTreeId&action=search&orgId=yourOrgId
method: POST
requestBody:
{
"pagination":{
"pageNo":1,
"pageSize":10
},
"from":{
"modelIds":[
"extend_model"
]
},
"to":{
"assetIds":[
"MkblvAJ5"
]
}
}
返回示例¶
{
"code":0,
"msg":"OK",
"requestId":"94347fc1-4b3c-447b-b542-03fa68a1a88f",
"data":{
"assetPaths":[
[
"yourAssetPath1",
"yourAssetPath2"
]
],
"assets":{
"DWJdfX3D":{
"inValid":false,
"assetId":"yourAssetId",
"modelId":"yourModelId",
"modelIdPath":"yourModelIdPath",
"name":{
"defaultValue":"yourAssetName",
"i18nValue":{
"en_US":"yourAssetNameEN"
}
},
"timezone":"+09:00",
"description":"sample description",
"label":"1",
"attributes":{
"invType":1,
"capacity":5.0
},
"tags":{
}
},
"MkblvAJ5":{
"inValid":false,
"assetId":"yourAssetId",
"modelId":"yourModelId",
"modelIdPath":"yourModelIdPath",
"name":{
"defaultValue":"yourAssetName",
"i18nValue":{
"en_US":"yourAssetNameEN"
}
},
"timezone":"+08:00",
"description":"sample description",
"label":"1",
"attributes":{
"starsystem":"yyyy",
"de001":123
},
"tags":{
}
}
}
},
"pagination":{
"pageNo":1,
"pageSize":10,
"totalSize":1
}
}
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.Pagination;
import com.envisioniot.enos.api.common.constant.request.Projection;
import com.envisioniot.enos.api.common.constant.request.Sorter;
import com.envisioniot.enos.asset_tree_service.v2_1.SearchAssetPathRequest;
import com.envisioniot.enos.asset_tree_service.v2_1.SearchAssetPathResponse;
import com.envisioniot.enos.asset_tree_service.vo.AssetTreePathSearchEndVo;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
public class SearchAssetNodePathTest {
private static String ACCESSKEY = "yourAccessKey";
private static String SECRETKEY = "yourSecretKey";
private static String ORGID = "yourOrgId";
private static String SERVERURL = "yourServerUrl";
private static String TREEID = "yourTreeId";
@Test
public void testSearchAssetNodePath() {
SearchAssetPathRequest request = new SearchAssetPathRequest();
request.setOrgId(ORGID);
request.setTreeId(TREEID);
AssetTreePathSearchEndVo from = new AssetTreePathSearchEndVo();
from.setAssetIds(Arrays.asList("assetId1","assetId2","assetId3","assetId4","assetId5","assetId6"));
AssetTreePathSearchEndVo to = new AssetTreePathSearchEndVo();
to.setRootModelIds(Arrays.asList("modelId1","modelId2","modelId3"));
request.setFrom(from);
request.setTo(to);
Projection projection = new Projection();
projection.add("assetPaths");
projection.add("assets.*.attributes");
request.setProjection(projection);
Pagination page = new Pagination();
page.setPageNo(1);
page.setPageSize(100);
page.setSorters(new ArrayList<Sorter>());
request.setPagination(page);
SearchAssetPathResponse response = Poseidon.config(PConfig.init().appKey(ACCESSKEY).appSecret(SECRETKEY).debug())
.url(SERVERURL)
.getResponse(request, SearchAssetPathResponse.class);
}
}