向队列中添加项目
- 在“队列”页面中,创建一个队列。
- 在 Studio 中,创建一个自动化项目,例如,它从 Excel 电子表格收集某些图表并将其存储在变量中。
- 从“活动”面板中,将“添加队列项目”活动拖动到“设计器”面板。
- 在“属性”面板的“队列名称”字段中,键入在步骤 1 中创建的队列的名称,并用引号括起。
备注:
队列名称不区分大小写。例如,“Test_QuEuE”和“test_queue”相同。
- 从“优先级”列表中,选择“低”、“正常”或“高”,具体取决于此活动添加的项目的重要性以及希望处理这些项目的速度。
- (可选)在“参考”字段中,输入用作一个或一组队列项目的标识符的字符串或字符串变量。(该引用可用于将您的事务链接到自动化项目中使用的其他应用程序。此外,此功能使您可以根据提供的自定义引用在 Orchestrator 中搜索特定事务。)
重要
引用与 Orchestrator 或机器人的版本 2016.2 或更低版本不兼容。
- (可选)在“截止日期”字段中,添加必须处理项目的截止日期。
- (可选)在“延期”字段中,添加应开始处理队列项目的日期。
- 单击“项目信息”字段旁边的“浏览”
按钮。将显示“项目信息”窗口,您可以在此处将数据添加到每个创建的队列项目中。

备注:
在“项目信息”窗口中添加的字符串参数的值不能包含以下字符:
[
和" "
。
- 单击“创建参数”。系统将创建一个新的空白参数。
- 将参数的名称更改为更能说明您的需求的名称。
- 根据需求更改参数的类型。例如,如果要存储事务中的数值,请选择“Int32”。
- 在“值”字段中,输入要添加到队列项目中的值或用于存储特定值的变量。
- 单击“确定”。系统便会保存您的设置。
重要
将这些类型的自动化项目放置在一个循环中。否则,系统只会在 Orchestrator 中创建并填充一个项目。
在 Studio 的“项目信息”窗口中添加的数据会显示在 Orchestrator 的“项目详细信息”窗口中的“特定数据”下。添加到队列的所有项目的状态都设置为“新”。

从队列获取项目并更改其状态
- 在 Orchestrator 中,假设您有一个填充了项目的队列。
- 在 Studio 中,从“活动”面板中将“获取事务项目”活动拖动到“设计器”面板。
- 在“属性”面板的“队列名称”字段中,键入从 Orchestrator 填充的队列的名称,并用引号括起。
备注:
队列名称不区分大小写。例如,“New_QueUe”和“new_queue”相同。
- 创建一个队列项目变量。此变量根据优先级和截止日期存储队列中的第一个项目。置于循环中时,机器人会循环访问所有队列项目。队列项目通过此活动后,不会对其进行处理,并且该项目的状态将更改为“正在进行”。
- 在“事务项目”字段中,输入先前创建的队列项目变量。
- 从“活动”面板中,将“决策”活动拖动到“获取事务项目”活动下。
- 创建自动化要求。例如,将事务项目添加到 Excel 电子表格中,并发送包含这些信息的电子邮件。
- 在“属性”面板的“条件”字段中,键入可以更改项目状态的条件(例如,队列项目为空)。
- 从“活动”面板中,拖动“设置事务状态”活动并将其连接到“决策”活动的“False”分支。通过此活动的所有事务项目均不满足在步骤 7 中添加的条件。
- 在“属性”面板中,从“状态”下拉列表中选择“成功”。此状态将应用于通过该活动的所有队列项目。
- 在“事务项目”字段中,输入步骤 5 中使用的队列项目变量。
- (可选)单击“分析”字段旁边的“浏览”
按钮,在“分析”字段中输入要显示在“项目详细信息”中的数据。
- (可选)单击“输出”字段旁边的“浏览”
按钮,在“输出”字段中输入要显示在“项目详细信息”中的数据。
备注:
仅当队列项目已成功处理时,才会显示此信息。
- 将另一个“设置事务状态”活动拖动到“设计器”面板中,并将其连接到“决策”活动的“True”分支。通过此活动的所有队列项目均满足在步骤 7 中添加的条件。
- 在“属性”面板的“状态”字段中,选择“失败”。此状态将应用于通过该活动的所有队列项目。
- 在“事务项目”字段中,输入步骤 5 中使用的队列项目变量。
- 从“错误类型”列表中,选择“业务”或“应用程序”,具体取决于您在“决策”活动中输入的条件。例如,空队列项目可能是应用程序异常,而小于标准值的事务值可能是业务异常。有关此选择的更多信息,请参见业务异常与应用程序异常一文。
- 在“原因”字段中,键入一个字符串,以解释触发异常的原因。执行项目后,此信息将显示在“项目详细信息”窗口中。
- 将两个“设置事务状态”活动连接到“获取事务项目”活动。这将创建一个循环,并使您能够循环访问所有队列项目。基本自动化项目应如以下屏幕截图所示。

“设置事务状态”活动中的属性(左侧)与其在 Orchestrator 的“项目详细信息”窗口中的对应字段的映射。

要从队列项目检索特定数据,可以使用 SpecificContent()
函数。在引号之间键入用于向队列添加信息的参数的名称,并用圆括号括起。

例如,上面的屏幕截图显示了“分配”活动的“值”字段。它可用于检索归属于队列项目的值(显示在 Orchestrator 的“项目详细信息”窗口中的“特定数据”下),并将其分配给字符串变量,以便稍后处理。
在上面的屏幕截图中:
transItem
- 是用于存储事务项目的队列项目变量。.SpecificContent
- 是从事务项目中检索信息的函数。("transactionID")
- 是在“项目信息”窗口中添加,以用数据填充队列项目的参数的名称。参数名称也显示在 Orchestrator“项目详细信息”窗口的“特定数据”中。.ToString
- 是用于将队列的 ID(最初是整数)转换为字符串的函数。
推迟事务项目
- 在 Orchestrator 中,假设您有一个填充了多个项目的队列。
- 在 Studio 中,假设您已有用于循环访问所有队列项目的“获取事务项目”活动。
- 从“活动”面板中,将“决策”活动拖动到工作流中。通过该活动,您可以制定业务决策,并根据该业务决策来推迟一些队列项目。例如,如果账单的价值大于 3000 美元,您可能要推迟付款。
- 从“活动”面板中,将“延期事务项目”活动拖动到“决策”的“True”分支。这意味着,所有满足“决策”活动中的条件的队列项目都会根据您的配置被推迟。
- 在“事务项目”字段中,输入“获取事务”活动中使用的“队列项目”变量。
- 在“延期”字段中,添加可开始处理此项目之前的日期。
- 在“截止日期”字段中,添加处理此项目的截止日期。
截止日期和延期属性为队列项目添加了新的优先级。例如,首先处理今天下午 7 点到期,并且具有中等优先级的队列项目,然后再处理没有到期日期但具有高优先级的另一个项目。
备注:
修改队列项目的截止日期或推迟队列项目会将其状态更改为“新”。
For details on the processing order of transactions, see here.
添加自定义进度
- 在 Orchestrator 中,假设您有一个队列,其中填充了大量(数百万个)状态为“正在进行”的项目。
- 在 Studio 中,假设您已有用于循环访问所有队列项目并使用队列项目变量的“获取事务项目”活动。
- 从“活动”面板中将“设置事务进度”活动拖动到“设计器”面板。
- 在活动的“事务项目”属性中,输入队列项目变量。
- 在“进度”属性中,添加一个自定义字符串来描述此处达到的进度,例如“BeforeFirstDecision”。这样一来,您便知道该项目已从 Orchestrator 数据库中检索到。如果您的自动化项目在执行过程中在此时崩溃,则有一个项目具有此状态,并显示在“进度”列中。
重要
仅当有一个项目具有“正在进行”状态时,才会显示定义进度状态。
The remainder of the automation project can be set as explained above.
For example, the following workflow example sets each item status to Successful or Failed automatically, depending on how you design the Transaction Body sequence:
- Do nothing, Break, or Continue- results as Successful
- Throw Exception - results as Failed (Application error)
- Throw BusinessRuleException - results as Failed (business error)
- Set Transaction Status - results as the status you set
- Postpone Transaction Item - results as New
- Should stop - if you stop the workflow from Orchestrator, the workflow exists the loop after the current transaction completes.
The workflow repeats for every queue item automatically, and sets the corresponding transaction status.
In case of Break or if the queue is empty, the workflow exists the loop.

You can download the archived workflow and use as reference from this link.
8 个月前更新