Jerry從2018年末至今,已經寫了一系列關於SAP Kyma的文章,您能夠移步到本文末尾得到這些文章的列表。Kyma是SAP開源的一個基於Kubernetes的雲原生應用開發平臺,可以容許SAP的partners以簡捷而現代的方式,對SAP的雲解決方案和傳統On Premises產品進行鏈接,集成和擴展。所謂「現代」,即partners在進行二次開發時,能夠充分利用近些年來企業級開發領域不斷涌現出的新技術,好比Serverless計算,微服務架構等等。git
Kyma是徹底開源和免費的,任何人均可以試着在本身的本地電腦上進行安裝。固然,嘗試本身本地安裝有一些門檻,由於安裝過程當中須要從Google的網站上拖取一些Kubernetes相關鏡像,所以須要學會「科(fang)學(zhi)上(he)網(xie)」。github
而SAP Cloud Platform Extension Factory,是SAP在開源項目Kyma上進一步完善而推出的一個商業化解決方案,自己並不單獨賣,而是做爲SAP雲平臺的一個組成部分。編程
Kyma和SAP Cloud Platform Extension Factory的關係,就比如Open UI5和SAP Fiori目前使用的UI5框架之間的關係同樣。在Jerry這篇文章特殊的上下文裏,由於Jerry不想每次都敲出「SAP Cloud Platform Extension Factory這五個單詞」,因此下文仍是統一用Kyma這個詞。微信
Jerry以前的文章 WordPress,SAP Kyma和微信三者的集成,介紹瞭如何使用SAP Kyma中的Lambda Function,監聽WordPress中的post.created事件,從而完成對WordPress的加強。架構
今天這篇文章,讓咱們把經過SAP Kyma進行擴展的對象換成C/4HANA中的一朵雲,SAP Cloud for Customer(C4C)。Jerry但願每當C4C中有新的Opportunity建立時,C4C都會把這個事件通知給Kyma上的Lambda Function,後者做爲事件監聽函數,能夠進行對應的處理,具體作什麼邏輯,你們能夠試着開開本身的腦洞。框架
好比實現一個Account Address Enrichment的功能,就是用戶在C4C裏建立Account時,只須要維護基本的地址信息,而後點擊保存,C4C發送事件給Kyma,後者接到這個事件後,調用SAP API Hub上的Address微服務,把豐富事後的地址詳情經過C4C Account OData API調用的方式,寫回C4C。經過這個加強,減小了C4C用戶錄入數據的工做量,同時也展現了Kyma與被其擴展的C/4HANA產品的數據雙向讀寫功能。less
下面咱們就來看看這個擴展如何完成。ide
首先固然是要把C4C同Kyma創建起互相信任的鏈接了。對於SAP partners來講,好消息是這個鏈接的配置是一個黑盒子,經過下圖Kyma的Application Connector模塊完成,partners不須要了解其技術實現。函數
首先進入SAP Cloud for Customer的Administration的工做中心,打開General Settings視圖,進入Event Notification配置UI:微服務
新建一個C4C OData事件和API的消費者:
類型選擇SAP Cloud Platform Extension Factory,即Kyma:
這個Remote Environment URL從哪裏來呢?就是SAP Kyma應用裏的Application Connector對應的url:
到Kyma控制檯的應用裏,點擊Connect Application,就獲得了須要維護到C4C裏的url:
維護了回調用戶名和密碼以後,再添加Subscription,即您但願將Cloud for Customer系統裏的哪些BO事件,發佈給Kyma:
我選擇了Account和Opportunity這兩個BO的建立和更新事件,暴露給Kyma:
成功保存並激活配置:
回到Kyma的應用界面,在Provided Services & Events界面下,此時能看到Cloud for Customer發佈過來的API和事件了:
進入Kyma Service Management的Catalog界面下,找到從Cloud for Customer系統導入進來的服務,
進入服務明細,能觀察到Cloud for Customer系統發佈的BO事件的字段參數,
以及該C4C系統全部支持的OData API列表。若是咱們指望在Kyma的Lambda Function裏對C4C的數據進行寫回操做,就得使用這些OData API.
接下來,咱們就能夠基於這些API和事件進行Lambda Function的開發了。
首先基於C4C導入進來的服務,建立一個新的實例:
確保實例處於運行狀態:
而後基於該實例建立一個新的Lambda Function:
Lambda Function的觸發方式,選擇以前C4C暴露的BO建立和修改事件:
因爲文章篇幅緣由,這裏暫時不介紹在Kyma Lambda Function裏如何調用C4C的OData API,而只是簡單的打印出C4C傳遞過來的事件參數:
至此Kyma端的開發和配置就結束了,是否是以爲步驟很是簡單明瞭?
如今到C4C裏建立一個新的Opportunity,保存:
到C4C的Event Notification Monitoring界面去,觀察到Opportunity建立的事件已經成功被投遞到Kyma去了,對應的Kyma實例的url也能夠在投遞明細裏查看到。
再回到Kyma Lambda Function的日誌界面,這裏也看到了Lambda Function實現體裏打印出的來自C4C的事件明細:
爲何只打印了兩個guid呢?由於C4C暴露的BO事件,其參數規範裏就只包含了發生事件的當前節點和Root節點的guid. 至於如何在Kyma的Lambda Function裏調用C4C的OData, 我們未來再聊。
你們能夠試着比較一下,如何使用C4C傳統的二次開發方式,該如何監聽BO的建立和更新事件呢?那就是使用SAP Cloud Application Studio,在Solution裏建立BO加強,而後在BO節點上建立AfterModify並經過ABSL編程實現。
而SAP Kyma的橫空出世,確實像SAP的官方宣傳那樣,給SAP partners們提供了一種不一樣於過去在ABAP平臺上進行的全新的二次開發方式。經過SAP Kyma提供的事件監聽機制,進行SAP二次開發的從業人員再也不須要對被加強的SAP解決方案的技術細節有過多的瞭解,僅僅在Kyma Lambda Function定義好的接口上下文內,調用公開穩定的API,便可完成開發任務。
但願本文可以對廣大的SAP二次開發從業者們有所啓發,感謝閱讀。
要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":