关于队列和事务
队列是一个容器,可用于存储不限数量的项目。队列项目可存储多种类型的数据,例如发票信息或客户详细信息。可以在其他系统(例如 SAP 或 Salesforce)中处理此信息。
默认情况下,存储在队列项目中以及从队列项目输出的数据是自由格式。对于需要特定模式的情况,例如与其他应用程序的集成,计算机生成的表单的处理,或者分析,您可以上传自定义 JSON 架构以确保所有队列项目数据的格式正确。
在 Orchestrator 中,默认情况下,新创建的队列为空。要用项目填充它们,您可以使用 Orchestrator 中的上传功能,也可以使用 Studio 活动。后者还使您能够更改项目状态并进行处理。队列项目一经处理,便成为事务。
队列使您可以创建大型自动化项目,其中复杂逻辑非常重要。例如,您可以创建一个流程,用以收集所有发票信息并为每段数据创建一个队列项目来存储它。随后,您可以创建另一个流程,该流程从 Orchestrator 收集信息并将其用于执行其他任务,例如在不同的应用程序中支付发票,根据到期日期或价值推迟付款,每次支付账单时向会计团队发送电子邮件等。
借助“队列”页面,您可以创建新的队列,查看之前创建的队列,以及访问显示事务状态进度随时间变化的图表,以及各种其他详细信息,例如平均执行时间和成功事务的总数。
队列网格中的可用数据会定期更新,这意味着并不总是实时显示,并且可能会略有延迟。此外,它不受保留策略的影响,因此存档数据库项目不会更改网格中的可用信息。
也可以将失败或放弃的项目分配给审核人,必要时可以随时对其进行更改或清除。在审核详细信息窗口的历史记录选项卡中跟踪所有这些更改。审核人负责评估分配给他的交易的当前状态,并更改审核状态。可以在审核请求页面中更改要修订的队列项目的状态。
No Transaction Data
错误消息)。
如果不能确保引用是唯一的,则建议在没有引用的情况下出队。
JSON
架构。使用该架构后,将根据提供的格式验证所有事务,如果结果数据不符合要求,则该项目将由于业务异常而失败。
- 架构不会追溯应用到现有事务,仅追溯到上传架构后执行的事务。
- 您的架构不得包含数组。
- 出于验证目的,
DateTime
被接受为string
类型。 - 要使用和验证分析数据架构,需要 19.10 或更高版本的机器人和活动。
- 如果上传的架构不包含有效的架构定义
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/10/2019 07:40:00
。提供日期自动更正功能,例如,如果您输入 12 10 2019 9:0
,它将自动转换为 12/10/2019 09:00:00
。
“截止日期”非常适用于对具有相似优先级的任务进行排序,而“延期”可确保不会在指定的时间之前启动任务。但是,这两个参数不可一起使用。
在 Studio 的“截止日期”和“延期”字段中添加的时间会显示在 Orchestrator 的“事务”页面中的“截止日期”和“延期”列下。
此工具可帮助您为队列中新添加的项目设置 SLA(项目截止日期)。这可以帮助您评估是否可以及时处理它们,以及需要分配哪些资源以确保不违反其 SLA。每当有可能无法实现 SLA 时,系统都会适当通知您,以便您做出相应调整。
SLA 仅适用于未设置截止时间的项目,这意味着没有预先定义截止时间的新添加的项目将根据设置为 SLA 的值自动填充。具体来说,每个项目的截止时间从队列项目添加到队列中的时间算起,由为队列 SLA 设置的值表示。例如,如果我将 SLA 设置为 2 小时,并且在下午 4、5 和 6 点将 3 个项目添加到队列中,那么我的项目的截止时间分别为下午 6、7、8 点。
具有截止时间(在 Studio 或用于上传的 .csv 文件中设置)的项目不会受到 SLA 设置的影响。
- 启用 SLA 预测后,添加到队列中的项目的优先级会自动设置为高,无论在 Studio 或用于上传的 .csv 文件中是如何设置的。
- 您无法删除与启用了 SLA 预测的队列关联的流程。
- 如果至少一个队列项目超过了其截止日期,则“必要机器人 (SLA)”列中将显示超出容量,并且不再计算预测。
- 系统将对截止日期在未来 24 小时内的队列项目进行预测(可以使用
Queue.SlaReadaheadTimeLimitHours
进行更改,并且不考虑项目的延迟日期。
就队列-流程关联而言,队列触发器和 SLA 预测是相互依赖的。因此,每当配置其中一者时,另一者都会预填充,以使配置之间保持对等。假设我为队列 Y 定义了一个队列触发器以使用流程 X,队列 Y 的 SLA 预测只能使用流程 X 进行,那么,为 Y 启用队列 SLA 时,X 会预填充,并且为只读状态。
您还可以为项目定义一个风险 SLA,其作用类似于 SLA 之前的缓冲区。明确地说,项目的风险截止时间是根据风险 SLA 计算得出的,从将队列项目添加到队列之时算起。假设我将风险 SLA 设置为 2 小时,并且在下午 4:30、5:15 和 6:45 将 3 个项目添加到队列中,那么我的项目的风险截止时间分别为下午 6:30、7:15、8:45。
如果已超过风险 SLA 且队列项目未得到处理,该项目就有可能无法满足其截止时间。系统会适当通知用户,以便用户做出相应调整。