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

image

WS存在五種服務需求:

  1. 讀取ERP單檔:例如料號查詢並讀取欄位資訊
  2. 讀取ERP雙檔:例如報價單查詢並讀取欄位資訊
  3. 寫入ERP單檔:例如客戶基本資料新增或更新
  4. 寫入ERP雙檔:例如新增訂單單據並確認
  5. 非單據的參數傳入與回傳:例如單據自動編號函式

 

開發WS的步驟:

步驟一、增加服務節點(aws_ttsrv2_service.4gl)

比如我要新增一個名為cws_createCCSubShipping的服務節點,那我需要於aws_ttsrv2_service.4gl的函式aws_ttsrv_serviceFunction中新增function name(即服務節點),如下圖:

image

 

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

image

cws_createCCSubShipping:為呼叫的ERP函式名稱

CreateCCSubShipping:為服務代碼

cws_create_cc_sub_shipping:處理該服務節點的程式

 

步驟三、將該服務節點新增至aws_ttsrv2的連結當中(p_link)

image

打開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撰寫方式一樣,但有幾點須注意:

  1. 需定義WS服務的全域變數
       GLOBALS "../../../tiptop/aws/4gl/aes_ttsrv2_global.4gl"
  2. 可能會使用到的函式說明請參考>>>赫非域 » TIPTOP Service Gateway ver 2.0

 

步驟五、編譯相關程式

當程式開發完成後,請依以下順序進行:

  1. 編譯cws_create_cc_sub_shipping.4gl => r.c2 cws_create_cc_sub_shipping
  2. 編譯caws_ttsrv2_service.4gl => r.c2 aws_ttsrv2_service
  3. 連結aws_ttsrv2.4gl => r.l2 aws_ttsrv2

以上每一個步驟若有出現錯誤,則需先除錯完成再執行下一個步驟

 

步驟六、重啟WS服務

使用tiptop帳號登入,於後台輸入startws指令

注意:執行startws後服務會立即中斷(數秒內會重啟完畢),請確保重啟當下未有服務正在進行

 

步驟七、於GP上進行接口設定

整合服務SERVER端設定(exe2 aws_ttcfg2)

image

點選【新增】進行設定,務必與步驟二的文字一模一樣(大小寫也是)

 

步驟八、檢查WSDL是否有該服務節點

image

http://xx.xx.xx.xx/web/ws/r/aws_ttsrv2_toptest?WSDL

為固定寫法,前面為IP位置

(如果是正式區,後面改成/web/ws/r/aws_ttsrv2?WSDL)

 

最後一步、測試該服務是否可正常啟用(打API)

使用API工具進行測試,以SoapUI為例:

image

1.先建立一個SOAP專案

2.輸入專案名稱與步驟八的網址

3.按下OK就可以囉

 

接著找到要測試的服務,在Request1點滑鼠左鍵兩下進入request畫面:

image

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

image

1.先將<都取代成&lt;,否則API很高機率會打失敗

2.點選左上方的綠色箭頭按鈕,就可以測試囉~~~

 

出現右邊類似的畫面就代表成功囉~~~

image

因為該API的RESPONSE於程式中設定只需回傳oga01的tag name與tag value,所以有看到上圖紅框的資訊就代表這個服務是可以正常執行的

(使用aws_ttsrv_addParameterRecord()該共用函式決定要RESPONSE的內容,詳細用法請參考步驟四的連結)

創作者介紹
創作者 米血的小天地 的頭像
米血

米血的小天地

米血 發表在 痞客邦 留言(0) 人氣( 759 )