close

EDIFACT message 怎麼拆?(上) 

 

UN/EDIFACT (the United Nations rules for Electronic Data Interchange for Administration, Commerce and Transport)
https://www.unece.org/cefact/edifact/welcome.html


EDIFACT 是個國際標準的通用 EDI 格式,各行各業都可用的格式,但用起來怎麼玩就各家公司都不一樣了。當年一聽說客戶要玩這個,我查一下網上的文檔,隨便一個 message 都幾百上千個值,我就興起跳海的念頭了……先不要!知道方法就不用餵魚了!(其實肥毒宅只會污染海洋)

當初因為不懂,以為要先把上千個值都抓到出來,然後再從中挑想要的。由於沒經驗,所以當年我們找了第三方的dll 去處理,在這個第三方把信息生成一個 PowerBuilder 的 TreeView 以後,再用代碼讀出所有「樹枝」的路徑,再從而取得所有的值,近千個數據就生成了上萬條數據,然後還要從這萬條挑出有用的值,超慢滴……

後來因為實在太慢,又常常因為慢而導致其他問題,最後看不過去了,加上對客戶的電子信息已經有所了解,多了一點點的自信,於是就把整個解釋程序都重寫了,寫得簡單易明,速度也提高了幾十倍。

我的處理步驟:
1.    以 PowerBuilder 把信息分行寫到 DataWindow 中並寫進數據庫
2.    以 PowerBuilder 調用 Stored Procedure 進行拆解並寫到*臨時表
3.    在前面的 Stored Procedure 中對新來的信息做檢查,是新的就寫進臨時訂單表,是重覆的就判定處理方法,可能無視,也可能覆蓋臨時訂單表中的訂單。

為什麼要有個*臨時表?臨時表的作用在於儲存「所有收到過的電子信息」,整理過的信息方便查詢和整理,而原來的電子檔在讀取過後就移到備份文件夾,定時刪除以節省空間。

這玩意初接觸時很可怕,了解了之後又不怎麼樣,下回就聊聊要怎麼應對。
 

arrow
arrow
    創作者介紹
    創作者 過時程式員 的頭像
    過時程式員

    過時程式員的部落格

    過時程式員 發表在 痞客邦 留言(0) 人氣()