2005/10/12

我不希望我Filepolling使用Multiple Threads

在敘述問題前,先感謝Calista, Rich, Sandra, Ls 等人的協助,希望下次有機會能再到你們公司拜訪囉^^

有個 webMethods 的朋友,前幾天問我一個 Filepolling 的問題,說實在的,雖然我 Filepolling 已經用了一段時間,但還沒有遇到跟他類似的需求,所以我想了一下,想出了一個爛的解決方法,不過此方法卻沒有解決他的問題,我先把他的需求簡單的描述一下。

“……在所 Filepolling 的 Folder ,要他以一筆一筆的方式來處理該檔案,此檔案是,當該檔案還沒有處理完畢時,不能處理下一筆檔案,但 webMethods 是 Multiple Thread 的方式,雖然他可以依順序來處理檔案,但若第一筆的資料比較多,第二筆的資料比較少的時候,有可能發生第二筆處理完畢後,第一筆才處理完,但我希望的是第一筆處理完,再處理第二筆……”

雖然我沒遇到這個 Case ,不過我想這應該不難吧,弄一個 Q DB 就可以搞定這一個 Case 才是,所以我就決定下面的做法:

流程序述:
1. 產生的檔案的檔名請依時間命名
2. Fillpolling 取得到檔案時,將檔名存放於DB中,內容暫不處理
3. 每三十秒執行一次Schedule Seriver, 此Service是去Q DB取得第一筆Record,此記錄應該為最舊尚未處理的檔案,當處理完畢後,將此Record刪除,所排定的Schedule請勾選Repeat from end of invocation 選項,可避免後來先處理的情形。

過沒多久對方跟我說,並沒有解決他們目前的問題, “……因為在這一個Case 裡,我們除了要讓 wM 依照順序丟出 Data 給 ERP 後端程式外,還希望控制到等ERP 後端程式處理完後再丟出 Data 給 ERP ……” 。顯然地,我的解決方法並沒有未他們解決這一個問題,不過他們卻跟我說有一個設定可以解決這一個問題, “……後來我們發現 wM 的 FilePooing 的機制設定中,有個 Maximum Number of Invocation Threads 這個設定 (設定為1)可以解除我們目前遇到問題……”。

我後來查了一下文件,這一個設定是可以允許你這一個 Filepolling 一次可以有多少個 Threads ,他的範圍從 1 ~ 10 ,因為我平常都不做這一個設定,所以也沒去注意到,而他的 Default 是 10 ,所以當你不去做設定時,他就是以 Multiple Threads 的方式來處理。

後記~~我想解決問題的方法,應該是先找有沒有相關的文件或案例,若找不到相關的資料再進行天馬行空會比較好,免得臭大了。

2005/10/03

WCM Overview (1)

  今天開始學習新的工具 WCM (Web Content Management),這是一套由 IBM 所提供的網頁上下稿工具,之後我會將這些學習筆記,記錄在此。

  什麼是 WCM 呢,用一個簡單的方式來說明,就是我現在用的 MSN Space 就是一個簡單的WCM。有了MSN Space 及 Blogger 之後,我們寫網頁就簡單多了,只要把我們想要寫的東西寫在網頁上,然後再將一些圖片給上傳,包括了字體、字型及文字大小,都可以利用簡單的 tool bar 來達成,只不過今天 IBM 的 WCM 還多了很多的 Feature 以及多國語言的支援,還有簡單的流程管理,還有呀,還可以跟Dreamweaver 結合哦!

  今天讀的不多,不過我就將今天讀的東西做一個簡單的整理。
  WCM 提供了幾個工具可以讓你來管理你網頁的建立、簽核以及發佈。

  1. Authoring Templates
    嗯~~這個工具我不太清楚怎麼用,不過它是寫說,他可以跟一個叫做 "Presentation Templates" 的工具一起合用,可讓你的網頁風格一至性
  2. Workflow and Security
    你的每一個網頁都可以藉用一個簡易的簽核流程來決定你這一頁面是否可以創建。例如一些新聞稿在發佈前,必需經由公關經理及總經理的核准才可發佈。
  3. Scheduled Publishing and Expiring
    你的網頁還可以設定日期,在該日期區間此網頁才會呈現。例如我們可以做一個產品促銷的網頁,在產品促銷期間讓它呈現出來,過了產品促銷期之後,讓此網頁"自動"關閉。
  4. Authoring Environments
    可以結合 Dreamweaver ,讓網頁開發人員開發完網頁後,就可以自動發佈在 WCM 上,只要在你的 Dreamweaver 上安裝一個 Plug-In 就可以了


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 狀況。