BluePrism内部工作队列的容量是多少?

问题描述 投票:0回答:4

我正在BluePrism机器人过程自动化中工作并尝试加载超过10万条记录的excel表(在某些情况下可能会超过300k)。我正在尝试加载BluePrism的内部工作队列,但是我收到如下引用的错误:

'将数据加载到队列中'错误:内部:抛出了类型'System.OutOfMemoryException'的异常。

有没有办法避免这个问题,在哪里我可以释放更多的内存?我计划从队列中逐个处理记录,并将它们分别放入新的Excel表格中。将所有数据加载到集合中并循环遍历它可能会消耗内存,因此我试图找到一种更有效的方法。

我欢迎任何和所有的帮助/提示。谢谢!

memory-management automation out-of-memory blueprism rpa
4个回答
0
投票

如果您使用的是Excel文档或CSV文件,则可以使用OLEDB对象进行连接和查询,就像它是数据库一样。您可以使用SQL语法限制一次返回的行数,并对它们进行分页,直到您到达文档末尾。


3
投票

基本解决方案:在任何时候分解您要收集到Collection数据项中的Excel行数。此阈值取决于您的资源系统内存和体系结构,以及Excel工作表中数据的结构和大小。我已经能够快速地将50k 10列行从Excel移动到Collection,然后快速移动到Blue Prism队列中。

您可以通过指定Excel工作表范围以进入Collection数据项来设置此项,然后在每次将Collection成功添加到队列时移动该范围。

在每次成功添加到队列之后和/或在移动范围和/或在预定义的计数限制之前,您可以运行清理或垃圾收集操作以释放内存。

您可以使用提供的Excel VBO和其他清理对象完成所有这些操作。

请记住:即使打破它,循环收集这个庞大的数据来修改数据将是非常昂贵和缓慢。更改数据的最有效方法是在Excel工作簿级别或已经在蓝色棱镜队列中。

最佳投注:esqew的替代解决方案是最优雅的,可能是您最好的选择。

Jarrick点击它的工作队列项目应该为机器人提供他们将要处理的内容和控制室反馈空间的信息,但不是要实施/操纵的实际工作数据。

在这种情况下,您可能只想使用项目工作表行号和/或单个工作表列中的某些唯一标识符作为队列项数据,以便机器人可以提供控制室对项目状态的反馈。如果此信息在格式上足够可预测,则不需要将任何数据从Excel工作表移动到集合,然后移动到工作队列,而只需基于该数据可预测性来构建队列。

相反,您也可以让机器人“按照实际情况”构建队列,因为一旦它从Excel工作表中获取单行数据来工作它,也可以添加一个包含数据行号的队列项。然后,这将启用控制室反馈和跟踪。但是,在几乎所有情况下,这都是一种不好的做法,因为除非机器人首先检查队列,否则它不会阻止多次工作,此时你已经否定了你想要达到的速度增益。首先切断初始队列建设。也不可能扩展多个机器人的过程以有效地处理Excel工作表数据。


0
投票

这可能是因为BP Server因为内存在进程和工作队列之间共享.Better选项是使用两个机器人和多个队列来避免内存错误。


0
投票

对于初学者,您正在错误地使用蓝色棱镜中的工作队列。工作队列不应用于存储此类型和数据量。 (请仔细阅读有关工作队列的BP文档)。

解决手头的问题,滥用需要2个更改:

  1. 仅在项目数据中存储引用,该引用指向包含数据的Excel文件。
  2. 如果您多次查询这么多数据,可能会将文件转换为CSV,编写一个直接在CSV中查询数据的VBO。

第一个变化不仅仅是建议,但随着项目的进展和IT架构和InfoSec的发挥,它将是强制性的。

至于CSV VBO,看一下C#,它会比将所有这些数据加载到BP中更加容易(耗时,不可靠......)。

© www.soinside.com 2019 - 2024. All rights reserved.