Search Asset Tree


搜索符合条件的资产树。

请求格式

POST https://{apigw-address}/asset-tree-service/v2.1/asset-trees?action=search

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的组织 ID。如何获取 orgId 信息>>

请求参数(body)

备注

可使用 expressionfilter 进行搜索,但不能同时使用。EnOS Cloud 仅支持 expression 进行搜索,EnOS Edge 则支持 expressionfilter.


名称

必需/可选

数据类型

描述

expression

可选

String

查询表达式,支持字段 tags,支持算数运算符 = 和 exists。缺省则返回所有的资产树,不能将其与 filter 一起使用。如何使用查询表达式 >>

filter

可选

Filter 结构体

资产树需要满足的条件。支持对 tags 的搜索。缺省则返回所有的资产树,不能将其与 expression 一起使用。详见 Filter 结构体 >>

注:EnOS Cloud 不支持该参数。

pagination

可选

Pagination 请求结构体

用于在接口请求中描述分页要求。如未指定,默认每页 100 条。每页最大记录数为 1000 条,但为获得最佳性能,建议每页不超过 50 条。不支持使用 sorters 参数对结果进行排序。详见 Pagination 请求结构体>>

projection

可选

Projection 结构体

详见 Projection 参数如何对结果集做裁剪>>

Filter 结构体

名称

必需/可选

数据类型

描述

tags

可选

Map (Key 和 Value 为 String)

用户自定义标签。详情请见 标签的作用与表示方法>>

响应参数

名称

数据类型

描述

data

AssetTree 结构体数组

基于 assetId 的资产树信息。有关 AssetTree 结构体的定义,参见下表。

AssetTree 结构体

名称

数据类型

描述

treeId

String

资产树 ID

name

StringI18n

支持国际化的资产树名称。见 国际化名称结构体>>

tags

Tag 结构体

用户自定义的一组资产树标签。

asset

Asset 结构体

资产树的根资产。参见 Asset 结构体>>

示例

请求示例

url: https://{apigw-address}/asset-tree-service/v2.1/asset-trees?action=search&orgId=yourOrgId
method: POST
requestBody:
{
"expression":"tags.k1 ='v1' ",
"pagination": {
  "pageNo": 1,
  "pageSize": 10
},
"projection": ["asset"]
}

返回示例

{
    "code":0,
    "msg":"OK",
    "requestId":"82248518-6da4-49d2-8d07-cf7a0ff55b60",
    "data":{
        "BtsYmF2r":[
            {
                "treeId":"yourTreeId",
                "tags":{

                },
                "asset":{
                    "modelId":"yourModelId",
                    "assetId":"BtsYmF2r",
                    "timezone":"+08:00",
                    "name":{
                        "i18nValue":{
                            "en_US":"zmTree604111zzz"
                        },
                        "defaultValue":"zmTree604"
                    },
                    "description":"",
                    "attributes":{

                    },
                    "inValid":false,
                    "label":"1",
                    "modelIdPath":"/NULLMODEL",
                    "tags":{

                    }
                }
            }
        ]
    }
}

Java SDK 调用示例

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.asset_tree_service.v2_1.*;
import com.envisioniot.enos.asset_tree_service.vo.AssetCreateVo;
import com.envisioniot.enos.asset_tree_service.vo.I18nVo;
import com.envisioniot.enos.asset_tree_service.vo.TreeCreateVo;
import com.envisioniot.enos.asset_tree_service.vo.TreeUpdateVo;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;

public class AssetTreeTest {
    private static String AccessKey = "yourAccessKey";
    private static String SecretKey = "yourSecretKey";
    private static String OrgId = "yourOrgId";
    private static String ServerUrl = "yourServerUrl";


    @Test
    public void testSearchTree() {
        SearchAssetTreeRequest request = new SearchAssetTreeRequest();
        request.setOrgId(OrgId);
        request.setExpression("tags.k1 ='v1'");
        Pagination pagination = new Pagination(3, 1, null);
        Projection projection = new Projection();
        projection.add("asset");
        request.setPagination(pagination);
        request.setProjection(projection);
        SearchAssetTreeResponse response = Poseidon.config(PConfig.init().appKey(AccessKey).appSecret(SecretKey).debug())
            .url(ServerUrl)
            .getResponse(request, SearchAssetTreeResponse.class);
    }
}