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 条。不支持使用 sorters 参数对结果进行排序。Pagination 请求结构体>>

from

可选

From-to 结构体

表示资产路径的起始点条件。如果不提供,则表示资产树的根节点。From-to 结构体>>

to

可选

From-to 结构体

表示资产路径的终止点条件。如果不提供,则表示资产树的叶子节点。From-to 结构体>>

projection

可选

Projection 结构体

用于在接口请求中描述待返回的对象 projection。对于符合条件的搜索仅返回符合条件的字段,不设置则默认返回全部字段。Projection 参数如何对结果集做裁剪>>

注:EnOS Edge 不支持该参数。

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 参数为 END_NODE_ONLY 时,其中每一个 String Array 为路径的起始与终止节点的资产 ID,长度固定为 2。

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);
    }
}