消息批处理端口说明

知行之桥2022版本新增了BatchCreate、BatchMerge和BatchSplit三个端口,用于文件批处理。BatchCreate端口用于创建批处理组,根据业务编号打包文件;BatchMerge端口合并相同头部信息的多条XML数据;BatchSplit端口则将批处理组拆分成单个消息。这些端口支持自动化定时发送,并可配置批处理大小、CorrelationId头等参数,适应不同业务需求。
摘要由CSDN通过智能技术生成

为满足用户需要对多文件做批处理的需求,在2022版本的知行之桥中,开发人员开发设计了3个新的端口,分别是Batch Create 端口、Batch Merge 端口和Batch Split 端口。

功能是对传入端口的消息做批处理,使得消息可以在批处理组中分组在一起,这允许多条消息作为一个单元一起传输。当消息是批处理组的一部分时,它被称为批处理消息。比如,供应商的EDI系统收到采购商发来的多条订单,端口会将收到的多条订单做批处理转换为批处理组。这三个端口的使用功能有些许的不同,我们一起来看看吧!

一、Batch Create 端口

Batch Create 端口可用于传输带附件的文件,端口可识别业务编号,并将同一笔业务的附件及文件进行打包,转为批处理组。除了该场景,还可以根据用户的具体需求灵活使用。

输入列表中的多条消息可生成为批处理组,输出列表中的内容便是批处理组。如下图所示,输入文件数为四条,转换为输出的一条批处理组。

 点击输出的一条批处理组文件,可以查看到批处理组内容和批处理消息。其中批处理组消息中仍是四条报文,点击下载文件,会以ZIP文件的格式将这四条数据进行下载。

 所以,Batch Create 端口只能接受单个消息作为输入。如果端口接收到现有批处理组作为输入,它会引发错误消息。

该端口也可根据设置做批处理操作,比如在Advanced Settings栏目中的设置:

(1)Correlation Id 头

在“Correlation Id 头”处填写设置参数,端口会找到输入文件与参数值相同的Message Header,将Message Header值相同的消息分为一组。比如,需要不同业务类型的消息进行分组,可以在该端口前,设置Message Header名称为messagetype,值为业务类别代码。在Correlation Id 头中配置messagetype,那么传入该端口的消息,会根据messagetype进行批处理,同种业务的消息分为一组。

首先,需要在Batch Create端口前面连接Script端口,在该端口中编写脚本,将消息的业务类型放入Message Header: messagetype。因消息文件的命名都有固定的规则,业务类型可从文件名的前缀获取。

发货通知文件的Message Header名称为messagetype,值为ASN。

 

该示例是将发货通知消息处理为一个批消息组:

 

该示例是将发票消息处理为一个批消息组:

 

 

(2)最大批处理大小 & 最小批处理大小

最大批处理大小。指定要包含在批处理组中的最大消息数。任何超过此数量的消息都将等到下一个发送间隔。例如,如果将其设置为 5,并且七个消息到达 “发送” 文件夹,则端口会创建一个包含五个消息的批处理组,并将最后两个消息添加到下一个的批处理组中。默认值为-1,则不做最大批处理设置。

最小批处理大小。指定创建批处理组必须存在的最小消息数。 例如,如果将此设置为 5,并且三个消息到达“发送”文件夹,则端口将不会将这三个消息创建批处理组(即使经过了指定的发送间隔),直到至少额外两个消息到达,才会进行处理。默认值为-1,则不做最小批处理设置。

(2)配置自动化

 

同其他端口一样,在端口的“自动化”页面,勾选“启用自动化”,可开启文件的“定时发送”。该端口的消息发送都需采用定时发送模式,请勿手动发送,否则有可能会导致错误产生。可根据需要设置“发送间隔”,再在“第几分钟/小时”中设置具体的间隔时长。

 

 

二、Batch Merge 端口

Batch Merge 端口适用于这样的场景,比如接收到的采购商发来的每条850订单中,明细以单行的形式出现,若订单有多行明细,且头部信息相同。那就可将同一单的多条850数据合并为一条数据发送给客户。

接收到批处理组消息,并将批处理组中的批处理消息,按照设置合并为单个消息。该端口只能接受 Batch Groups 作为输入。 如果端口接收到单个消息作为输入,它会抛出错误消息。

在“设置”页面中需配置“Xpath”,端口根据Xpath设置的值,来确定在合并批处理消息时要使用的重复 XML 元素。

 

比如,下面两条XML作为一个批处理做传入端口:

XML一:

<Orders>

    <Shipping>

        <Item>Paper</Item>

        <Quantity>100</Quantity>

        <Recurring>Yes</Recurring>

    </Shipping>

    <Shipping>

        <Item>Eraser Bulk</Item>

        <Quantity>20</Quantity>

        <Recurring>No</Recurring>

</Shipping>

</Orders>

XML二:

<Orders>

    <Shipping>

        <Item>Pencil, Box 100</Item>

        <Quantity>10</Quantity>

        <Recurring>Yes</Recurring>

</Shipping>

</Orders>

如果 “XPath” 的值设置为 “/Orders/Shipping”,则输出消息将合并如下:

<Orders>

    <Shipping>

        <Item>Paper</Item>

        <Quantity>100</Quantity>

        <Recurring>Yes</Recurring>

    </Shipping>

    <Shipping>

        <Item>Eraser Bulk</Item>

        <Quantity>20</Quantity>

        <Recurring>No</Recurring>

    </Shipping>

    <Shipping>

        <Item>Pencil, Box 100</Item>

        <Quantity>10</Quantity>

        <Recurring>Yes</Recurring>

</Shipping>

</Orders>

也就是将多条消息merge为一条消息。

三、Batch Split 端口

 

 

Batch Split端口可用于传输带附件的文件的项目中,使用该端口可以将接收的交易伙伴的附件以及报文分为单个的文件。

将到达该端口的批处理组拆分为单个消息,与Batch Create 端口操作相反。如果端口接收到单个消息作为输入,它会抛出错误消息。

在端口配置面板中,“高级设置”部分包含“Correlation Id头”字段。当拆分批处理组时,Batch Split端口会根据批处理组 MessageId 为标头生成一个值,然后将相同的标头和值分配给每个单独的消息。

 

比如下图,设置“Correlation Id头”值为“batchFrom”,将批消息组拆分为单个消息后,会将批消息组的“消息ID”值,写入该组拆分后的单个消息的“batchFrom”中。

 

 

更多 EDI 信息,请参阅: EDI 是什么?

阅读原文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知行EDI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值