Web Service(以下都會簡稱WS)的服務程式都是寫在aws/4gl(標準程式)或cws/4gl(客製程式)目錄下,使用WS開發最大的好處是它的資料交換格式是XML,因此很容易跟異質系統做串接。

WS存在五種服務需求:
- 讀取ERP單檔:例如料號查詢並讀取欄位資訊
- 讀取ERP雙檔:例如報價單查詢並讀取欄位資訊
- 寫入ERP單檔:例如客戶基本資料新增或更新
- 寫入ERP雙檔:例如新增訂單單據並確認
- 非單據的參數傳入與回傳:例如單據自動編號函式
開發WS的步驟:
步驟一、增加服務節點(aws_ttsrv2_service.4gl)
比如我要新增一個名為cws_createCCSubShipping的服務節點,那我需要於aws_ttsrv2_service.4gl的函式aws_ttsrv_serviceFunction中新增function name(即服務節點),如下圖:

步驟二、新增呼叫該服務節點處理的函式(aws_ttsrv2_service.4gl)

cws_createCCSubShipping:為呼叫的ERP函式名稱
CreateCCSubShipping:為服務代碼
cws_create_cc_sub_shipping:處理該服務節點的程式
步驟三、將該服務節點新增至aws_ttsrv2的連結當中(p_link)

打開p_link→查詢"aws_ttsrv2"→新增服務節點的程式代號"cws_create_cc_sub_shipping"
(此階段是否要r.l2都無所謂,因為一定會失敗)
步驟四、開發新的4gl,即cws_create_cc_sub_shipping.4gl
FUNCTION cws_create_cc_sub_shipping()
WHENEVER ERROR CONTINUE
CALL aws_ttsrv_preprocess() #呼叫服務前置處理程序
IF g_status.code = "0" THEN
CALL cws_create_cc_sub_shipping_process()
END IF
CALL aws_ttsrv_postprocess() #呼叫服務後置處理程序
END FUNCTION
前處理函式與後處理函式一定要有,在兩函式中間再呼叫服務處理函式,實際的程式內容都是寫在該服務處理函式(FUNCTION cws_create_cc_sub_shipping_process())
實際開發內容寫在FUNCTION cws_creare_cc_sub_shipping_process()該函式裡,就不贅述,程式撰寫方式幾乎與一般的4gl撰寫方式一樣,但有幾點須注意:
- 需定義WS服務的全域變數
GLOBALS "../../../tiptop/aws/4gl/aes_ttsrv2_global.4gl" - 可能會使用到的函式說明請參考>>>赫非域 » TIPTOP Service Gateway ver 2.0
步驟五、編譯相關程式
當程式開發完成後,請依以下順序進行:
- 編譯cws_create_cc_sub_shipping.4gl => r.c2 cws_create_cc_sub_shipping
- 編譯caws_ttsrv2_service.4gl => r.c2 aws_ttsrv2_service
- 連結aws_ttsrv2.4gl => r.l2 aws_ttsrv2
以上每一個步驟若有出現錯誤,則需先除錯完成再執行下一個步驟
步驟六、重啟WS服務
使用tiptop帳號登入,於後台輸入startws指令
注意:執行startws後服務會立即中斷(數秒內會重啟完畢),請確保重啟當下未有服務正在進行
步驟七、於GP上進行接口設定
整合服務SERVER端設定(exe2 aws_ttcfg2)

點選【新增】進行設定,務必與步驟二的文字一模一樣(大小寫也是)
步驟八、檢查WSDL是否有該服務節點

http://xx.xx.xx.xx/web/ws/r/aws_ttsrv2_toptest?WSDL
為固定寫法,前面為IP位置
(如果是正式區,後面改成/web/ws/r/aws_ttsrv2?WSDL)
最後一步、測試該服務是否可正常啟用(打API)
使用API工具進行測試,以SoapUI為例:

1.先建立一個SOAP專案
2.輸入專案名稱與步驟八的網址
3.按下OK就可以囉
接著找到要測試的服務,在Request1點滑鼠左鍵兩下進入request畫面:

在?的地方把?刪掉,並輸入該API所需接收的參數,如下圖:

1.先將<都取代成<,否則API很高機率會打失敗
2.點選左上方的綠色箭頭按鈕,就可以測試囉~~~
出現右邊類似的畫面就代表成功囉~~~

因為該API的RESPONSE於程式中設定只需回傳oga01的tag name與tag value,所以有看到上圖紅框的資訊就代表這個服務是可以正常執行的![]()
(使用aws_ttsrv_addParameterRecord()該共用函式決定要RESPONSE的內容,詳細用法請參考步驟四的連結)
請先 登入 以發表留言。