1. 程式人生 > >淺談T100 WebService Server與Client端客制開發

淺談T100 WebService Server與Client端客制開發

T100 WebService Server端開發:

開發流程:1.服務註冊;2.服務程式簽出;3.服務程式撰寫;4.服務程式上傳

1.azzi700註冊服務規格編號,然後簽出就可以寫程式了:

2.宣告JSON組成Requent和Response的內容:

#add-point:自定義客戶專用模組變數(Module Variable)
PRIVATE TYPE type_detail  RECORD    #傳入單身陣列
                      isagseq              LIKE isag_t.isagseq,   #項次
                      isag001              LIKE isag_t.isag001,   #來源型別
                      isag002              LIKE isag_t.isag002,   #來源單號
                      isag003              LIKE isag_t.isag003,   #來源項次
                      isag009              LIKE isag_t.isag009,   #料號
                      isag004              LIKE isag_t.isag004,   #發票數量
                      isag005              LIKE isag_t.isag005,   #發票單位
                      isag101              LIKE isag_t.isag101,   #原幣單價
                      isag105              LIKE isag_t.isag105    #原幣稅後金額
                          END RECORD
PRIVATE TYPE type_master  RECORD    #傳入單頭陣列
                      isaf003              LIKE isaf_t.isaf003,     #賬款客戶                    
                      isafdocdt            LIKE isaf_t.isafdocdt,   #單據日期    
                      isaf018              LIKE isaf_t.isaf018,     #稅率
                      isafud001            LIKE isaf_t.isafud001,   #EDB對賬單號
                      items                DYNAMIC ARRAY OF type_detail
                          END RECORD
PRIVATE TYPE type_return  RECORD   #返回陣列
                       code          LIKE type_t.chr20,
                       sqlcode       LIKE type_t.chr20,
                       description   LIKE type_t.chr1000,
                       orderNo       LIKE type_t.chr50  #EDB銷退單單號
                          END RECORD

3.從json中讀取request資料:

   #取回 datakey 資料內容
   LET g_ent  = cl_aws_json_getValue("datakey","EntId")
   LET g_company = cl_aws_json_getValue("datakey","CompanyId")
   LET l_json_obj = cl_aws_json_getParam()
   
   #將data 轉入l_master record
   CALL l_json_obj.toFGL(l_master)
   
   IF l_json_obj IS NULL THEN
      LET g_status.code = "wss-00216"   #讀入json 發生問題
      RETURN
   END IF
   
   #檢查傳入datakey是否為空
   IF cl_null(g_ent) THEN
      LET g_status.code = "wss-00138"
      LET l_str = cl_replace_err_msg(cl_getmsg('wss-00138',g_dlang),'EntId')
      LET g_status.description = l_str
      RETURN
   END IF
   IF cl_null(g_company) THEN
      LET g_status.code = "wss-00138"
      LET l_str = cl_replace_err_msg(cl_getmsg('wss-00138',g_dlang),'CompanyId')
      LET g_status.description = l_str
      RETURN
   END IF

4.返回response的json:

#返回值
CALL cl_aws_json_addParam(util.JSONObject.fromFGL(l_return))

在Server端的開發過程中,有幾個常用的方法:

  1. cl_aws_json_getValue()       取得欄位值
  2. cl_aws_json_getParam()     取得整個param段
  3. l_json_obj.toFGL()        將param段的資料轉換讀取到預定義變數
  4. cl_aws_json_addParam(util.JSONObject.fromFGL(l_return))     將返回變數自動加入response的json中

T100 WebService Client端開發:

宣告JSON組成Request所必須的內容,參考下列的type_service 的RECORD,先將這些必要宣告出來以利後面呼叫:

type type_service    RECODE
    prod		STRING,
	name		STRING,
	ip	   	    STRING
                END RECODE

舉例說明: 程式開始先宣告會呼叫到模組變數,如type_service,接著對這些變數進行初始化,像是預設的引數內容以及預設的服務產品、服務名稱、ip:

宣告完變數後:

  1. 初始化JSON內容,參考cl_rest_json_init();
  2. 呼叫addParam()以及addDatakey() function進行增加parameter、datakey的動作;
  3. 透過cl_rest_json_invokeSrv()將request傳送出去並且取得執行狀態碼、回傳內容以及錯誤資訊,當狀態碼為0是代表執行成功;
  4. 使用cl_rest_json_getParam()取得parameter的內容並將其內容透過toFGL()這個function 來轉成RECORD形式以利我們取得所需的資訊,反之可從l_errmsg取得錯誤訊息。

 

T100 WebService Client 端開發(中臺) 

宣告應用服務要傳給對方產品的主體資料,與接收回傳的主體資料RECORD: