2005/09/21

Processing Rules實作(一)

案例
  我有一台webMethods Server上面運行EDI也有一段時間了,我當時也購買了五個 webMethods Partner 的License ,想說可以給我的 Partner 使用,不過最近我其它在國外的子公司也想導入,但我的 Partner License 只能連總公司,那我要怎麼做比較好。
  在不久前我有聽過有”類似”這一方面的需求,雖然我不知道這是不是大部份的公司所面臨到的問題,不過 webMethods 的 Processing Rules 應該可以符合這個需求,實作起來還蠻簡單的,以下我就舉一個案例來做簡單的步驟說明,若有不當的,還請多指教囉!
  情境:
  我的公司名稱為 Julian Company ,另有有二間子公司各為 Julian UB1Julian UB2 ,他們的客戶 Customer1 在以前傳送 Invoice 都是經由傳真的方式給我的子公司,但現在想利用 EDI 的方式來傳送,選擇的標準為 EDIFACT 版本為 96B ,訊息名稱是 INVOIC ,所以我將以 Julian Company 做為公司的 Hub ,然後依據資料內容傳送給不同的子公司 UB1UB2
  方法:
  1. Install TN Document Type
    進到 http://localhost:5555/WmEDI/ 的畫面,然後到 Doc Exchange 的 Install TN Document type ,在右側處選擇 Standard 為UN/EDIFACT 、 Version 為 96B 、 Transaction Set 為 INVOIC ,


    選完後,請按 "Add Document Type Definition to Trading Network" 。這個時候就能在 TN Console 中 Document Type 看到 UNEDIFACT 96B 的 Document 。


  2. 撰寫 Route EDI 的 service
     當我們收到 EDI 資料時,分辨出他的 Receiver 後,接下來就是轉傳給他的真正的 Receiver 而不是 HUB ,所以我們必需要寫一個簡單的 service 來做一個轉傳的動作。除此之外,在我們收到 EDI 當時, TN Console 上的 Transaction 中的 User Status 會顯示為 "IGNORED" ,在這一個 case 裡,我希望當他轉傳成功能,能變為 "DONE" ,這一個 server 的簡易寫法如下:


(可 下載 此service範例)


  3. 訂定 Route EDI 的 Processing Rule
     訂定這一個 Processing Rule 的目的是為了將收到的 EDI 交由我們剛剛所設定的 Service 處理,此設定如下:
    i. 打開 TN Console 並到 Processing Rules ,選擇 Last Tab 並按 "Above" , Processing Rule 的 Name 設定為 "EDI Processing Rule" 。


    ii. 在 Criteria Tab 中設定 Sender Name 為 "Customer1" , Document Type 為 "UNEDIFACT Envelop" ,於 Action Tab 中設定 Execute a service ,並選擇我們剛剛所撰寫的 Service 。

此 Processing Rule 就算是設定完成。(此 Processing Rule 可 下載


  4. 進行測試
     將我們要測試的EDI資料透由http://server:port/WmEDI 傳到 http://server:port/invoke/wm.tn/receive 即可。
     注意:請用二台機器做對傳,若僅有一台機器 Processing Rules 會出現 Loop 狀況。