Advanced Task Manager


Advanced Task Manager 节点获取并维护任务列表,监控下游节点是否按照其设计处理一个或多个任务对象。Advanced Task Manager 节点会记录每个对象的执行结果,随后将失败的对象重新发送到下游节点,以便按照配置重新执行。Advanced Task Manager 节点和 Task Manager 节点的区别在于:前者结合了多种节点的功能,而且是面向行业级解决方案集成流的节点。


如果下游节点中的任何一个节点未能像所设计的那样处理任何任务对象,则 Advanced Task Manager 节点便会将处理该对象的任务标记为 失败。仅当所有下游节点都成功处理所有任务对象时,才能将任务标记为 成功

节点类型

System。

输入和输出能力

该节点没有入口点,仅有 1 个出口点。输出采用 JSON 格式。


  • 每个任务对象都由唯一的任务 ID 进行标识,该 ID 存储在输出 metadata 中,可由表达式 ${metadata.taskId} 引用。

  • 执行时间(格式:YYYYMMDDHHmm)保存在输出 metadata 中,可由表达式 ${metadata.executionTime} 引用。

节点属性

../../_images/advanced_task_manager.png


名称

该节点的名称。


间隔

若配置此功能,可令该节点具有自触发能力,类似于 Timer 节点。你可以将触发频率设置为数分钟、数小时或数天,触发频率存储在 metadata 中。计时在你发布集成流之后开始。


示例:如果配置为从每小时的第 5 分钟开始,每 12 分钟执行一次,当前时间为 UTC+8:00 时区的 14:29,则执行开始时间为 14:41,后续执行时间分别为 14:53、15:05、15:17 等。


点击 查看最近十次运行时间,即可根据当前时间查看最近十次执行时间。


任务类型

Task Manager 节点拆分其输入后所形成任务对象的数量。其值如下所述。

  • 单任务:Advanced Task Manager 节点将输入作为一个整体进行处理,将整个输入传递到下游节点并跟踪其执行结果。

  • 多任务:Advanced Task Manager 节点将输入拆分为多个任务对象,将它们传递到下游节点并分别跟踪其执行结果。

    • Task List 类型

      如果前面选择了 多任务,则必须填写该字段。

      指定 Advanced Task Manager 节点拆分原始输入所形成任务对象列表的方法。

      • 手动输入:通过输入资产 ID 等值在 任务列表 中指定任务对象的列表。支持数组和 JSON 数组。例如:[123, 234, 345] 或 [{assetId:123, deviceKey:dk1}、{assetId:234, deviceKey:dk2}]。在输出中,任务名称会被自动添加为 JSON 的 key,例如: {{task: “123”, executionTime:YYYYMMDDHHmm}}

      • 按模型:通过在下拉菜单中选择 模型 来指定任务对象列表。如果设置了间隔,则任务对象将会自动记录时间,而且按照上面的示例,每小时执行一次。

      • 按产品:通过在下拉菜单中选择 产品 来指定任务对象列表。如果设置了间隔,则任务对象将会自动记录时间,而且按照上面的示例,每小时执行一次。


策略

Advanced Task Manager 节点处理无法在任何下游节点上执行的任务对象的方式。如果打开该开关,Advanced Task Manager 节点会向下游重新发送执行失败的任务对象,以便所有下游节点均可再次处理此类任务对象,直到成功处理所有对象或重试次数达到 重试次数 为止。


重试次数

策略 一同使用。如果打开 是否重试失败任务 开关,Advanced Task Manager 节点会向下游重新发送执行失败的任务对象,以便所有下游节点均可再次处理此类任务对象,直到成功处理所有对象或重试次数达到 重试次数 为止。


最大重试次数为 5 次。如果未指定,将不会进行任何重试。


描述

该节点的描述。

使用限制

  • 最大重试次数:5

  • 间隔 不支持以秒为单位设置频率。

示例

输入示例

以下是 JSON 数组作为输入的示例:

[
    {
        "assetId":"abc",
        "timestamp":24214324324,
        "measurepoints":{
            "temperature":22.4,
            "humidity":78
        }
    },
    {
        "externalId":"externalId",
        "timestamp":24214324324,
        "measurepoints":{
            "speed":32,
            "heat":40
        },
        "assetId":"assetId"
    }
]

输出示例

假设输入是 JSON 数组,则输出是通过拆分输入所形成的多个 JSON 对象:

{
    "assetId":"abc",
    "timestamp":24214324324,
    "measurepoints":{
        "temperature":22.4,
        "humidity":78
    }
}
{
    "externalId":"externalId",
    "timestamp":24214324324,
    "measurepoints":{
        "speed":32,
        "heat":40
    },
    "assetId":"assetId"
}

相关节点