工作队列操作

Power Automate 中的工作队列可用于存储与流程相关的数据,并提供一种方法来分离复杂流程和自动化,从而允许它们异步通信。

工作队列在提高自动化的效率、可扩展性和复原能力方面发挥着至关重要的作用,并有助于确定工作的优先级。 工作队列允许您首先完成优先级最高的项目,无论这些项目是由数字工作者、真人工作者还是通过集成处理。

备注

  • 对第一组工作队列相关操作的生产级支持需要 Power Automate 桌面版 2.37 或更高版本。
  • Power Automate 桌面版中的工作队列操作是一项高级功能,需要 Power Automate 订阅
  • 目前,只有处理工作队列项更新工作队列项操作可以通过数据丢失防护 (DLP) 策略进行分类、允许或限制,其他操作将很快推出。 请注意,基于云端流的工作队列使用不受 DLP 策略的限制。

处理工作队列项

处理工作队列项操作向队列业务流程协调程序指示计算机已准备好处理一个或多个工作队列项。 请求新项的用户上下文需要在工作队列和工作队列项表上具有足够的权限才能处理工作队列。

处理工作队列项操作的屏幕截图。

上述操作中引用的工作队列由队列业务流程协调程序用于确定该工作队列中处于已排队状态的下一个可用项。 当桌面流逐步通过此操作呈现的处理工作队列项循环中的操作时,您可以通过使用为该操作指定的变量以及属性 .Value 来调用值。 在这种情况下,可以使用变量 %WorkQueueItem.value% 调用工作队列项的值

重要提示

通过在“筛选行”字段中提供 FetchXML 表达式,您可以绕过默认的工作队列编排器对排队项目的 FIFO 逻辑。 这使您可以设置自定义的出队顺序,并忽略项目到期日期以及在未提供筛选表达式时自动应用的其他设置。

Processworkqueueitemaction

处理工作队列项操作需要以下参数。

输入参数

参数 可选 接受 默认值 说明
工作队列 文本 包含要处理的项目的工作队列的工作队列 ID
筛选行 文本 用于从工作队列中检索项的 FetchXML 查询表达式。
覆盖工作队列自动重试配置 布尔型 错误 启用后,会出现一个字段,允许您设置或覆盖 IT Exceptions 的最大重试次数。
最大重试次数 不可以 文本值、数值 如果未覆盖,它将使用在工作队列记录上定义的默认最大重试计数。 IT Exceptions 允许的最大重试次数。 此参数允许您将重试计数调整为更高或更低值,甚至通过将计数设置为 0 来禁用重试机制。

生成的变量

参数 类型​​ 说明
WorkQueueItem 正在处理的工作队列项中存储的信息

异常

例外 说明
找不到工作队列 在工作队列参数中输入的值无效
工作队列已暂停或已停止 工作队列处于暂停或停止状态,这不是处理项目时的有效状态。
无效 FetchXML 提供了无效的 FetchXML 表达式。
无法处理工作队列 错误请求 - 查询语法错误

什么是 FetchXML 查询?

Microsoft Dataverse FetchXML 是一种用于从 Dataverse 数据库中检索数据的语言。 旨在易于创建、使用和理解。 例如,您可能希望让业务流程协调程序以不同于先进先出 (FIFO) 的顺序在特定的到期时间范围内处理项目。

为了将 FetchXML 查询支持限制为处理工作队列项目,支持一组有限的 FetchXML 术语和表达式。 这些术语包括筛选器、条件和排序表达式,所有这些都受限于工作队列项表 (workqueueitem)。 仅返回处于 Queued 状态的项目。

示例 FetchXML 查询

以下是一个示例查询表达式,说明如何按 name 进行筛选,并按最先过期的记录 (FEFO) 对结果进行排序。

<filter type="and">
  <condition attribute="expirydate" operator="on-or-before" value="2024-10-18" />
  <condition attribute="name" operator="eq" value="MyNonUniqueNameString" />
</filter>
<order attribute="expirydate" descending="false" />

查询支持详细信息和引用数据

  • 可供使用的查询运算符的列表,包括诸如等于或早于、介于和上个月等运算符。
  • 工作队列项表中可用的 属性 列表。

更新工作队列项

更新工作队列项操作允许用户更改所选工作队列项的状态和处理结果。

更新工作队列项操作的屏幕截图。

Updateworkqueueitemaction

更新工作队列项操作需要以下参数。

参数 可选 接受 默认值 说明
工作队列项 文本 以前由队列业务流程协调程序返回的工作队列项变量
执行状态 已处理,一般异常 已处理 使用选项列表中的状态更新正在处理的工作队列项。
关于正在处理的注释 文本 追加到要处理的队列项的自定义处理注释或值。
清除处理注释 布尔型 错误 启用时,隐藏和清除此屏幕上的处理注释字段,并从数据库中删除先前为此项目捕获的任何处理注释。

异常

参数 Description
找不到工作队列项 正在处理的工作队列项已被删除或不再属于从中调用它的队列。
工作队列项已暂停 正在处理的工作队列项在队列业务流程协调程序中包含状态 on hold,无法再更新。
无法更新工作队列项 正在更新的工作队列项目遇到意外错误。 有关更多详细信息,请查看错误消息。

添加工作队列项

添加工作队列项目操作允许用户将工作队列项填充到已在流门户中设置的工作队列中。

添加工作队列项操作的屏幕截图。

Enqueueworkqueueitemaction

添加工作队列项操作需要以下参数。

输入参数

参数 可选 接受 默认值 Description
工作队列 文本值 要将项添加到的工作队列项
优先级 高、正常、低 正文 要将工作队列项设置为的优先级
Name 文本值、数值 新工作队列项的自定义名称或 ID
输入 否​ 文本值、数值 属于要处理的值列的数据
截止期限 Datetime 设置用于使队列项过期的日期时间值,否则采用默认值(如果为队列设置了值)
关于正在处理的注释 文本值、数值 要添加到新队列项的自定义处理相关注释
具有唯一 ID 或引用 文本值、数值 启用后,应提供此队列中唯一的值。 如果留空,系统将自动提供格式为 system-<GUID> 的唯一值

生成的变量

参数 类型​​ Description
WorkQueueItem 为正在添加的工作队列项存储的信息

异常

参数 说明
找不到工作队列 在工作队列参数中输入的值无效
无法将项添加到工作队列中 无法将工作队列项添加到工作队列中。 错误请求 - 查询语法错误

添加多个工作队列项

添加多个工作队列项操作允许用户基于作为工作队列项数据表提供的数据向工作队列添加一个或多个工作队列项。

“添加多个工作队列项目”操作的屏幕截图。

此操作需要包含一个或多个工作队列项的自定义数据表。 数据表必须包含 8 列并且符合以下架构:

列名称 说明 必需 允许值
客户 项的名称。 否​ 任何字母数字字符串
输入 输入项目的详细信息或数据。 可以 任何字母数字字符串
过期期限 指定项目到期之前的持续时间。 不可以 日期和时间值
关于正在处理的注释 处理与项目相关的注释。 否​ 任何字母数字字符串
优先级 项目的优先级。 可以 数值为 100(高)、200(中)、300(低)
唯一参考 项目的唯一标识符或参考值。 不可以 任何唯一的字母数字的字符串或引用
状态 摄入时项目的状态。 可以 零(排队)、一(保持)的数值。
延迟截止时间 指定一个日期和时间,直到应忽略工作队列项目进行处理。 否​ 日期和时间值

用于创建数据表的 Robin 代码片段

以下示例是一个 Robin 代码片段(用于传统流中),可将其直接复制并粘贴到 Power Automate 桌面版设计器窗口中。 此代码片段向您的流添加了一个创建新数据表操作,其中包含一组预期的字段。

Variables.CreateNewDatatable InputTable: { ^['Name', 'Input', 'Expires in', 'Processing notes', 'Priority', 'Unique reference', 'Status', 'Delay until'], [$'''''', $'''''', $'''''', $'''''', $'''''', $'''''', $'''''', $''''''] } DataTable=> DataTable

用于创建数据表的 PowerFx 代码片段

以下示例是您可以直接复制并粘贴到 Power Automate 桌面设计器窗口中的 PowerFx 代码片段。 此代码片段向您的流添加了一个创建新数据表操作,其中包含一组预期的字段。

Variables.CreateNewDatatable InputTable: { ^['Name', 'Input', 'Expires in', 'Processing notes', 'Priority', 'Unique reference', 'Status', 'Delay until'], [$fx'', $fx'', $fx'', $fx'', $fx'', $fx'', $fx'', $fx''] } DataTable=> DataTable

Batchenqueueworkqueueitemsaction

添加多个工作队列项操作需要以下参数。

输入参数

参数 可选 接受 默认值 Description
工作队列 否​ 文本值 要将项添加到的工作队列项
工作队列项数据 可以 数据表 包含要添加到工作队列的工作队列项的自定义数据表

生成的变量

参数 类型​​ 默认值 说明
FailedWorkQueueItems 不可以 已启用 如果有失败,此对象保存插入失败的项目的索引和错误代码。 返回的索引是添加多个工作队列项目操作所提供的工作队列数据表中项目的位置(索引)。
HasFailedItems 不可以 已启用 指示操作是否因工作队列项目数据问题而遇到摄取错误的指示器。
SuccessfulWorkQueueItems 已禁用 不可以 保存成功添加到工作队列的索引和工作队列项目的自定义对象。

异常

参数 Description
找不到工作队列 在工作队列参数中输入的值无效
工作队列已暂停或已停止 由于工作队列已暂停或已停止,无法将工作队列项添加到工作队列中。
未能批排队工作队列项列表 由于请求或通信错误,无法将工作队列项添加到工作队列中。

延迟重新排队项

将延迟项重新排队操作允许用户将桌面流中正在处理的队列项目重新添加回其原始队列。 此外,排队的项可以保留和释放,直到规定的时间。

重新排队工作队列项操作的屏幕截图。

Requeueworkqueueitemaction

将延迟项重新排队操作需要以下参数。

输入参数

参数 可选 接受 默认值 Description
工作队列项 工作队列项 要将项添加到的工作队列项
延迟截止时间 日期/时间值 正文 应用于延迟队列项的日期/时间值,直到
截止期限 日期/时间值 正在重新排队的项的自定义到期时间
关于正在处理的注释 文本值、数值 要添加到新队列项的自定义处理相关注释
清除处理注释 布尔型 错误 启用时,隐藏和清除此屏幕上的处理注释字段,并从数据库中删除先前为此项目捕获的任何处理注释

异常

参数 Description
找不到工作队列 在工作队列参数中输入的值无效
找不到工作队列项 队列项值无效
未能将工作队列项重新排队 无法将工作队列项添加到工作队列中。 错误请求 - 查询语法错误

更新工作队列项处理注释

更新工作队列项目处理注释操作允许用户更新或清除所选工作队列项目的处理注释,而不更改其状态或任何其他属性。

“更新工作队列项目处理注释”操作的屏幕截图。

updateprocessingnotesaction

更新工作队列项目处理注释操作这一操作需要以下参数。

参数 可选 接受 默认值 Description
工作队列项 否​ 文本 以前由队列业务流程协调程序返回的工作队列项变量
关于正在处理的注释 文本 要追加到已处理的队列项的自定义处理结果或值
清除处理注释 布尔型 错误 启用时,隐藏和清除此屏幕上的处理注释字段,并从数据库中删除先前为此项目捕获的任何处理注释

异常

参数 Description
找不到工作队列 与该项目关联的工作队列已被删除或不再可访问
找不到工作队列项 该工作队列项无效
无法追加处理结果 正在更新的工作队列项目遇到意外错误。 有关更多详细信息,请查看错误消息。

按筛选器获取工作队列项

按筛选器获取工作队列项目操作允许用户基于 FetchXML 筛选器表达式检索一个或多个工作队列项目。

“按筛选器获取工作队列项”操作的屏幕截图。

Getworkqueueitemsaction

按筛选器获取工作队列项目操作需要以下参数。

输入参数

参数 可选 接受 默认值 Description
工作队列 不可以 文本 要从中检索项目的工作队列
筛选行 不可以 文本 用于从工作队列中检索项目的 FetchXML 查询表达式
要返回的行 不可以 数字 5000 业务流程协调程序返回的工作队列项目的最大数量

生成的变量

参数 类型​​ 默认值 说明
WorkQueueItems 不可以 已启用 与筛选表达式匹配的工作队列项的列表。

异常

参数 说明
工作队列 要从中检索项目的工作队列。
筛选行 用于从工作队列中检索项的 FetchXML 查询表达式。
要返回的行 业务流程协调程序返回的工作队列项目的最大数量(默认值为 5000)。

什么是 FetchXML 查询?

Microsoft Dataverse FetchXML 是一种用于从 Dataverse 数据库中检索数据的语言。 旨在易于创建、使用和理解。 例如,您可能想让 Dataverse 给您一个处于 IT Exception 状态的所有工作队列项目的列表。

若要将 FetchXml 查询支持限制为检索工作队列项,我们仅支持一组有限的 FetchXml 术语和表达式。 这些术语和表达式包括属性、筛选器、条件和排序表达式,所有这些都限制于工作队列项表 (workqueueitem)。 您必须显式指定从工作队列项表返回哪些属性和所需的排序顺序。

示例 FetchXML 查询

以下示例是一个查询表达式,说明如何获取几个属性,筛选出标记为 IT Exceptions 的错误项目,并按最先过期的记录 (FEFO) 对结果进行排序。

<attribute name="statecode" />
<attribute name="uniqueidbyqueue" />
<attribute name="createdon" />
<attribute name="completedon" />
<attribute name="workqueueitemid" />
<attribute name="executioncontext" />
<attribute name="name" />
<attribute name="expirydate" />
<attribute name="processingresult" />
<attribute name="priority" />
<attribute name="statuscode" />
<attribute name="modifiedon" />
<attribute name="processingstarttime" />
<attribute name="retrycount" />
<attribute name="requeuecount" />
<attribute name="input" />
<attribute name="delayuntil" />
<filter type="and">
    <condition attribute="statecode" operator="eq" value="4" />
    <condition attribute="statuscode" operator="eq" value="5" />
    <condition attribute="expirydate" operator="on-or-before" value="2024-10-18" />
</filter>
<order attribute="expirydate" descending="false" />

查询支持详细信息和引用数据

  • 可供使用的查询运算符的列表,包括诸如等于或早于、介于和上个月等运算符。
  • 工作队列项表中可用的 属性 列表。

状态 (statecode)

状态 代码 说明
已排队 0 项已排队
加工业 1 项目正在处理中
已处理 2 项目已处理
暂候 3 项目暂挂
Error 4 项目遇到错误

状态描述 (statuscode)

状态描述 代码 Description
已排队 12 项已排队
加工业 1 项目正在处理中
已处理 2 项目已处理
暂挂(暂停) 3 项目暂挂(暂停)
一般异常 4 项目遇到一般异常
IT 异常 5 项目遇到 IT 异常
业务异常 6 项目遇到业务异常
死信 7 项目处于暂挂状态
ProcessingTimeout 8 项目处理超时