队列是一个容器,可用于存储不限数量的项目。队列项目可存储多种类型的数据,例如发票信息或客户详细信息。可以在其他系统(例如 SAP 或 Salesforce)中处理此信息。
默认情况下,存储在队列项目中以及从队列项目输出的数据是自由格式。对于需要特定模式的情况,例如与其他应用程序的集成,计算机生成的表单的处理,或者分析,您可以上传自定义 JSON 架构以确保所有队列项目数据的格式正确。
在 Orchestrator 中,默认情况下,新创建的队列为空。要用项目填充它们,您可以使用 Orchestrator 中的上传功能,也可以使用 Studio 活动。后者还使您能够更改项目状态并进行处理。队列项目一经处理,便成为事务。
队列概述
队列使您可以创建大型自动化项目,其中复杂逻辑非常重要。例如,您可以创建一个流程,用以收集所有发票信息并为每段数据创建一个队列项目来存储它。随后,您可以创建另一个流程,该流程从 Orchestrator 收集信息并将其用于执行其他任务,例如在不同的应用程序中支付发票,根据到期日期或价值推迟付款,每次支付账单时向会计团队发送电子邮件等。
借助“队列”页面,您可以创建新的队列,查看之前创建的队列,以及访问显示事务状态进度随时间变化的图表,以及各种其他详细信息,例如平均执行时间和成功事务的总数。
队列网格中的可用数据会定期更新,这意味着并不总是实时显示,并且可能会略有延迟。此外,它不受保留策略的影响,因此存档数据库项目不会更改网格中的可用信息。
项目状态由 RPA 开发者在创建自动化项目时控制,而修订状态则在 Orchestrator 中进行控制,并使您能够执行版本控制,但仅对因应用程序或业务异常而被放弃或失败的队列项目进行控制。
也可以将失败或放弃的项目分配给审核人,必要时可以随时对其进行更改或清除。在审核详细信息窗口的历史记录选项卡中跟踪所有这些更改。审核人负责评估分配给他的交易的当前状态,并更改审核状态。可以在审核请求页面中更改要修订的队列项目的状态。
To ensure that queue item processing is performed successfully, you need to have a unique reference set at the queue level when dequeuing by reference. Failing to keep the reference unique will lead to concurrency access issues, such as failures due to no transaction data being found (No Transaction Data error message).
如果不能确保引用是唯一的,则建议在没有引用的情况下出队。
架构定义
在创建或编辑队列时,您可以上传“特定数据”、“输出数据”和/或“分析数据”的 JSON 架构。使用该架构后,将根据提供的格式验证所有事务,如果结果数据不符合要求,则该项目将由于业务异常而失败。
- 架构不会追溯应用到现有事务,仅追溯到上传架构后执行的事务。
- Your schema(s) must not contain an array.
- 出于验证目的,
DateTime被接受为string类型。 - Use of and validation of an Analytics Data schema requires Robots and Activities of version 19.10 or greater.
- 如果上传的架构不包含有效的架构定义
URI,则将draft-07定义(如下例所示)用作回退。
为了更好地控制 Orchestrator 的性能,借助 Queue.MaxSpecificDataSizeInKiloBytes 应用程序设置,队列项的特定数据大小被限制为 1 MB。任何超出此限制的内容都无法添加到队列中,并且会返回“错误代码 403 - 有效负载太大”。如果您需要上传较大的项目,请将较大的数据存储在外部存储中,并且仅在项目中引用链接。
架构示例:
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.com/root.json",
"type": "object",
"title": "The Root Schema",
"additionalProperties": { "type": "string" },
"required": [
"stringTest",
"intTest",
"boolTest"
],
"properties": {
"stringTest": {
"$id": "#/properties/stringTest",
"type": "string",
"title": "The Stringtest Schema",
"default": "",
"examples": [
"stringTest"
],
"pattern": "^(.*)$"
},
"intTest": {
"$id": "#/properties/intTest",
"type": "integer",
"title": "The Inttest Schema",
"default": 0,
"examples": [
30
]
},
"boolTest": {
"$id": "#/properties/boolTest",
"type": "boolean",
"title": "The Booltest Schema",
"default": false,
"examples": [
false
]
}
}
}
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.com/root.json",
"type": "object",
"title": "The Root Schema",
"additionalProperties": { "type": "string" },
"required": [
"stringTest",
"intTest",
"boolTest"
],
"properties": {
"stringTest": {
"$id": "#/properties/stringTest",
"type": "string",
"title": "The Stringtest Schema",
"default": "",
"examples": [
"stringTest"
],
"pattern": "^(.*)$"
},
"intTest": {
"$id": "#/properties/intTest",
"type": "integer",
"title": "The Inttest Schema",
"default": 0,
"examples": [
30
]
},
"boolTest": {
"$id": "#/properties/boolTest",
"type": "boolean",
"title": "The Booltest Schema",
"default": false,
"examples": [
false
]
}
}
}
事务概述
“事务”页面显示给定队列中的事务。此页面还显示这些事务的状态、应处理日期、负责处理的机器人,以及引发的异常类型或分配的引用(如果如有)。
您可以根据通过“添加队列项目”活动和“添加事务项目”活动的“引用”属性添加的自定义引用搜索特定事务或一组事务。该引用可用于将您的事务链接到自动化项目中使用的其他应用程序。此外,此功能使您可以根据提供的自定义引用在 Orchestrator 中搜索特定事务。
还可以强制事务引用在队列级别是唯一的。创建队列时会启用此功能,并应用于所有事务(已删除或重试的事务除外)。这使识别特定项目变得轻而易举,并简化了审核过程。
如果在将项目添加到队列时遇到重复引用,则作业将失败,并显示为“发生故障”状态,并在“作业详细信息”窗口中显示“Execution error: UiPath.Core.Activities.OrchestratorHttpException: Error creating Transaction. Duplicate Reference.”错误消息。
队列项目中存储的信息显示在 Orchestrator 中“事务详细信息”窗口的“特定数据”下。此外,如果该项目失败并已重试,项目的历史记录将显示在同一窗口中。
“事务详细信息”窗口包含三个选项卡:
- 详细信息 - 使您可以查看添加到事务中的确切信息、其状态变化以及重试的次数。
- 需要与团队成员共享有关特定事务的信息时,可以通过注释选项卡,查看和添加与事务相关的注释。所有对队列和事务具有“查看” 、 “编辑”和“删除”权限的用户都可以分别添加、编辑或删除注释,但是请记住,您只能更改自己的注释。
- 历史记录 - 使您可以查看谁执行了什么操作,查看谁是审核人以及审核状态是什么。
处理顺序
在任何给定队列中,将按层次结构处理事务,依据的顺序如下:
- 具有截止日期的项目,如下所示:
- a按优先级顺序;并且
- b. 对于优先级相同的项目,根据所设置的截止日期。
- 没有截止日期的项目按优先级排序,并且
- 对于优先级相同的项目,根据根据先进先出规则。
设置截止日期或延期日期时,建议您在各个字段中填充相对日期。例如DateTime.Now.AddHours(2) 、 DateTime.Now.AddDays(10)和DateTime.Now.Add(New System.TimeSpan(5, 0, 0, 0)) 。此外,您可以使用美国日期表示法来添加确切时间,例如10/15/2019 07:40:00 。提供此日期的自动更正功能,例如,如果您写入15 10 2019 9:0 ,它将自动转换为15/10/2019 09:00:00 。
“截止日期”非常适用于对具有相似优先级的任务进行排序,而“延期”可确保不会在指定的时间之前启动任务。但是,这两个参数不可一起使用。
在 Studio 的“截止日期”和“延期”字段中添加的时间会显示在 Orchestrator 的“事务”页面中的“截止日期”和“延期”列下。
导出事务
You can export all the transactions and information related to a given queue to a .csv file, by selecting the Export button, in the Transactions page. All page filtering options apply to the generated file, too.
图 1. CSV 文件
请注意,为了确保最佳性能,导出的条目不按时间倒序排列。
队列 SLA 预测
此工具可帮助您为队列中新添加的项目设置 SLA(项目截止日期)。这可以帮助您评估是否可以及时处理它们,以及需要分配哪些资源以确保不违反其 SLA。每当有可能无法实现 SLA 时,系统都会适当通知您,以便您做出相应调整。
SLA 仅适用于未设置截止时间的项目,这意味着没有预先定义截止时间的新添加的项目将根据设置为 SLA 的值自动填充。具体来说,每个项目的截止时间从队列项目添加到队列中的时间算起,由为队列 SLA 设置的值表示。例如,如果我将 SLA 设置为 2 小时,并且在下午 4、5 和 6 点将 3 个项目添加到队列中,那么我的项目的截止时间分别为下午 6、7、8 点。
违反 SLA 警示从整点过 7 分开始,每 30 分钟触发一次。
规定此间隔的 CRON 表达式可通过SystemJobs.QueueSlaAlerting.Cron参数进行配置。但是,如果您有大量队列或队列项目,我们不建议设置比默认警示触发频率更频繁的警示。您可以通过UiPath.Orchestrator.dll.config文件配置此参数。
具有截止时间(在 Studio 或用于上传的 .csv 文件中设置)的项目不会受到 SLA 设置的影响。
- The Priority of the items added in a queue after enabling SLA predictions is automatically set to High, regardless of how it was set in Studio or in the .csv file used for upload.
- 您无法删除与启用了 SLA 预测的队列关联的流程。
- If at least one queue item exceeds its deadline, Over Capacity is displayed in the Necessary Robots (SLA) column and predictions are no longer calculated.
- 对未来 24 小时内有截止日期的队列项目进行预测(可以使用 Queue.SlaReadaheadTimeLimitHours 更改),不会考虑项目的延迟日期。
就队列-流程关联而言,队列触发器和 SLA 预测是相互依赖的。因此,每当配置其中一者时,另一者都会预填充,以使配置之间保持对等。假设我为队列 Y 定义了一个队列触发器以使用流程 X,队列 Y 的 SLA 预测只能使用流程 X 进行,那么,为 Y 启用队列 SLA 时,X 会预填充,并且为只读状态。
风险 SLA
您还可以为项目定义一个风险 SLA,其作用类似于 SLA 之前的缓冲区。明确地说,项目的风险截止时间是根据风险 SLA 计算得出的,从将队列项目添加到队列之时算起。假设我将风险 SLA 设置为 2 小时,并且在下午 4:30、5:15 和 6:45 将 3 个项目添加到队列中,那么我的项目的风险截止时间分别为下午 6:30、7:15、8:45。
如果已超过风险 SLA 且队列项目未得到处理,该项目就有可能无法满足其截止时间。系统会适当通知用户,以便用户做出相应调整。
队列 SLA 权限
要为队列配置 SLA 预测,您需要具有以下权限:
- View on Processes
- View on Queues
- 队列的“编辑”权限(在编辑队列时配置 SLA)
- 队列的“创建”权限(在创建队列时配置 SLA)