百度云_数据库系统原理与设计_免费申请

时间:2021-09-28 14:14       来源: 微辰云

百度云_数据库系统原理与设计_免费申请

在博客中,我将尝试解释如何从技术上解决创建动态查询的常见问题,使用OData或SuccessFactors receiver Adapter获取数据时需要多次创建动态查询userId即"00000813"和"00001079"将根据输入的有效负载动态添加。

这里有两个userId值,但是如果传入的有效负载有数千个userId,我们需要动态获取它们,例如:

……

……

等等。

还有,我们必须考虑到我们不能构建一个巨大的查询(查询的大小取决于目标系统是否是Employee Central、S/4 Hana或任何第三方OData服务),因为

场景:

考虑到以上所有点,我们正在CPI中构建一个Iflow,它需要一个文件输入。这个文件有大约25K的大数据,是一个以"|"分隔的文件(在其他情况下,它可以是","分隔的,甚至是固定长度的)。文件的每一行都有多个字段,其中第10个字段是Employee Id,我们需要从SuccessFactors的EmpJob中提取相应的CostCenter(在实际场景中,它可以是Company、payscaleArea等多个其他字段,但这里我们只是为了方便而取CostCenter)。也,有可能在文件中一个员工id可能出现多次或同一个员工id可能重复,因此我们只能获取唯一的id和相应的成本中心值。

输入-文件:

员工id列:

以下:

说明:

有一个主集成流调用使用"循环进程调用"的另一个本地子进程或本地集成流,即根据条件多次调用子流。同样在图像中,中移物联网,子流的名称是:"CallempJobDynamics"。

在主流中,我们从内容修饰符开始添加有效负载(而不是调用sftp并上载文件,以便于使用)。23K数据作为常量复制到有效载荷体中。

另外,我们定义了两个稍后使用的属性:

下一步,我们有一个groovy脚本,它从负载中创建一个具有唯一雇员Id的数组列表:

在这里,我们首先基于'\n'拆分每一行,然后为每一行取tempdata[9],即雇员Id(在每一行中的位置是第10位),如果它们不为null或不存在,则将它们添加到arraylist:

之后,我们还有另一个脚本,云免费,它接受arraylist'empidarray',它作为一个属性存储在消息上下文中,并从中创建一个动态查询。还要记住,查询应该有一个固定的大小(前面讨论的原因),我们决定对于每个获取的查询,不应该有超过100个userId(这与文件中的雇员Id相同)(如果您觉得这样,根据您的目标系统,您可以有超过100个userId)。输出arraylist的每一行都带有–userId eq'00093147'或者userId eq'00000813'…最多100行,根据输入文件中存在的唯一雇员Id的数量有多行:

上面groovy脚本的输出arraylist:

最后,我们使用循环进程调用调用子进程:'CallempJobDynamic'

循环逻辑是arraylist(arraylist名称为–"empidquery")形成,应该至少有一行在其中调用循环:

在子流程:

中,我们首先读取arraylist的第一行'empidquery'作为名为–'OneLineOfArray'

的内容修饰符中的标题元素,然后在下一个请求-回复步骤中使用此标题'queryempnow'作为筛选条件,以从的EmpJob实体获取数据Employee Central.

我们通过内容修饰符删除任何标题,这样它们就不会出现在下一个调用中:

下一个是添加的脚本,大数据发展前景,只是为了显示响应,还有两个突出显示子流被多次调用:(在真实流中,您将用groovy替换此groovy,以收集用户ID和相应的成本中心并存储其中)

脚本:

EmpJob的响应:

突出显示子流程被多次调用:

最后,我们调用最后一个Groovy脚本从arraylist中删除顶行'empidquery',中国移动物联网,使下一行成为arraylist中的顶行,循环继续顺利进行。

结论:

这个博客是写给减轻开发人员的痛苦,因为在构建iFlow时,我们确实遇到了多种情况,其中在OData接收器适配器中,我们需要基于动态查询获取数据,网站建站平台,而动态部分的值来自源负载。在所有这些情况下,上面的blog都有助于快速构建lflows,通过循环调用根据有效负载数据创建的动态url获取数据。它通过提供架构和可重用的代码来加速这些开发,这些代码是关于如何实现结果的。