使用類似搭積木的低程式碼開發方式進行SAP API開發

i042416發表於2020-04-06

Jerry之前的文章 SAP API開發方法大全 介紹的第七種SAP API開發方式,SAP Data Intelligence Graph,實際上是Low Code Development(低程式碼開發)的一種體現。

本文通過一個具體的例子來介紹,如何在SAP Data Intelligence Modeler的圖形化介面裡,通過類似小朋友玩積木的方式,將各種SAP釋出的標準Operator搭配在一起,再通過少量的編碼,得到一個支援增刪改查的API.

開啟Modeler的Operators標籤頁,看到位於不同Categories下面總共存在超過300個Operator.


使用類似搭積木的低程式碼開發方式進行SAP API開發


每個Operator可以實現某領域的一個功能,比如連線ABAP系統並讀取資料,生成隨機資料,將資料寫入某持久化儲存,呼叫API等等。我們通過把這些Operators組合起來, 最後實現一個端到端的場景。

在動手使用這些Operator組建API之前,讓我們先試試一些最簡單的Operator. 拖拽一個擁有《星際爭霸》里人族雷達站圖示的Data Generator到編輯頁面裡。

這個Operator定義了一個Output Port, 型別為String,意思是它生成的隨機數,以String的型別,通過該Output Port傳遞給其他Operator.


使用類似搭積木的低程式碼開發方式進行SAP API開發


上圖Data Generator的Output Port指向了另一個Terminal Operator 的Input Port, 這代表了資料流的傳遞方向,從Data Generator輸出到Terminal.


使用類似搭積木的低程式碼開發方式進行SAP API開發


這些作為節點的Operators以及連線節點的有向線段組合在一起,構成了SAP Data Intelligence裡的Graph(圖).

SAP Data Intelligence官網上提到了其“擁抱開放技術”的一個特質:


使用類似搭積木的低程式碼開發方式進行SAP API開發


比如SAP Data Intelligence提供的Kafka Consumer和Producer Operator,給其維護一個Kafka Broker的地址,就能無需程式設計,輕鬆實現生產者-消費者場景:


使用類似搭積木的低程式碼開發方式進行SAP API開發


現在回到本文開頭提到的增刪改查API的需求。這個API可以讓消費者通過HTTP的方式呼叫,通過API進行增刪改查的操作物件僅僅維護在Graph執行時的記憶體裡,實際就是JavaScript簡單實現的物件鍵值對,為簡單起見,省略了持久化操作。

這個由Graph實現的API最後如下圖所示,總共由6個Operator組成,其中一個HTTP Server,四個JavaScript Operator和一個Multiplexer.


使用類似搭積木的低程式碼開發方式進行SAP API開發


根據幫助文件,HTTP Server這個Operator封裝了最簡單的HTTP伺服器的功能,能夠在使用者配置的endpoints上接收HTTP請求。


使用類似搭積木的低程式碼開發方式進行SAP API開發


如何配置Operator?右鍵選單裡選擇“Open Configuration”, 點選Routes的編輯圖示:


使用類似搭積木的低程式碼開發方式進行SAP API開發


根據SAP幫助文件,HTTP Server Operator只負責接收HTTP請求,並不負責收到這些請求後的業務處理,而是通過Output Port交由Graph下游的其他Operator完成。Route配置資訊一目瞭然,在路徑/objects上接收到帶引數id的HTTP請求後,按照HTTP請求型別,分別將請求通過get, post和delete三個Output Port 轉發給其他Operators.


使用類似搭積木的低程式碼開發方式進行SAP API開發


接下來我們實現HTTP GET操作的響應邏輯。從Operators標籤頁裡拖拽一個JavaScript Operator到編輯頁面裡,重新命名為GET Handler,建立一個名叫request的Input Port,將其連線到HTTP Server的get Output Port.


使用類似搭積木的低程式碼開發方式進行SAP API開發


右鍵單擊GET Handler,選擇Open Script選單項:


使用類似搭積木的低程式碼開發方式進行SAP API開發


由於預見到HTTP Server接收到GET,POST和DELET請求後,都有一些通用的邏輯要處理,比如從URL裡解析出消費者傳入的物件ID引數值,並交由下游Operator進一步處理。因此這裡的設計是這三個Handler在收到請求後,僅僅構造一個命令物件,該物件包含這次HTTP請求所對應的記憶體中JavaScript物件鍵值對的操作型別(GET請求對應select,POST請求對應insert,DELETE請求對應delete)和傳入的引數ID值:


使用類似搭積木的低程式碼開發方式進行SAP API開發 使用類似搭積木的低程式碼開發方式進行SAP API開發 使用類似搭積木的低程式碼開發方式進行SAP API開發


從上圖看出這三個Handler的實現程式碼,除了通過command Output port傳給下游節點的操作型別(objectStore.command)存在差異之外,並無其他區別。


使用類似搭積木的低程式碼開發方式進行SAP API開發


任意一個HTTP請求被HTTP Server接收後,只會觸發這三個Handler其中一個。三種Handler產生三種可能的輸出操作,通過名為command的Output Port傳遞給上圖中圖示為三叉戟的三路複用器。這個複用器確保最後一個JavaScript Handler能夠同時處理這三種可能性,執行完對應的鍵值對操作後,將處理結果經過上圖橙色虛線標註的資料流,傳遞給HTTP Server的Input Port.

在名為Object Store的JavaScript Handler內部,用變數objects定義一個空的JavaScript物件,作為鍵值對的儲存實體。針對select,insert和delete三種操作,分別這個物件來實現增刪改查。


使用類似搭積木的低程式碼開發方式進行SAP API開發


這樣該Graph從接收到HTTP請求,到處理完請求將結果寫入HTTP Server名為Response的Input Port,形成了一個完整的閉環。


使用類似搭積木的低程式碼開發方式進行SAP API開發


Graph開發完畢後,點選執行按鈕,待其處於執行狀態後,就可以使用Postman等工具或程式語言消費了。在控制檯將其Runtime Handle抄下來:


使用類似搭積木的低程式碼開發方式進行SAP API開發


首先測試API讀取功能,試圖讀取一個ID為1的例項:

https:///app/pipeline-modeler/service/v1/graphs//operator/httpserver1/objects/1

看到返回的提示資訊“no obect with ID”就是我們在Object Store JavaScript Handler裡硬編碼的錯誤處理。


使用類似搭積木的低程式碼開發方式進行SAP API開發


接著呼叫HTTP Post插入一條key為1的JavaScript物件:


使用類似搭積木的低程式碼開發方式進行SAP API開發


然後用HTTP GET讀取,這次讀取成功:


使用類似搭積木的低程式碼開發方式進行SAP API開發


使用HTTP DELETE請求刪除這個ID為1的物件:


使用類似搭積木的低程式碼開發方式進行SAP API開發


希望本文能幫助大家對SAP Data Intelligence裡這種低程式碼開發方式有一個最直觀的瞭解,感謝閱讀。

更多閱讀

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

使用類似搭積木的低程式碼開發方式進行SAP API開發


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2684633/,如需轉載,請註明出處,否則將追究法律責任。

相關文章