今天继续给大家分享继邮件通知、数据库状态回写后的第三种监控文件发送状态的方案:通过监控997功能性确认文件,进行数据状态回写。

您可能会有这样的疑问:什么情况下需要在知行EDI平台监控交易伙伴的997功能性确认文件来进行数据的状态回写?

首先,您需要对997进行了解:997是X12标准中的一种功能性确认文件,它是接收方EDI系统向发送方EDI系统发出的电子 “收据”,表明文件已被成功接收和阅读,在接收方收到X12文件后会对其结构和语法进行校验,校验后会给发送方回复997确认文件。997文件字段详细信息参考。

其次,需要和您的交易伙伴沟通确认是否启用997功能,以下主要介绍基于知行之桥EDI系统启用997功能后实现对997文件的监控,完成数据的回写。

以上信息都清楚后,接下来给大家介绍下通过监控997进行数据回写的实现原理和步骤:

通过监控997功能性确认文件,进行数据状态回写通常使用在X12标准并启用997功能的方案中。

实现原理

启用997功能后,当发送业务数据X12文件给交易伙伴后,会收到交易伙伴回复的997功能性确认文件,根据997文件匹配成功发送的业务数据X12文件,回写至业务系统,其中业务数据X12文件中GS06的值和收到的997文件中AK102的值对应,本文将介绍收到交易伙伴的997文件后,回写业务数据库表中的状态字段并将997的原始文件名写入数据库表。

实现步骤

一、存储发送成功的业务数据EDI文件的GS06字段、业务主键信息

1.创建数据库表(示例:[dbo].[PO_Sent_Info]),用来存放发出的业务数据EDI文件的GS06字段、业务主键等信息

例如:以采购订单850为例,850文件发出后,将GS06和订单编号的值写入数据库,以下步骤均以采购订单850报文为例

  1. 在(MFT)传输端口,以AS2端口为例,在AS2端口的事件-发送后(After Send)通过写脚本将发送成功的850 X12文件进行转发,发送到X12端口以便后续解析处理,脚本参考如下:

1

2

3

4

5

<arc:check value="[ErrorMessage | def]" >

<arc:else>

<arc:send connector="T_X12ToXML_SentFile"/><!-- 处理原始文件创建的X12端口ID -->

</arc:else>

</arc:check>

3.解析850报文,将报文中的GS06、订单编号字段存入数据库表,参考工作流如下:

(1)T_X12ToXML_SentFile:X12端口,将850 X12文件转换为标准XML;
(2) T_XMLMap850_SentFile:XMLMap端口,将上一步标准XML中的GS06、订单编号BEG03字段映射到数据库表中的GSNO和PONO字段,输出一个数据库XML文件,参考如下:

(3)T_Database_SentFile:数据库端口,连接数据库,配置[dbo].[PO_Sent_Info]表,选择Upsert操作,将上一步生成的数据库XML文件数据写入数据库存储。

二、处理收到的997文件

  1. 在知行之桥中设置对997文件进行后续处理

设置如下:在X12(X12ToXML)端口的高级设置–其他设置下–功能性ACK:返回入站的功能性ACK

默认情况下,所有功能性ACK(997,999)都将通过“路由ACK到端口”被路由至指定的端口,并且在XML转换时不会接收到X12端口的Receive文件夹。

启用后,XML转换后的ACK文件将被接收到X12端口的Receive文件夹中,以便进行后续处理。

2.997处理回写,参考工作流如下:

(1)T_AS2:AS2端口,与客户进行文件传输,这里用来接收交易伙伴回复的997文件。
(2)T_X12ToXML:X12端口,将接收的997 EDI文件转换为标准XML文件,并存入Receive文件夹下进行后续处理;同时在该端口的事件–AfterSend写脚本,将997的原始文件名放在消息内容中的其他消息头部上。

脚本参考:

实现结果:之后工作流的每个端口的消息内容中的其他消息头部都会显示自定义的originalFilename997(997的原始文件名)

(3)T_Branch997:Branch端口,根据XPath判断文件是否是997文件;

(4)T_DB_Lookup_997:Database端口,连接数据库,配置[dbo].[PO_Sent_Info]表,选择Lookup操作,查询数据库表中是否存在GSNO与997文件中AK102相同的数据,存在时获取其中的业务主键PONO并将其写入到997 XML文件中输出;

(5)T_Branch_Back:Branch端口,判断上一步输出文件中的业务主键PONO是否存在;

(6)T_Notify_NoPONO:Notify端口,当PONO不存在是进行邮件通知。
(7)T_XMLMap_Back:XMLMap端口,对上面业务主键(订单编号)存在的XML文件进行映射,生成采购订单850数据库表对应的XML结构,这里需要映射的字段有订单编号字段(PO_NUMBER)、数据状态字段(Status)和原始997文件名字段(OriginalFilename_997),如下参考:
(在前期创建850业务数据库表时,需要在表中设置了数据状态字段:Status和原始997文件名字段:OriginalFilename_997);

(8)T_DB_LookupID:Database端口,连接数据库,配置PO表(示例为:[dbo].[PO_850]),配置Lookup操作,根据上一步的业务主键PO_NUMBER获取数据库中对应业务数据的主键ID,并输出到文件中ID列。

(9)T_Database_850:Database端口,连接数据库,配置PO表(示例为:[dbo].[PO_850]),配置Upsert操作,根据主键ID更新数据状态字段:Status和原始997文件名字段:OriginalFilename_997。

将上一步生成的数据库XML文件数据写入数据库,更新Status字段数据为:The 997 document from the customer has been successfully received. 、更新OriginalFilename_997字段值为文件名信息,完成回写。

数据库表中数据参考:

参考:

[dbo].[PO_850]表是采购订单数据表,示例中表结构参考如下:

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

如何监控文件已成功通过EDI系统发给客户(三)-997回写相关推荐

  1. 如何监控文件已成功通过EDI系统发给客户(一)-邮件通知

    在EDI项目实际运行中,对于实际使用EDI系统的用户常常期待:当业务数据文件通过EDI系统成功发送给客户后,能够得到通知表示文件已经成功发送,这样用户不用登陆到EDI系统即可得知数据已成功发出,已达到 ...

  2. 使用Email Receive端口上传文件至EDI系统

    此前的文章中小知带大家学习了EDI系统如何通过AS2端口接收文件并使用Email Send端口发送邮件提醒.本篇文章小知将带大家了解如何使用Email Receive端口上传文件至EDI系统. EDI ...

  3. 红帽linux5.8系统修复,大神为你分析win7系统VNC客户端连接RedHatLinuxAS5.8的修复方案...

    我们在使用电脑的过程中,经常会遇到win7系统VNC客户端连接RedHatLinuxAS5.8的问题,遇到win7系统VNC客户端连接RedHatLinuxAS5.8的情况,我们需要如何去解决呢?经小 ...

  4. iphone屏蔽系统更新_手机资讯:iOS12 屏蔽系统更新的描述文件已失效怎么办

    如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多知识的,这些知识很多小伙伴一般都是不知道的,就好比最近就有很多小伙伴们想要知道iOS12 屏蔽系统更新的描述文件已失效怎么办,那 ...

  5. PTC指定位置安装许可服务器,proe野火3.0安装问题之“许可证管理已成功安装,但不能启动,请参阅日志文件..”我自己的解决方案(原...

    如果你正因为安装proe野火3.0碰到每次安装服务器总出现 "...许可证管理已成功安装,但不能启动,请参阅日志文件...."的对话框,那你可以参考一下我的解决方案: 先介绍一下: ...

  6. Ubuntu系统根目录文件已满——处理方法

    文章目录 目录 一.自动清理没用文件 二.在Ubuntu中清理APT缓存 三.对根目录磁盘进行扩展 1.安装gparted管理器 2.运行gparted管理器,进行分区处理 总结 前言 Ubuntu系 ...

  7. bootstrap-fileinput上传文件的插件使用总结----编辑已成功上传过的图片

    http://plugins.krajee.com/file-plugin-methods-demo 具体操作 http://plugins.krajee.com/file-preview-manag ...

  8. delphi 监控文件变化_监控Linux文件变化,防止系统被黑

    运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准 ...

  9. w ndows正常启动,正常运行WNDOWS所需的文件已被替换成无法识别的版本.要保持系统的稳定,必须还原这些文件的原有版本.doc...

    正常运行WNDOWS所需的文件已被替换成无法识别的版本.要保持系统的稳定,必须还原这些文件的原有版本 [图]实例解决:正常运行WINDOWS所需的文件已被替换成无法识别的版本.要保持系统的稳定,必须还 ...

最新文章

  1. iOS-设计模式-观察者模式-KVO
  2. vi 搜索命令_vi或vim如何查询关键字
  3. oracle语句求保有率,Oracle之保有量计算(当前记录等于前几条记录之和)
  4. 给Domino系统管理员的十二项建议
  5. unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...
  6. 安装应用需要打开未知来源权限_打开安卓这个开关 不让流氓软件肆意妄为
  7. 一起读经典-《Effective Java》1.1 考虑使用静态工厂方法代替构造器
  8. FPGA双沿发送之Verilog HDL实现
  9. cdn搭建原理_直播平台搭建并不难,最难的是这两点
  10. VS2010版快捷键指南
  11. 朝会資料  幕末の歴史の簡単紹介 2010年8月30日
  12. java程序开发个人笔记_Java程序开发入门笔记
  13. CCNA 视频教程下载 -chinalab版
  14. AnkhSvn安装及使用
  15. 2017服务器cpu性能排行,CPU性能怎么看?桌面CPU天梯图2017年12月最新版
  16. oracle locked time,Oracle里面的用户无法登录 LOCKED(TIMED)解决方法
  17. 成都到乐山1日游攻略
  18. 信息爆炸,物质丰富,你不得不知的奥卡姆剃刀原则
  19. 通过redmon监控管理Redis服务器的安装配置教程
  20. 知识付费网站源码可开分站一键更新后台数据

热门文章

  1. 使用 DISM 脱机添加和删除驱动程序
  2. # 研究杂感 × Gephi探秘飞升(第三辑)
  3. Python tkinter+文件操作 实现学生信息管理系统
  4. 如何自定义Axure元件库
  5. ibm服务器如何查硬件支持型号,ibm服务器硬件安装步骤是怎样
  6. 教材订购模块java代码实现,java毕业设计_springboot框架的教材征订系统
  7. node文件下载的方式
  8. SQL——将两列合并成一列
  9. 如何解决token不刷新的问题
  10. windows在bat脚本中给系统添加.reg注册文件