最近有個需求,關於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節點是否一一對應,生成的報文格式與數量是否一致。