最近有个需求,关于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节点是否一一对应,生成的报文格式与数量是否一致。