项目实施过程中,需要明确数据是否已成功发送给交易伙伴。以防止数据漏发、错发给业务带来不必要的损失。在最新发布的知行之桥EDI系统中,新增了显示成功路径功能。我们可以利用这个功能,快速实现数据库状态回传。
支持版本:知行之桥EDI系统22.0.8452.0或者更高版本
接下来为大家详细介绍如何根据当前数据处理情况完成状态回传。以中间数据库方案为例,在header表中,我们将id设置为主键:
status列可以用来标志每行数据的处理状态,如下图所示:status值为0表示新建状态,status值为1表示抓取成功状态,status值为2表示发送成功状态。
想要实现状态回传,我们主要使用数据库表里的id和status。接下来我们在知行之桥EDI系统中进行操作!
我们设定的场景是:EDI系统从中间数据库表中抓取数据,并进行格式转换,生成符合X12 国际报文标准的文件并通过AS2发送给交易伙伴。
需要实现的功能:在X12文件从AS2端口成功发出后,需要将发送成功的状态回传至相应的数据库表中。也就是我们上文提到的,需要令数据库header表下的status值由0变为1再变为2。如下是整体工作流:
搭建步骤
1.数据库端口配置
在工作流界面左侧的 端口 选项卡下,找到 数据库 分类。将SQL Sever 端口拖拽至右侧空白区域。
点击SQL Server 端口,即可看到弹出的 设置 选项卡,在 配置>连接 下点击创建。这一步我们需要填写中间数据库的信息,实现与数据库的连接。如下图所示:
需要填写的信息如下:
服务器
端口
数据库
用户名
密码
填写完成后可以点击 测试连接 按钮,检查是否可以成功连接到我们配置好的数据库。当提示测试连接成功,即可点击右下角的 创建连接 按钮。接下来回到设置页面中,
选择操作为:Select。
找到下方的 Select 配置。如下图所示:
1)点击添加,选择我们上文存放id和status的header表。可以看到在左侧 列 的位置出现了我们header表中的两个列:id和status。
2)在 过滤规则 下,点击右侧添加规则,令status 等于0。
3)在 高级 下,勾选这行,并且设置为:当行处理成功时,更新列status,其值为1。
完成以上设置之后记得点击右上角,保存变更。在输出页面,点击接收,即可下载数据库XML文件。此时status状态变更为1,标识数据已被EDI系统成功抓取。
2.映射配置
新建一个XMLMap端口,将从数据库端口下载的数据库XML上传至 源文件 中。可以看到映射部分左侧出现了数据库中的两个字段:id以及status。按照如下所示的对应关系建立映射:
在目标部分,添加脚本:
1 |
<rsb:set attr="_message.header:ID" value="[xpath(id)]"/> |
上述脚本的主要功能是将数据库中的id值写入文件的消息头部,以便后续处理。我们在XMLMap的输出部分,点击输出文件,即可在其他消息头部中看到设置成功的ID值。
创建X12端口,在 设置 页面下,将 转换类型 设置为:XML转换为X12。
3.通信配置
创建两个AS2端口,一个为本地的AS2端口,将其命名为:I_AS2;另一个模拟交易伙伴方的AS2端口,将其命名为:AS2OUT。配置连接信息,实现自发自收。本文不再赘述,详细步骤参考:AS2端口配置
4.脚本介绍
创建一个Script端口,在 设置 界面中写入如下脚本:
1 2 3 4 5 6 7 |
<rsb:set attr="file.filename" value="[FileName]" /> <rsb:set attr="file.data"><header> <id>[_input.header:ID]</id> <status>2</status> </header> </rsb:set> <rsb:push item="file" /> |
将对应id下的状态更新为2。
AS2端口选择 显示成功路径 之后会出现一个绿色的小标识,将这个绿色标识引入新建的Script端口中。
当X12端口成功发出文件之后,文件会被传输到Script端口。创建一个SQLSever端口,操作为:Upsert
在 Upsert 配置 中,添加header表,在 列 部分选择 执行此查询以查找 UPSERT 键,填写为select id from header。
这一步我们将根据id值将status信息更新到数据库表中。此时header表中的status值将会被更新为2,表示数据已成功发送给交易伙伴。
为了验证我们的操作,我们从数据库中抓取一条status值为0 的数据,经过上述工作流的转换之后,成功从AS2端口发出。此时数据库里这条数据的status值被更新为2,表示文件已成功发送至交易伙伴。
我们打开此前配置的模拟交易伙伴AS2端口,可以在 输出 页面下看到我们发出的文件已被成功接收了!
如果你对使用成功路径实现数据库状态回传还有任何疑问,欢迎联系我们。
了解更多 EDI 信息,请参阅: EDI 是什么?
注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。