更新时间:2024-10-23 GMT+08:00
分享

查询批量任务列表

功能介绍

应用服务器可调用此接口查询物联网平台中批量任务列表,每一个任务又包括具体的任务内容、任务状态、任务完成情况统计等。

调用方法

请参见如何调用API

URI

GET /v5/iot/{project_id}/batchtasks

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数说明:项目ID。获取方法请参见 获取项目ID

表2 Query参数

参数

是否必选

参数类型

描述

app_id

String

参数说明:资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,可以携带该参数查询指定资源空间下的任务列表,不携带该参数则会查询该用户下所有任务列表。

取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。

task_type

String

参数说明:批量任务类型。

取值范围

  • softwareUpgrade: 软件升级任务

  • firmwareUpgrade: 固件升级任务

  • createDevices: 批量创建设备任务

  • deleteDevices: 批量删除设备任务

  • freezeDevices: 批量冻结设备任务

  • unfreezeDevices: 批量解冻设备任务

  • createCommands: 批量创建同步命令任务

  • createAsyncCommands: 批量创建异步命令任务

  • createMessages: 批量创建消息任务

  • updateDeviceShadows:批量配置设备影子任务

  • updateDevices:批量更新设备任务

status

String

参数说明:批量任务的状态,可选参数。

取值范围

  • Initializing: 初始化中。

  • Waitting: 等待中。

  • Processing: 执行中。

  • Success: 成功。

  • Fail: 失败。

  • PartialSuccess: 部分成功。

  • Stopped: 停止。

  • Stopping: 停止中。

limit

Integer

参数说明:分页查询时每页显示的记录数。

取值范围:1-50的整数,默认值为10。

marker

String

参数说明:上一次分页查询结果中最后一条记录的ID,在上一次分页查询时由物联网平台返回获得。分页查询时物联网平台是按marker也就是记录ID降序查询的,越新的数据记录ID也会越大。若填写marker,则本次只查询记录ID小于marker的数据记录。若不填写,则从记录ID最大也就是最新的一条数据开始查询。如果需要依次查询所有数据,则每次查询时必须填写上一次查询响应中的marker值。

取值范围:长度为24的十六进制字符串,默认值为ffffffffffffffffffffffff。

offset

Integer

参数说明:表示从marker后偏移offset条记录开始查询。默认为0,取值范围为0-500的整数。当offset为0时,表示从marker后第一条记录开始输出。限制offset最大值是出于API性能考虑,您可以搭配marker使用该参数实现翻页,例如每页50条记录,1-11页内都可以直接使用offset跳转到指定页,但到11页后,由于offset限制为500,您需要使用第11页返回的marker作为下次查询的marker,以实现翻页到12-22页。

取值范围:0-500的整数,默认为0。

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

String

参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考查看实例详情

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

batchtasks

Array of Task objects

批量任务列表。

page

Page object

查询结果的分页信息。

表5 Task

参数

参数类型

描述

task_id

String

批量任务ID,创建批量任务时由物联网平台分配获得。

task_name

String

批量任务名称。

task_type

String

批量任务类型,取值范围:firmwareUpgrade,softwareUpgrade,createDevices,deleteDevices,freezeDevices,unfreezeDevices,createCommands,createAsyncCommands,createMessages,updateDeviceShadows。

  • softwareUpgrade: 软件升级任务

  • firmwareUpgrade: 固件升级任务

  • createDevices: 批量创建设备任务

  • deleteDevices: 批量删除设备任务

  • freezeDevices: 批量冻结设备任务

  • unfreezeDevices: 批量解冻设备任务

  • createCommands: 批量创建同步命令任务

  • createAsyncCommands: 批量创建异步命令任务

  • createMessages: 批量创建消息任务

  • updateDeviceShadows: 批量配置设备影子任务

  • updateDevices:批量更新设备任务

task_mode

String

参数说明:批量任务的模式,当前只支持网关模式,当task_type为firmwareUpgrade,softwareUpgrade支持该参数。软固件升级的场景下,若升级的设备为某个网关的子设备,则平台下发获取版本信息通知和平台下发升级通知将携带task_id(软固件升级批量任务的任务ID)和sub_device_count(批量任务中网关设备包含的升级子设备数量)字段。

取值范围:GATEWAY: 网关模式。

task_ext_info

Object

参数说明:批量任务额外扩展信息,当task_type为firmwareUpgrade,softwareUpgrade支持该参数。软固件升级的场景下,平台下发获取版本信息通知和平台下发升级通知将携带该字段。

取值范围:最长不超过512个字符。

targets

Array of strings

执行批量任务的目标,当task_type为firmwareUpgrade,softwareUpgrade,deleteDevices,freezeDevices,unfreezeDevices,createCommands,createAsyncCommands,createMessages,updateDeviceShadows,此处填写device_id列表。

targets_filter

Map<String,Object>

任务目标筛选参数。Json格式,里面是一个个键值对,(K,V)格式标识筛选targets需要的参数,目前支持的K有group_ids(V填写group_id数组,eg:["e495cf17-ff79-4294-8f64-4d367919d665"],任务则会筛选出来符合该群组条件的设备作为目标)

document

Object

执行任务数据文档,Json格式。(当task_type为softwareUpgrade|firmwareUpgrade,也就是软固件升级任务时,Json里面是(K,V)键值对,需要填写key为package_id,value为在平台上传的软固件附件id,id由portal软件库包管理上传并查询获得。当task_type为createCommands,也就是批量创建同步命令任务时,Json里面是命令相关参数,eg:{"service_id":"water","command_name":"ON_OFF","paras":{"value":"ON"}},参考设备同步命令)。当task_type为createAsyncCommands,也就是批量创建异步命令任务时,Json里面是命令相关参数,eg:{"service_id":"water","command_name":"ON_OFF","paras":{"value":"ON"},"expire_time":0,"send_strategy":"immediately"},参考设备异步命令)。当task_type为updateDeviceShadows,也就是批量配置设备影子任务时,Json里面是命令相关参数,eg:{"shadow": [{"service_id": "WaterMeter","desired": {"temperature": "60"}}]},参考配置设备影子预期数据)。

task_policy

TaskPolicy object

任务执行策略。

status

String

批量任务的状态,可选参数,取值范围:Success|Fail|Processing|PartialSuccess|Stopped|Waitting|Initializing|Stopping。

  • Initializing: 初始化中。

  • Waitting: 等待中。

  • Processing: 执行中。

  • Success: 成功。

  • Fail: 失败。

  • PartialSuccess: 部分成功。

  • Stopped: 停止。

  • Stopping 停止中。

status_desc

String

批量任务状态描述(包含主任务失败错误信息)

task_progress

TaskProgress object

子任务执行统计结果。

create_time

String

批量任务的创建时间。格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。

表6 TaskPolicy

参数

参数类型

描述

schedule_time

String

参数说明:批量任务指定执行时间。

取值范围:7天内,不传入此参数表示立即执行,格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。

retry_count

Integer

参数说明:批量任务子任务自动重试次数。

取值范围:如果传入retry_interval参数,则需传入该参数,最大支持重试5次。

retry_interval

Integer

参数说明:批量任务子任务失败后,自动重试时间间隔,单位:分钟。

取值范围:最大1440(24小时),不传入此参数表示不重试,如果传入retry_count参数则需要传入该参数。

表7 TaskProgress

参数

参数类型

描述

total

Integer

子任务总个数。

processing

Integer

正在执行的子任务个数。

success

Integer

执行成功的子任务个数。

fail

Integer

执行失败的的子任务个数。

waitting

Integer

等待执行的子任务个数。

fail_wait_retry

Integer

失败等待重试的子任务个数。

stopped

Integer

停止的子任务个数。

removed

Integer

移除的子任务个数。

表8 Page

参数

参数类型

描述

count

Long

满足查询条件的记录总数。

marker

String

本次分页查询结果中最后一条记录的ID,可在下一次分页查询时使用。

请求示例

列表查询出所有批量任务。

GET https://{endpoint}/v5/iot/{project_id}/batchtasks

响应示例

状态码: 200

OK

{
  "batchtasks" : [ {
    "task_id" : "5c8ba99030344005c02316ad",
    "task_name" : "testname",
    "task_type" : "softwareUpgrade",
    "targets" : [ "e495cf17-ff79-4294-8f64-4d367919d665" ],
    "targets_filter" : {
      "group_ids" : [ "e495cf17-ff79-4294-8f64-4d367919d665" ]
    },
    "document" : {
      "package_id" : "32822e5744a45ede319d2c50"
    },
    "task_policy" : {
      "schedule_time" : "20151212T121212Z",
      "retry_count" : 5,
      "retry_interval" : 60
    },
    "status" : "Success",
    "status_desc" : "string",
    "task_progress" : {
      "total" : 0,
      "processing" : 0,
      "success" : 0,
      "fail" : 0,
      "waitting" : 0,
      "fail_wait_retry" : 0,
      "stopped" : 0
    },
    "create_time" : "20151212T121212Z"
  } ],
  "page" : {
    "count" : 10,
    "marker" : "5c90fa7d3c4e4405e8525079"
  }
}

SDK代码示例

SDK代码示例如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.AbstractCredentials;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.core.region.Region;
import com.huaweicloud.sdk.iotda.v5.*;
import com.huaweicloud.sdk.iotda.v5.model.*;


public class ListBatchTasksSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
        String iotdaEndpoint = "<YOUR ENDPOINT>";
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate";
                .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios
                .withAk(ak)
                .withSk(sk);

        IoTDAClient client = IoTDAClient.newBuilder()
                .withCredential(auth)
                // 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)"
                .withRegion(new Region("cn-north-4", iotdaEndpoint))
                .build();
        ListBatchTasksRequest request = new ListBatchTasksRequest();
        try {
            ListBatchTasksResponse response = client.listBatchTasks(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcore.auth.credentials import DerivedCredentials
from huaweicloudsdkcore.region.region import Region as coreRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkiotda.v5 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    // ENDPOINT请在控制台的"总览"界面的"平台接入地址"中查看应用侧的https接入地址
    iotdaEndpoint = "<YOUR ENDPOINT>";
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId).with_derived_predicate(DerivedCredentials.get_default_derived_predicate())

    client = IoTDAClient.new_builder() \
        .with_credentials(credentials) \
        # 标准版/企业版:需要使用自行创建的Region对象,基础版:请选择IoTDAClient中的Region对象 如: .with_region(IoTDARegion.CN_NORTH_4)
        .with_region(coreRegion(id="cn-north-4", endpoint=endpoint)) \
        .build()

    try:
        request = ListBatchTasksRequest()
        response = client.list_batch_tasks(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    iotda "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region"
    core_auth "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    // endpoint:请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址
    endpoint := "<YOUR ENDPOINT>"
    projectId := "{project_id}"

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        // 企业版/标准版需要使用衍生算法,基础版请删除该配置"WithDerivedPredicate"
        WithDerivedPredicate(core_auth.GetDefaultDerivedPredicate()). // Used in derivative ak/sk authentication scenarios
        Build()

    client := iotda.NewIoTDAClient(
        iotda.IoTDAClientBuilder().
            // 标准版/企业版需要自行创建region,基础版使用IoTDARegion中的region对象
            WithRegion(region.NewRegion("cn-north-4", endpoint)).
            WithCredential(auth).
            Build())

    request := &model.ListBatchTasksRequest{}
	response, err := client.ListBatchTasks(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

500

Internal Server Error

错误码

请参见错误码

相关文档