Search Asset Path


查询资产树上符合条件的路径,路径是从一个上级资产节点到一个下级资产节点的完整路径,可以包含中间经过的资产节点。

操作权限

需授权的资源

所需操作权限

资产树管理

Read

请求格式

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

可选

String数组

根模型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);
    }
}