本文将为大家介绍如何使用知行之桥EDI系统数据库端口的Lookup功能,从数据库中获取数据,并添加进输入的XML中。
使用场景:期待以输入xml中的值为判断条件从数据库中获取数据,并添加进输入xml中。
例如:接收到包含采购订单数据的xml,其中包含BuyerItemNumber,不包含SKU。数据库中已有表维护了BuyerItemNumber和SKU的对应关系。如下所示:

如何将BuyerItemNumber值作为判断条件,获取到数据库表中对应的sku数据,并且添加到现有XML中呢?我们需要在知行之桥EDI系统的数据库端口中通过简单配置即可实现。以SQLSever端口为例,操作步骤如下。
创建SQLSever端口,建立连接
1.点击页面右上角的 添加 按钮,在弹框的搜索栏中搜索 SQL 即可看到 SQL Sever 端口,点击即可出现添加弹框。

2.如下图所示,选择操作为Lookup,点击右下角的 创建端口 按钮。

3.在SQL Sever端口的 设置 选项卡下点击 创建 按钮,填写配置信息,创建与数据库的连接。


数据库端口的Lookup配置
方法一:不配置示例文件,配置路径

1.配置所要查询的表 ,即已维护BuyerItemNumber和SKU对应关系的数据库表,如:[dbo].[LookUpTest]。这里的数据库表可以在下拉列表中进行选择。
2.配置列 ,即需要获取的信息,可在下拉列表中进行选择,如sku。
3.输出目标,这里选择XPath,输出路径。注意:父级节点需使用根路径,需要结合输入文件进行配置。输入文件示例如下:
<LookUpTest_Header>
<PODate>20240101</PODate>
<PONumber>123456</PONumber>
<LookUpTest_Detail>
<BuyerItemNumber>99999</BuyerItemNumber>
<OrderQuantity>100</OrderQuantity>
<DeliveryDate>20240201</DeliveryDate>
</LookUpTest_Detail>
</LookUpTest_Header>
根据上述示例,XPath需要配置为:
左侧填写:/LookUpTest_Header/LookUpTest_Detail
右侧填写:SKU
4.过滤器,获取条件,如表中buyeritemnumber列等于输入BuyerItemNumber时获取sku列

按照上述步骤设置之后,可以在 SQLSever 端口的 输入 选项卡下上传示例文件:
<LookUpTest_Header>
<PODate>20240101</PODate>
<PONumber>123456</PONumber>
<LookUpTest_Detail>
<BuyerItemNumber>99999</BuyerItemNumber>
<OrderQuantity>100</OrderQuantity>
<DeliveryDate>20240201</DeliveryDate>
</LookUpTest_Detail>
</LookUpTest_Header>
在 输出 选项卡中可以查看数据获取结果如下:

点击右上角格式化按钮,可对文件一键格式化。可以看到这里SKU处多了一层列名,但我们的XML中不希望看到这样的结果,因此需要进行配置,使结果更加简洁。
接下来需要在当前端口中的高级设置选项卡下,在页面末尾找到特殊设置,在其他设置中配置如下:singlecolumnlookupxpathincludesleaf=true,点击保存变更,即可实现在输出中去除列名。

重新上传上文中的输入文件,可以在输出选项卡中打开新的文件,内容如下:

如上所示,我们已通过buyeritemnumber字段信息获取到其对应的sku信息,并成功将其添加到原始XML文件中。
方法二:配置示例文件
1.配置示例文件

在 设置 选项卡->操作->配置示例文件,示例文件需要和输入文件保持一致,如下:
<LookUpTest_Header>
<PODate></PODate>
<PONumber></PONumber>
<LookUpTest_Detail>
<BuyerItemNumber></BuyerItemNumber>
<OrderQuantity></OrderQuantity>
<DeliveryDate></DeliveryDate>
</LookUpTest_Detail>
</LookUpTest_Header>
2.配置所要查询的表 ,即已维护BuyerItemNumber和SKU对应关系的数据库表,如:[dbo].[LookUpTest]。这里的数据库表可以在下拉列表中进行选择。
3.配置列 ,即需要获取的信息,可在下拉列表中进行选择,如sku。
4.输出目标,这里选择XPath,输出路径。

由于我们已经设置了示例文件,这里只需要在下拉列表中选择根路径即可。我们需要sku信息出现在LookUpTest_Detail下,因此需要鼠标点击LookUpTest_Detail,然后在右侧填写:SKU。
5.过滤器,获取条件,如表中buyeritemnumber列等于输入BuyerItemNumber时获取sku列

注意,仍然需要在当前端口中的高级设置 选项卡下,在页面末尾找到特殊设置 ,在其他设置中配置如下:singlecolumnlookupxpathincludesleaf=true,点击保存变更,即可实现在输出中去除列名。
在输入 选项卡下,可以上传测试文件,在输出选项卡下查看获取结果。
如果您希望了解有关EDI对接的相关信息,欢迎交流。