并行使用 Action 提取 XML 内容

Extract XML content using Action parallely

我必须使用 BP 从 XML 格式的配置文件中提取数据。我有大约 25 个要从中提取属性的标签。

我当前使用的过程是按顺序处理标签,这可能需要一分钟时间来提取 XML 文件的标签内容并将其存储在变量中。这些标签与提取电子邮件数据、文件路径以及 ServiceNow 工作笔记和关闭日志有关。

我想知道是否可以并行执行操作而不是按顺序执行以加快进程。

如能提供这方面的帮助,我们将不胜感激。

此致。

截至撰写本文时,Blue Prism(现为 v6.5)不支持进程或对象中的并行执行。

假设,您可以设计一个全新的 XML 解析 VBO,它利用 System.Threading 同时解析多行,但 this SO answer 明确说明了为什么这不会净您有任何显着的性能优势,实际上可能会对总处理时间产生负面影响:

[To accomplish this], you need to fully parse the XML, which means you're doing the same amount of work as before on the main thread. The only difference is that you're doing some additional work on the background threads.

如果您的 xml 具有嵌入式模式,只需在 C# 代码阶段执行此操作即可,in: filepath(text), out: dt(collection):

dt = new DataTable();
dt.ReadXml(filepath);

如果没有架构,则将其读入字符串并执行此操作,在:xmlstring(text), tableIndex(number)/tableName(text), out:dt (collection ):

Dataset ds = new DataSet();
ds.ReadXml(new StringReader(xmlstring));
// read specific DataTable by index
dt = ds.Tables[(int)tableIndex];
// or by name
dt = ds.Tables[tableName];

ds 包含具有多个表的数据集(最有可能),因此您需要选择一个要阅读的表。或者创建一个带有名称和集合字段的顶级 dt,并立即将所有这些数据表加载到其中。

参考文献为:System.dll、System.Data.dll、System.Xml.dll、System.Data.DataSetExtensions.dll 命名空间:系统、System.IO、System.Xml、System.Data、System.Text