BluePrism 内部工作队列的容量是多少?
What is the capacity of a BluePrism Internal Work Queue?
我在 BluePrism Robotics Process Automation 工作,并试图加载一个 excel sheet 超过 100k 条记录(在某些情况下可能会超过 300k)。
我正在尝试加载 BluePrism 的内部工作队列,但出现如下错误:
'Load Data Into Queue' ERROR: Internal : Exception of type 'System.OutOfMemoryException' was thrown.
有没有办法避免这个问题,我可以释放更多内存?
我打算从queue中一条条处理记录,然后断然放入new excel sheets中。将所有数据加载到一个集合中并对其进行循环可能会消耗内存,因此我正在尝试寻找一种更有效的方法。
我欢迎所有 help/tips。
谢谢!
这可能是因为 BP 服务器,因为进程和工作之间共享内存 queue.Better 选项是使用两个机器人和多个队列来避免内存错误。
如果您使用的是 Excel 文档或 CSV 文件,则可以使用 OLEDB 对象对其进行连接和查询,就好像它是一个数据库一样。您可以使用 SQL 语法来限制一次返回的行数,并对它们进行分页,直到到达文档末尾。
首先,您对 Blue Prism 中的工作队列的使用不正确。工作队列不应该用来存储这种类型和数量的数据。(请仔细阅读关于工作队列的 BP 文档)。
解决手头的问题,因为误用需要 2 处更改:
仅在您的项目数据中存储 引用,它指向包含数据的 Excel 文件。
如果你要多次查阅这么多数据,也许把文件转换成CSV,写一个VBO直接在CSV中查询数据。
第一个更改不仅仅是一个建议,而是随着您的项目的进展和 IT 架构和 InfoSec 发挥作用,这将是强制性的。
至于 CSV VBO,看看 C#,它会让您的生活比将所有这些数据加载到 BP 中容易得多(耗时,不可靠,...)。
基本解:
在任何时候将您拉入集合数据项的 Excel 行数分开。此阈值将取决于您的资源系统内存和体系结构,以及 Excel 工作表中数据的结构和大小。我已经能够快速地将 50k 10 列行从 Excel 移动到一个集合,然后非常快速地移动到 Blue Prism 队列中。
您可以通过指定 Excel 工作表范围来设置它以拉入集合数据项,然后在每次集合成功添加到队列时移动该范围。
每次成功添加到队列后 and/or 在以预定义的计数限制移动范围 and/or 之前,您可以 运行 清理或垃圾收集操作以释放内存。
您可以使用提供的 Excel VBO 和一个额外的清理对象来完成所有这些操作。
切记:
即使将其分解,遍历这么大的集合来修改数据也将 极其 昂贵且缓慢。更改数据的最有效方法是在 Excel 工作簿级别或当它已经在 Blue Prism 队列中时。
最佳选择: esqew 的替代解决方案是最优雅的,可能是您的最佳选择。
Jarrick 正中要害,因为工作队列项目应该向机器人提供有关他们将要处理的内容的信息和控制室反馈 space,但不是实际工作数据为 implemented/manipulated.
在这种情况下,您只想使用项目工作表行号 and/or 来自单个工作表列的一些唯一标识符作为队列项目数据,以便机器人可以提供有关状态的控制室反馈该项目。如果此信息在格式上足够可预测,则无需将 any 数据从 Excel 工作表移动到集合,然后再移动到工作队列,而只需构建基于该数据可预测性的队列。
相反,您也可以让机器人构建队列 "as it happens",一旦它从 Excel 工作表中获取单行数据来处理它,也可以添加一个队列项数据的行号。这将启用控制室反馈和跟踪。但是,在几乎所有情况下,这都是一种不好的做法,因为它不会阻止一行被多次处理,除非机器人首先检查队列,此时您已经否定了您希望在首先切断最初的队列建设。也不可能扩展多个机器人的流程以有效地处理 Excel 工作表数据。
这是 RPA 的常见问题,尤其是在处理大型 excel 文件时。据我所知,没有100%的解决办法,只有减轻症状的方法。我 运行 多次遇到这个问题,这些是我尝试处理它们的方法:
- 仅对阶段记录禁用或出错。
- 不要在操作阶段记录参数(尤其是那些使用 excel 文件的参数)
- 运行垃圾收集过程
- 看看是否可以避免将 excel 文件读入 BP 集合并使用 OLEDB 查询文件
- 看看是否可以增加机器上的 Ram 内存
- 如果他们使用的是 32 位版本的应用程序,那么为它提供多少内存并不重要,Blue Prism 的上限为 2 GB。
我在 BluePrism Robotics Process Automation 工作,并试图加载一个 excel sheet 超过 100k 条记录(在某些情况下可能会超过 300k)。 我正在尝试加载 BluePrism 的内部工作队列,但出现如下错误:
'Load Data Into Queue' ERROR: Internal : Exception of type 'System.OutOfMemoryException' was thrown.
有没有办法避免这个问题,我可以释放更多内存? 我打算从queue中一条条处理记录,然后断然放入new excel sheets中。将所有数据加载到一个集合中并对其进行循环可能会消耗内存,因此我正在尝试寻找一种更有效的方法。
我欢迎所有 help/tips。 谢谢!
这可能是因为 BP 服务器,因为进程和工作之间共享内存 queue.Better 选项是使用两个机器人和多个队列来避免内存错误。
如果您使用的是 Excel 文档或 CSV 文件,则可以使用 OLEDB 对象对其进行连接和查询,就好像它是一个数据库一样。您可以使用 SQL 语法来限制一次返回的行数,并对它们进行分页,直到到达文档末尾。
首先,您对 Blue Prism 中的工作队列的使用不正确。工作队列不应该用来存储这种类型和数量的数据。(请仔细阅读关于工作队列的 BP 文档)。
解决手头的问题,因为误用需要 2 处更改:
仅在您的项目数据中存储 引用,它指向包含数据的 Excel 文件。
如果你要多次查阅这么多数据,也许把文件转换成CSV,写一个VBO直接在CSV中查询数据。
第一个更改不仅仅是一个建议,而是随着您的项目的进展和 IT 架构和 InfoSec 发挥作用,这将是强制性的。
至于 CSV VBO,看看 C#,它会让您的生活比将所有这些数据加载到 BP 中容易得多(耗时,不可靠,...)。
基本解: 在任何时候将您拉入集合数据项的 Excel 行数分开。此阈值将取决于您的资源系统内存和体系结构,以及 Excel 工作表中数据的结构和大小。我已经能够快速地将 50k 10 列行从 Excel 移动到一个集合,然后非常快速地移动到 Blue Prism 队列中。
您可以通过指定 Excel 工作表范围来设置它以拉入集合数据项,然后在每次集合成功添加到队列时移动该范围。
每次成功添加到队列后 and/or 在以预定义的计数限制移动范围 and/or 之前,您可以 运行 清理或垃圾收集操作以释放内存。
您可以使用提供的 Excel VBO 和一个额外的清理对象来完成所有这些操作。
切记: 即使将其分解,遍历这么大的集合来修改数据也将 极其 昂贵且缓慢。更改数据的最有效方法是在 Excel 工作簿级别或当它已经在 Blue Prism 队列中时。
最佳选择: esqew 的替代解决方案是最优雅的,可能是您的最佳选择。
Jarrick 正中要害,因为工作队列项目应该向机器人提供有关他们将要处理的内容的信息和控制室反馈 space,但不是实际工作数据为 implemented/manipulated.
在这种情况下,您只想使用项目工作表行号 and/or 来自单个工作表列的一些唯一标识符作为队列项目数据,以便机器人可以提供有关状态的控制室反馈该项目。如果此信息在格式上足够可预测,则无需将 any 数据从 Excel 工作表移动到集合,然后再移动到工作队列,而只需构建基于该数据可预测性的队列。
相反,您也可以让机器人构建队列 "as it happens",一旦它从 Excel 工作表中获取单行数据来处理它,也可以添加一个队列项数据的行号。这将启用控制室反馈和跟踪。但是,在几乎所有情况下,这都是一种不好的做法,因为它不会阻止一行被多次处理,除非机器人首先检查队列,此时您已经否定了您希望在首先切断最初的队列建设。也不可能扩展多个机器人的流程以有效地处理 Excel 工作表数据。
这是 RPA 的常见问题,尤其是在处理大型 excel 文件时。据我所知,没有100%的解决办法,只有减轻症状的方法。我 运行 多次遇到这个问题,这些是我尝试处理它们的方法:
- 仅对阶段记录禁用或出错。
- 不要在操作阶段记录参数(尤其是那些使用 excel 文件的参数)
- 运行垃圾收集过程
- 看看是否可以避免将 excel 文件读入 BP 集合并使用 OLEDB 查询文件
- 看看是否可以增加机器上的 Ram 内存
- 如果他们使用的是 32 位版本的应用程序,那么为它提供多少内存并不重要,Blue Prism 的上限为 2 GB。