用例开发自动化Condition对象集条件

注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

对象集条件

Automate应用程序提供了多种不同的对象集条件,允许用户在预定义的对象集中对象数据更改时自动触发效果。

对象数据更改可能来自支持的数据集操作类型外部应用程序

根据评估延迟,数据更改可能会在几分钟或一小时内被自动化程序捕获。了解更多信息,请参阅评估延迟部分

此外,某些对象集条件会暴露效果输入参数。这些是可以在效果中使用的变量,以访问触发自动化的对象。

目前有五种不同的条件类型可以对对象集进行操作:

对象集条件类型

对象集定义

大多数对象集条件类型需要您以指定一个对象集来监控开始。您可以在用户界面中动态定义一个对象集,选择一个已保存的对象集,或选择一个返回对象集的函数。一旦您定义了要监控的对象集,使用预览按钮验证它是否包含预期的对象。

在动态定义对象集时,先选择您所需的对象类型。然后,您可以选择性地添加筛选以缩小监控的对象集范围。例如,下图中的支持票据对象类型被进一步缩小为仅监控状态为Open的对象。当未选择筛选时,您正在监控该类型的所有对象。所选的对象类型和筛选会影响对象集能否实时或按计划进行监控。了解更多信息,请参阅评估延迟部分

对象集定义

函数生成的对象集

下面的示例使用一个函数返回优先级最高的10张票据。在"对象添加"条件中使用时,每当新票据进入此集合时,效果将运行。请注意,函数必须返回一个ObjectSet<T>才能在此使用。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 /** * 这个函数返回最近的10个最高优先级的支持票 */ @Function() public get10HighestPrioritySupportTickets(): ObjectSet<DemoTicket> { // 搜索DemoTicket对象,并按时间戳和优先级排序,取出前10个 const highPriority = Objects.search() .demoTicket() .orderBy(ticket => ticket.timestamp) // 按时间戳排序 .orderBy(ticket => ticket.priority) // 按优先级排序 .take(10); // 取出前10个 }

了解更多关于编写函数以用于Automate,并查看本节中的示例函数。

条件类型

本节提供有关单个对象集条件类型的详细信息。

对象添加到集合

对象添加到集合 条件在每次对象被添加到您预定义的对象集时触发。首先根据上述对象集定义部分指定您的对象集。

如果您指定了对象集筛选,用户的新对象或对象编辑可能会触发您的对象添加到集合条件。在下面显示的示例中,我们监控状态属性值为 Open 的客服支持票对象集。条件可能通过两种方式触发:要么是创建了状态为 Open 的新客服支持票对象,要么是现有的客服支持票更改其状态为 Open

如果您没有对对象集指定任何筛选,您实际上是在监控该类型的所有对象。这意味着自动化仅会在完全新对象被添加到Ontology时触发。

对象添加到集合

对象添加到集合 条件将触发条件的对象作为效果输入公开。这可以是单个 Added object,一个对象集的 Added objects,或 Added objects 的某个属性。了解更多关于如何使用效果输入。

此条件类型支持的评估延迟为:

  • 实时评估
  • 定时评估

对象从集合中移除

对象从集合中移除 条件在每次对象从您预定义的对象集中被移除时触发。首先根据上述对象集定义部分指定您的对象集。

如果您指定了对象集筛选,用户的对象编辑可能会触发您的对象从集合中移除条件。例如,如果我们监控状态属性值为 Open 的客服支持票对象集,那么当 Open 票的状态更改为任何其他状态时,条件将触发。

对象从集合中移除

对象从集合中移除 条件将触发条件的对象作为效果输入公开。这可以是单个 Removed object 或一个对象集的 Removed objects了解更多关于如何使用效果输入。

此条件类型支持的评估延迟为:

  • 实时评估
  • 定时评估

集合中的对象被修改

集合中的对象被修改 条件在每次对象在您预定义的对象集中被修改时触发。如果您希望监控对象集中任何属性值的更改,此条件类型是合适的。如果您希望在对象更改为特定值时触发自动化,对象添加到集合条件是更好的选择。

集合中的对象被修改

首先根据上述对象集定义部分指定您的对象集。在定义对象集后,您可以限制要监视的属性,如下图所示。如果没有选择属性,则监控对象集中的任何属性更改都会触发自动化。

此外,您可以指定包括添加的对象包括移除的对象。这些选项控制在监控对象集中同时被添加(或移除)的对象上的修改是否被视为修改并触发自动化。这意味着,当禁用这两个选项时,只有那些已经在对象集中并在修改后仍留在对象集中的对象会触发自动化。

在下面显示的示例中,我们正在监控属于位置 USA 的客服支持票对象的状态。我们启用了包括添加的对象,禁用了包括移除的对象。这意味着被删除的客服支持票对象不会触发自动化,因为它们离开了监控对象集。同样适用于在更改位置时状态属性更改的票,例如更改为 UK;因为它们离开了对象集而包括移除的对象被禁用,自动化将不会触发。然而,我们确实将添加到对象集中的对象视为已修改,因为启用了包括添加的对象。因此,位置从 UK 更改为 USA 的客服支持票对象将触发自动化。同样适用于新创建的位于 USA 的对象。

集合中的对象被修改

集合中的对象被修改 条件将触发条件的对象作为效果输入公开。这可以是单个 Modified object 或一个对象集的 Modified objects了解更多关于如何使用效果输入。

此条件类型支持的评估延迟为:

  • 实时评估

指标更改

指标更改 条件在每次对象集指标在预定义对象集中更改时触发。示例指标包括集合中的对象总数,或诸如数值对象属性值的平均值之类的聚合。首先根据上述对象集定义部分指定您的对象集。

接下来,您可以选择指标属性。您可以选择:

  • 对象集中的对象总数;或
  • 整个监控对象集中特定数值属性的平均值、最大值、最小值或总和

然后,选择 IncreasesDecreases 作为更改类型

对于下面显示的示例,自动化将在纽约的所有空气质量传感器中一氧化碳属性的平均值增加时触发。

集合中的对象被修改

此条件类型支持的评估延迟为:

  • 定时评估

阈值越界

使用阈值越界条件,您可以定义一组随时间返回 truefalse 的检查。当所有检查返回 true 时,阈值被认为已越界。每当阈值越界到任一方向时,都会触发效果并记录活动。

您可以组合由UI定义逻辑函数支持逻辑组成的条件项。

此条件类型支持的评估延迟为:

  • 定时评估

UI 定义

要通过UI定义阈值条件项,请点击添加条件并选择条件作为条件类型。接下来,您需要指定一个已保存的对象集。然后,根据已保存对象集的对象类型,您可以选择要比较的属性。之后,选择一个比较运算符,最后选择一个指标或要比较的静态值。

下面显示了一个在用户界面中定义的阈值越界条件示例。在此示例中,条件检查纽约的所有空气质量传感器的最大值何时小于 0.05

集合中的对象被修改

函数支持

除了通过UI定义条件项,您还可以使用函数条件类型。函数支持的条件旨在允许更复杂的条件定义,包括任何默认阈值规则选项不支持的内容。函数支持的条件通过定义和发布一个函数来工作,该函数返回一个 truefalse 的单一布尔值。当监控器被评估时将调用该函数,响应必须指示该执行的结果。如果状态已更改,则将记录一个事件。

了解更多关于编写函数以用于Automate,并查看本节中的示例函数。

下面的示例使用函数来计算是否超过50%的空气质量传感器不健康。如果是这种情况,它返回 true,否则返回 false

函数支持的阈值越界条件示例

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /** * 该函数计算传入的空气质量传感器中是否有超过50%被认为是不健康的。 * 当一台传感器的碳氧化物值超过 `0.05` 时,它被认为是不健康的。 */ @Function() public async areMoreThanFiftyPercentOfSensorsUnhealthy (airQualitySensors: ObjectSet<automateExampleAirQualitySensor>): Promise<boolean> { // 获取传感器总数量 const totalSensorCount = await airQualitySensors.count(); // 计算不健康传感器的数量 const unhealthySensorCount = await airQualitySensors.filter(sensor => sensor.carbonMonoxide.range().gt(0.05)).count(); // 如果传感器总数量为null,返回false if (totalSensorCount === null) { return false; } // 返回不健康传感器数量是否超过总数量的50% return ((unhealthySensorCount ?? 0) / totalSensorCount) > 0.5; }

对象存在于集合中

对象存在于集合中条件可以设置为定期触发整个对象集的自动化。该条件与计划结合配置。

对象存在于集合中的示例

使用此条件时,可以设置受影响的对象参数以将对象注入任何效果中。使用此条件时,将遵循批处理大小和并行化设置。此条件允许您在大量对象上运行效果,同时避免函数或操作超时,因为将处理批处理。