云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名解析_华为张晓云有多厉害_企业级

小七 141 0

您经常会遇到这样一个需求:动态地对外部云OData服务实体执行查找,获取详细信息并修改CPI中的现有有效负载。我们在一个C4C数据迁移实现中也有类似的要求。

我们被要求查找OData公开的客户表,向其提供来自遗留CRM的主营业务负载的外部ID,并获取相应的C4C内部ID,并在原始负载中进行更新,最后将其提供给C4C。

最初,我们计划使用内容丰富器来实现这一点,但是,我们希望通过将这些值存储在数据存储中来持久化这些值,交通大数据,以便在同一天的后续调用中提高iflow性能,而且在同一iflow中还要求使用多个主键为另一个C4C实体执行查找,这在content enricher中是不可能的。因此,我们决定在CPI中尝试使用Hashmap对象以及XMLSlurper和XMLParser来解析和修改xml,因为它们是轻量级的xml解析器,因此我们强烈建议使用它们XML格式。在实际场景中,这个xml是从C4C OData调用获取的。我们将用大约30万条记录来测试它,工业物联网,看看它的性能有多好。

下面是iFlow屏幕截图-

将查找XML解析到HashMap对象的简单groovy脚本-

在接下来的两个步骤中,我们只是记录HashMap输出。

大约30万个键值对的测试负载将被触发到iFlow.

在30秒内我们可以得到输出。

CPI中的消息处理-

具有30万条记录的HashMap输出将以下面的格式存储在属性中-

我们经常犯错误,使用我们常用的和最喜欢的'For'语句循环XMLSlurper对象。这会严重影响iFlow的性能,如下所示。当查找大小在15000条记录以内时,这可能不是问题。对于较高的数字,大数据数据处理,处理时间呈指数增长,并影响iFlow性能。

下面是一个示例-

代码片段-

正如我们在下面看到的,此接口的性能受到影响,处理这些记录花费了近2个小时-

场景的第二部分将使用以前存储的HashMap in属性进行查找以获取每个记录中相应ExternalID的InternalID。

下面是更新的iFlow-

我们将使用XMLParser类而不是XMLSlurper,淘客小程序,因为我们希望同时读取和修改XML。这在XMLSlurper中是不可能的,因为它有一种惰性的解析xml文件的方法,也就是说,如果在循环中更新任何字段,则必须再次解析整个文档,因此这不是高效的性能。使用XMLParser,您可以用一行代码同时读取和修改XML。

代码片段-

一旦准备好,包含30万个密钥对值的XML再次被触发到iFlow-

处理在接近59秒的时间内非常有效。应该注意的是,在这个时间范围内,大约有30万条记录的xml被读取并解析成一个HashMap变量,返利,然后根据一个包含30K个业务数据记录的xml来查找HashMap,以更新每个记录的字段(InternalID)。这涉及到对每一条记录的读取和更新操作。

记录的有效负载-

下面是修改的业务有效负载中的2条记录的样本(总共约30K条记录)。

与内容丰富器相比的优势-

在下一篇博客中,我将介绍Json解析器方法,该方法可用于以下情况:来自查找服务的响应是JSON格式的,您希望避免将大型有效负载从XML转换为JSON格式。