比较2个XML,仅发送两者之间的差异

2020-08-23 12:16发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好大师,

有一个新的要求,PI将每天对数据库进行一次调用(通过SP通过JDBC)并获取数据。 这些数据需要与上一次调用进行比较,并且仅将差异发送到Web服务。

是否可以仅使用PI执行此操作? 我正在使用7.31版单堆栈。

我当时正在考虑将数据保存在NFS上的文件中并进行比较,但这超出了PI的限制(也许我需要使用脚本之类的东西)。 有什么办法可以使用PI映射来操纵2个文件并生成一个新文件? 我还有什么其他选择?

感谢进阶!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好大师,

有一个新的要求,PI将每天对数据库进行一次调用(通过SP通过JDBC)并获取数据。 这些数据需要与上一次调用进行比较,并且仅将差异发送到Web服务。

是否可以仅使用PI执行此操作? 我正在使用7.31版单堆栈。

我当时正在考虑将数据保存在NFS上的文件中并进行比较,但这超出了PI的限制(也许我需要使用脚本之类的东西)。 有什么办法可以使用PI映射来操纵2个文件并生成一个新文件? 我还有什么其他选择?

感谢进阶!

付费偷看设置
发送
3条回答
xfwsx85
1楼-- · 2020-08-23 12:34

嗨,克劳迪奥,

在我开始寻找这个问题的解决方案之前,我必须问为什么要我解析存储过程输出的差异。 如果存储过程在前一天失败了怎么办? 如果更改了存储过程,使格式化的结果相差很大,该怎么办? 我会说中间件作为消息代理实际上不是比较任意时间跨度内消息有效负载的合适位置。 如果这是接收端真正必要的要求,那么我认为当接收到新消息时,解析应该是Web服务的一部分。

问候,

Ryan Crosby

浮生未央
2楼-- · 2020-08-23 12:25

Ryan,
您是正确的!

为什么不在目标端进行解析和区分?

感谢

Sugata

Violet凡
3楼-- · 2020-08-23 12:29

如果要这样做 普通PI(不使用BPM),您可以构建如下内容:

  • 构建一个接口(IF01),该接口通过JDBC从db读取数据并将结果写入名称为" temp"的文件中。 文本"。
  • 配置脚本以通过"运行OS命令"功能在IF01的文件接收器通道中运行
  • 该脚本应执行以下操作。 检查文件夹中是否只有" temp.txt"文件。 如果temp.txt是唯一文件,则将其重命名为" input.txt1"。 如果除" temp.txt"之外还有第二个文件,请将" temp.txt"重命名为" input.txt2"
  • 使用文件发送者通道创建第二个接口(IF02)。 设置发送者通道以触发" input.txt2",以便仅在两个文件都存在时才触发。 还配置通道以通过文件发送方通道"其他文件"部分选择" input.txt1"。
  • 在IF02中添加Java映射,并将主有效负载(= input.txt2)与邮件的附件进行比较 (= input.txt1)以及类似" java-diff-utils"( https://github .com/java-diff-utils/java-diff-utils )将diff操作的结果设置为主要有效载荷。
  • 配置文件接收器通道以写入差异结果(主要有效载荷) )到磁盘上。

一周热门 更多>