EDI 学习开发(一)

时间:2022-01-05 06:15:41

  最近有个需求,关于EDI 的开发,效果烂成一坨屎,写个总结,记录这坨屎。

  配置文件:01.EDI.Export.Config(在EDI 服务器SystemConfig目录下)

       02.EDI.TypeConfig(三个地方使用:客户端SystemConfig,AppServer/Systemconfig,EDI 服务/SystemConfig)

       03.校验文件:IFTMBF.validator.Xml(三个地方:客户端SystemConfig/EDI,Server/Systemconfig/EDI,EDI 服务/SystemConfig/EDI)

             (修改时将Mapping中的Name属性值改为当前新增的EDI名称)

         04.IFTMBF.XSLT(Mapping时,对应节点与XML文件进行匹配,将报文转换成对应的txt格式。)

  客户端配置:三个中心:

         01.系统工具:->基础数据->状态类型->委托单列表->海运单证(HBL界面->新增(对应配置EDI.TYPE.CONFIG)

              状态定义->委托单列表

       02.基础数据 :交换配置->交换控制长度(只修该值)为6

         03.EDI 中心:EDI类型->委托单列表->新增->(描述即为在界面显示的下联菜单)

              代码转换->客户代码->代码转换类型->代码转换列表

  EDI配置中的表(用于升级抓取脚本):

       EDI_CODE_CONVERT_CONFIG

       SB_STATUS_TYPE

       EDI_MESSAGE_TYPE

        EDI_INTERCHANGE_CONFIGURATION

       EDI_PARTNER_CODE

         edi_message_reference

       edi_message_reference_detail

  存储过程:

        取数存储过程:SP_EDI_SEARCH_IFTMBF

       校验存储过程:SP_EDI_CHECK_XXX

  注:在校验文件中,搜索“true”,值为true的执行校验,为空的字段不进行校验。

    MappingFiles->xslt文件的字段相应增删。

    ***每次有新文件覆盖或者新增,必须重启相应的EDI 服务***

  关于升级:

      01.备份文件(之所以能够苟活至今,全靠备份功夫还行):

        APP Server SystemConfig(EDI.Type.Config,EDI.Export.config)/edi(IFTMBT.Validetor.Xml)

        APP Server  Download/(Update.Xml,EDI.Type.Config.Zip,EDI.Export.config.Zip)(好像EDI.Export.Config文件只在EDI Server中)

        EDI Server SystemConfig(EDI.Type.Config,EDI.Export.config)/edi(IFTMBT.Validetor.Xml)

        EDI Server SystemConfig /MappingFiles/IFTMBF.XSLT

      02.升级文件:

        只需打包一个文件SystemConfig(客户端:SystemConfig/EDI.Type.Config,EDI.Export.config)

        其余为EDI Server 和 APP Server 中对应路径的文件(参照备份)

  常犯的错误及解决方法:

      01.删除时没有提示某个字段的校验(EDI.Server中没有获取对应的MSG_ID,导致执行对应存储过程是没有返回校验结果的数据)

      02.测试库报文生成ok,但是正式库日志说明报文生成ok,但找不到对应报文(覆盖了新的EDI.Export.Config文件,没有重启EDI服务,导致生成的报文被FTP抓走)

      03.生成的报文数据缺少或者末尾段的统计报文数目错误(XSLT与生成的XML格式报文元素节点调试,是否Mapping时,没有找到相应的节点,没有生成对应的报文。统计数目:在XSLT文件中有个Select:count="/*/*XXXXX" 的统计表达式,其实这个表达式 我一点也没看懂。)

心得:

  两个调试:

      01.抓取对应委托单的LOG_ID,找到对应存储过程检查返回的报文数量以及各式;

      02.调试XSLT(用VS打开,添加生成XML格式的报文),看Mapping节点是否一一对应,生成的报文格式与数量是否一致。