国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SAP OData編程指南

wanghui / 1717人閱讀

摘要:目前被廣泛用于和的眾多應(yīng)用中,以及和一些正在開發(fā)的新一代云產(chǎn)品中。年月時(shí),我和德國一位負(fù)責(zé)的同事就這個(gè)話題在半小時(shí)的電話會議里產(chǎn)生了爭執(zhí)。德國同事看了之后,同意了我的意見。和微信集成系列教程這個(gè)系列教程里,和微信的交互,使用了,使用了。

OData(Open Data Protocol)協(xié)議是一個(gè)開放的工業(yè)標(biāo)準(zhǔn),用于定義RESTFul API的設(shè)計(jì)和使用。我的文章標(biāo)題前加上SAP的前綴,只是為了表明這篇文章介紹的是Jerry在SAP項(xiàng)目開發(fā)中使用到OData的一些心得和經(jīng)驗(yàn)。

目前OData被廣泛用于SAP Business Suite和SAP S/4HANA的眾多Fiori應(yīng)用中,以及SAP Customer Engagement Center和一些正在開發(fā)的新一代云產(chǎn)品中。此外OData也是SAP Cloud for Customer推薦的一種將C4C和客戶第三方應(yīng)用集成的技術(shù)手段。關(guān)于這種集成方式,在我的另一篇文章里有所介紹:

SAP S4CRM vs C4C, 諸葛亮和周瑜?

本文會從OData服務(wù)的實(shí)現(xiàn)和消費(fèi)這兩個(gè)方面來介紹,目錄如下:

在SAP Business Suite中進(jìn)行OData開發(fā)

在SAP S/4HANA中進(jìn)行OData開發(fā)

使用ABAP代碼消費(fèi)OData服務(wù)

使用Java代碼 + Apache Olingo消費(fèi)OData服務(wù)

使用UI5消費(fèi)OData服務(wù)

OData性能測試

C4C中的OData應(yīng)用

XS OData Services

更多閱讀

*

在SAP Business Suite中進(jìn)行OData開發(fā)

以SAP CRM為例。SAP對于很多Fiori應(yīng)用都貼心地提供了可以云端試用的版本,通過如下鏈接訪問:

https://www.sapfioritrial.com/

點(diǎn)擊鏈接之后,在Fiori Launchpad里能看到CRM目錄下存在若干Tile,它們是SAP成都研究院CRM Fiori開發(fā)團(tuán)隊(duì)負(fù)責(zé)開發(fā)和維護(hù)的,Jerry也曾經(jīng)是這個(gè)團(tuán)隊(duì)的一員。隨便點(diǎn)擊一個(gè)Tile, 比如My Opportunities:

然后我們能看到該應(yīng)用的明細(xì)頁面了。在Chrome開發(fā)者工具的Network標(biāo)簽頁,我們能觀察到一個(gè)對于metadata的請求:

關(guān)于Chrome開發(fā)者工具的使用技巧,Jerry曾經(jīng)做過整理,多帶帶寫在另一篇文章里:

Jerry和您聊聊Chrome開發(fā)者工具

我們把這個(gè)metadata請求的url從Chrome開發(fā)者工具里拷貝出來,完整鏈接如下:

https://www.sapfioritrial.com...$metadata?sap-language=en&sap-client=001

直接在瀏覽器里訪問這個(gè)鏈接,就能觀察到包含在鏈接里名為CRM_OPPORTUNITY的OData服務(wù)的metadata(元數(shù)據(jù))。我們可以把一個(gè)OData服務(wù)的模型類比成一個(gè)SAP Business Object,該模型同樣由一個(gè)根節(jié)點(diǎn)和若干子節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)包含若干字段。某些節(jié)點(diǎn)提供了一些可以執(zhí)行的邏輯,在OData協(xié)議里稱這些邏輯為function import(相當(dāng)于Business Object里的action)。不同節(jié)點(diǎn)之間通過定義Navigation建立關(guān)聯(lián)關(guān)系——SAP基于Netweaver的不同產(chǎn)品的建模方式思路都類似,可以觸類旁通。

另一個(gè)重要的請求:

https://www.sapfioritrial.com...$skip=0&$top=20&$inlinecount=allpages&sap-client=001

在Jerry的另一篇文章?SAP UI 搜索分頁技術(shù)?里已經(jīng)對這個(gè)請求做過分析:

$skip=0&$top=20:通知后臺執(zhí)行分頁搜索,只將滿足查詢條件的前20條記錄從數(shù)據(jù)庫取出,返回給UI。

$inlinecount=allpages:?返回?cái)?shù)據(jù)庫滿足搜索條件的記錄數(shù)。因?yàn)镴erry未指定搜索條件,所以返回系統(tǒng)里Opportunity的總個(gè)數(shù)1051。

下面簡單介紹SAP Business Suite系統(tǒng)里如何開發(fā)OData模型和服務(wù)。

在動手開發(fā)前,我們需要先溫習(xí)Fiori的架構(gòu)。

在我的文章?SAP Fiori應(yīng)用的三種部署方式里提到過這張圖:

談到Fiori開發(fā)時(shí),就這張圖而言,可以總結(jié)成兩句話:

1. 在ABAP Back-End服務(wù)器上做OData模型和服務(wù)的開發(fā)

2. 在ABAP Front-End服務(wù)器上做OData服務(wù)的注冊,以便讓Fiori應(yīng)用能夠消費(fèi)

首先我們到ABAP Back-End服務(wù)器上,使用事務(wù)碼SEGW打開CRM_OPPORTUNITY這個(gè)OData服務(wù)。可以看到Data Model里包含了很多節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)實(shí)際上由一個(gè)ABAP DDIC Structure實(shí)現(xiàn),節(jié)點(diǎn)上的每個(gè)字段對應(yīng)著Structure上的字段。我們定義好OData模型包含哪些Structure之后,點(diǎn)擊工具欄的Generate Runtime Objects按鈕:

SAP Gateway框架就會基于我們定義的OData模型,自動生成4個(gè)ABAP類和兩個(gè)模型。

MPC和MPC_EXT:當(dāng)消費(fèi)者訪問該服務(wù)的metadata時(shí),這兩個(gè)類負(fù)責(zé)把通過ABAP DDIC Structure描述的metadata信息轉(zhuǎn)換成OData協(xié)議規(guī)范的格式并返回。每次開發(fā)人員修改OData模型,點(diǎn)擊Generate按鈕后,MPC的代碼都會重新生成。如果開發(fā)人員需要在模型上添加一些額外信息,比如一些版本控制信息或者相關(guān)注解(annotation),那么需要在MPC_EXT里通過ABAP代碼實(shí)現(xiàn)。MPC_EXT是MPC的子類,其代碼不會被Generate按鈕覆蓋。一個(gè)例子如下:

DPC和DPC_EXT:包含了OData服務(wù)的實(shí)現(xiàn),實(shí)際上也就是基于OData模型的CRUD操作,搜索操作和function import的實(shí)現(xiàn)。以O(shè)pportunity為例,因?yàn)樵撃P偷讓邮褂玫氖荂RM One Order模型,所以DPC_EXT里包含了大量CRM_ORDER_*等函數(shù)調(diào)用,CRM顧問朋友們對這些函數(shù)應(yīng)該非常熟悉。

在ABAP Back-End服務(wù)器做好OData開發(fā)后,登陸ABAP Front-End服務(wù)器,使用事務(wù)碼/IWFND/MAINT_SERVICE將后臺服務(wù)器做好的OData服務(wù)進(jìn)行注冊。

下圖是OData服務(wù)在ABAP Front-End服務(wù)器的注冊界面。從下圖能看出理論上一臺ABAP Front-End服務(wù)器可以連接多臺ABAP Back-End服務(wù)器,

SAP把這種1:N的關(guān)系稱為Multiple Origin Composition,典型的使用場景比如一家跨國企業(yè),其美洲分公司的應(yīng)用運(yùn)行于Back-End服務(wù)器1,歐洲分公司位于Back-End服務(wù)器2。一個(gè)銷售經(jīng)理使用Fiori應(yīng)用查看該企業(yè)某個(gè)時(shí)間段內(nèi)全球的銷售數(shù)據(jù),則其OData實(shí)現(xiàn)會將這兩臺服務(wù)器的后臺數(shù)據(jù)搜集起來,進(jìn)行匯總并返回給UI。具體細(xì)節(jié)請參考SAP幫助文檔:

https://help.sap.com/doc/saph...

關(guān)于SEGW更多開發(fā)細(xì)節(jié),可以參考我的SAP同事環(huán)宇的公眾號文章:

十分鐘手把手系列之SEGW Project入門

環(huán)宇有一個(gè)名為Fiori的公眾號,介紹的全是Fiori知識。感興趣的朋友可以關(guān)注一下。

在S/4HANA中進(jìn)行OData開發(fā)

在我的公眾號文章?Hello World, S/4HANA for Customer Management 1.0?里提到,CDS view是S/4HANA里一個(gè)重要的建模方式。

我們還是來看個(gè)具體的例子。假設(shè)需要在S/4HANA里開發(fā)一個(gè)管理Service Order的Fiori應(yīng)用,功能暫定為支持對Service Order的只讀操作,即查詢和瀏覽。借助S/4HANA的CDS view建模技術(shù),我們不需要寫一行JavaScript,就可以自動生成一個(gè)滿足需求的Fiori應(yīng)用,聽起來是不是很神奇?

我們需要創(chuàng)建一個(gè)CDS view,用它來自動生成OData的模型和服務(wù),即下圖綠色的Z_C_Service_Order_View。該View又從其他更底層的CDS view取數(shù)據(jù),將Service Order的抬頭,行項(xiàng)目,狀態(tài)信息等數(shù)據(jù)聚合在一起。

CDS view開發(fā)完畢后,只需要在事務(wù)碼SEGW里將其通過Reference->Data Source加載進(jìn)去:

就可以自動生成OData模型,以及前一章節(jié)提到的MPC和DPC各兩套一共4個(gè)ABAP Class,分別對應(yīng)下圖藍(lán)色和紅色區(qū)域所示,無需應(yīng)用開發(fā)人員再寫ABAP代碼。

然后用SAP WebIDE創(chuàng)建一個(gè)新的Fiori應(yīng)用,注意創(chuàng)建時(shí)不要使用普通的SAPUI5 Application模板,而采用Smart Template Application模板。在創(chuàng)建向?qū)Ю镏付ㄖ盎贑DS view自動生成的OData服務(wù)。

點(diǎn)擊向?qū)У腇inish按鈕,最終不用寫一行JavaScript代碼,就得到這樣一個(gè)Fiori應(yīng)用:

上圖提到的CDS view的源代碼,以及Smart Template的工作原理,都在我的博客里:

Create a CRM Service Order Fiori application within a couple of minutes

更進(jìn)一步,如果想給這個(gè)自動生成的Fiori應(yīng)用增添一些功能,例如支持對Service Order的修改創(chuàng)建操作,請按照我的另外兩篇博客去實(shí)現(xiàn):

Enable CRM Service Order application with edit functionality

Enable CRM Service Order application with create functionality

值得一提的是,在CDS view里有一個(gè)強(qiáng)大的注解:

@OData.publish: true

和SpringBoot的注解能實(shí)現(xiàn)很多神奇的功能一樣,被該注解定義過的CDS view,能夠不借助SEGW的幫助,自動生成OData模型和服務(wù),進(jìn)一步簡化了開發(fā)人員做OData開發(fā)需要的配置,有助于開發(fā)人員快速構(gòu)建出標(biāo)準(zhǔn)化的OData服務(wù)。

@OData.publish這個(gè)注解的實(shí)現(xiàn)原理,請參考我的CDS view自學(xué)教程系列的第4部分:

Part 4 how does annotation @OData.publish work

OData服務(wù)的消費(fèi)

前面說了這么多都是OData模型和服務(wù)的開發(fā),現(xiàn)在來談?wù)勅绾蜗M(fèi)。

使用ABAP代碼消費(fèi)OData服務(wù)

以消費(fèi)C4C Opportunity的標(biāo)準(zhǔn)OData服務(wù)為例。

首先在postman里搞清楚如何使用HTTP Post加上OData的$batch操作來創(chuàng)建Opportunity:

其實(shí)最主要的工作量就是把$batch操作的一整套流程用ABAP代碼實(shí)現(xiàn)。$batch請求的body通過下圖代碼里insert_line這個(gè)自定義宏操作的一系列字符串去填充。

因?yàn)锳BAP Netweaver既可作為Web Server,又可作為Web Client,所以使用ABAP代碼消費(fèi)OData這種RESTFul API,實(shí)質(zhì)上是利用了IF_HTTP_CLIENT的SEND和RECEIVE方法,進(jìn)行網(wǎng)絡(luò)請求的發(fā)送和接收。

我在SAP Community上寫過一個(gè)用ABAP代碼消費(fèi)OData服務(wù)的教程:

Consume standard C4C OData service via ABAP code

使用Java代碼 + Apache Olingo消費(fèi)OData服務(wù)

相信大多數(shù)開發(fā)人員都不愿意像下面的代碼這樣直接操作OData $batch body,既麻煩又容易出錯(cuò)。

于是在Java里就有了Apache Olingo,一個(gè)開源庫,您可以把它當(dāng)成OData的Java SDK,封裝了OData底層的細(xì)節(jié)。$batch操作需要填充的BatchChangeSet和BatchChangeSetPart在Olingo里都有了對應(yīng)的類進(jìn)行封裝,看看下圖使用Java代碼調(diào)用OData服務(wù)進(jìn)行ServiceTicket 的創(chuàng)建,和上圖ABAP代碼進(jìn)行比較,是不是從語義上看清晰了很多?

上圖的完整Java代碼,參考我的github

使用UI5消費(fèi)OData服務(wù)

在SAP UI5官網(wǎng)上能找到詳細(xì)的API說明。

Jerry只補(bǔ)充兩點(diǎn)原創(chuàng)內(nèi)容。

1. UI5 OData API的同步和異步參數(shù)。

2015年6月時(shí),我和德國一位負(fù)責(zé)Quality的同事就這個(gè)話題在半小時(shí)的電話會議里產(chǎn)生了爭執(zhí)。因?yàn)闀r(shí)間有限,我沒能在電話里說服他,所以就有了這篇博客。德國同事看了之后,同意了我的意見。具體細(xì)節(jié)參考博客:

A Test on Fiori OData request Synchronous mode VS Asynchronous mode

下圖是5個(gè)請求以同步模式發(fā)出在Chrome開發(fā)者工具Network標(biāo)簽頁中觀察到的時(shí)序:

下圖是5個(gè)請求以異步模式發(fā)出:

2. 在SAP云平臺的CloudFoundry環(huán)境下消費(fèi)ABAP On-Premise OData服務(wù)

場景:在微信里消費(fèi)On-Premise系統(tǒng)的OData服務(wù)。

詳細(xì)步驟已經(jīng)在我之前的微信公眾號文章介紹過了。

OData性能測試

1. 使用Netweaver提供的性能測試工具

詳細(xì)介紹參考我的博客:

How to find OData performance trace and payload trace functionality

2. 使用JMeter測試OData服務(wù)在高并發(fā)場景下的性能指標(biāo)

在Jerry工作過的客戶項(xiàng)目里,很多客戶提出了這種性能測試要求,比如同時(shí)發(fā)起1000個(gè)Service Request的OData創(chuàng)建請求,測量其平均響應(yīng)時(shí)間。

Jerry在這兩篇博客里介紹了兩種辦法:

(1) 自己寫Java代碼,用多線程編程技術(shù),每個(gè)線程發(fā)起一個(gè)OData創(chuàng)建請求,自己度量平均響應(yīng)時(shí)間。

(2) 使用性能測試神器JMeter,這樣一行代碼都不用寫。

兩種辦法的具體介紹參考我的博客:

JMeter beginner – how to use JMeter to measure performance of OData service accessed parallelly

OData service parallel performance measurement – how to deal with XSRF token in Java Program and JMeter

Kapsel OData plugin原理講解

SAP移動解決方案的Offline(離線)模式使用了Kapsel OData plugin,用于將業(yè)務(wù)數(shù)據(jù)從后臺系統(tǒng)抽取出來,保存于設(shè)備本地的離線存儲區(qū)域。

關(guān)于其工作原理,參考Jerry做過的三個(gè)維度的分析:

How is OData request routed to Offline data store by Odata offline plugin

How is JavaScript code in OData offline plugin delegated to native Java code in Android

How is OData offline store opened in Android platform

C4C中的OData應(yīng)用

Jerry做過的C4C客戶項(xiàng)目中對OData使用的一些分享:

Leverage C4C Odata notification to monitor C4C Opportunity change in CRM system

使用場景:在C4C創(chuàng)建業(yè)務(wù)數(shù)據(jù)后,利用這篇博客介紹的用法,能自動發(fā)送一個(gè)通知給其他系統(tǒng)/應(yīng)用。可以作為一種輕量級的系統(tǒng)集成方案。

Expose TextCollection data belonging to a Custom BO via OData service

該解決方案我提供給了一個(gè)Chinese C4C客戶。

Expose Custom BO logic implemented by ABSL via Custom OData service

通過OData將用ABSL實(shí)現(xiàn)的自定義邏輯暴露給第三方應(yīng)用。

C4C和微信集成系列教程

這個(gè)系列教程里,C4C和微信的交互,60%使用了C4C OData,40%使用了C4C Web Service。

XS OData Services

HANA Studio里開發(fā)的HANA view也能通過HANA Extended Application Service暴露成OData服務(wù)。

據(jù)我的成都同事介紹,SAP Customer Engagement Center采用的就是這種方式。

更多介紹參考這篇SAP博客:

HANA Development: XS OData Services

更多閱讀

所有更多閱讀的鏈接都已經(jīng)分布在文章的每一章節(jié),這里為閱讀方便起見,將部分鏈接再次統(tǒng)一羅列如下:

SAP UI 搜索分頁技術(shù)

[](http://mp.weixin.qq.com/s?__b...

在SAP云平臺的CloudFoundry環(huán)境下消費(fèi)ABAP On-Premise OData服務(wù)

Jerry和您聊聊Chrome開發(fā)者工具

C4C和微信集成系列教程

Jerry的UI5框架代碼自學(xué)教程

SAP Fiori應(yīng)用的三種部署方式

Jerry的Fiori原創(chuàng)文章合集

Hello World, S/4HANA for Customer Management 1.0

SAP UI和Salesforce UI開發(fā)漫談

SAP S4CRM vs C4C, 諸葛亮和周瑜?

那些年我用過的SAP IDE

要獲取更多Jerry的原創(chuàng)技術(shù)文章,請關(guān)注公眾號"汪子熙".

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71351.html

相關(guān)文章

  • SAP OData編程指南

    摘要:目前被廣泛用于和的眾多應(yīng)用中,以及和一些正在開發(fā)的新一代云產(chǎn)品中。年月時(shí),我和德國一位負(fù)責(zé)的同事就這個(gè)話題在半小時(shí)的電話會議里產(chǎn)生了爭執(zhí)。德國同事看了之后,同意了我的意見。和微信集成系列教程這個(gè)系列教程里,和微信的交互,使用了,使用了。 OData(Open Data Protocol)協(xié)議是一個(gè)開放的工業(yè)標(biāo)準(zhǔn),用于定義RESTFul API的設(shè)計(jì)和使用。我的文章標(biāo)題前加上SAP的前綴...

    X1nFLY 評論0 收藏0
  • #私藏項(xiàng)目實(shí)操分享# 使用 JavaScript 上傳 PDF 和 Excel 等二進(jìn)制文件到 AB

    摘要:這是年的第篇文章,也是汪子熙公眾號總共第篇原創(chuàng)文章。使用通過格式發(fā)送和文件到服務(wù)器關(guān)于格式的詳細(xì)說明,參考開發(fā)社區(qū)和的文檔我在前文例子的基礎(chǔ)上稍作修改在里使用兩個(gè)類型為的標(biāo)簽,分別上傳和文件用來測試的本地文件,大小為字節(jié)。 這是 Jerry 2021 年的第 71 篇文章,也是汪子熙公眾號總共第 348 篇原創(chuàng)文章。 Jerry 之前發(fā)布過一篇文章 不使用任何框架,手寫純 Jav...

    peixn 評論0 收藏0
  • 站在巨人肩膀上的牛頓:Kubernetes和SAP Kyma

    摘要:小的時(shí)候,聽過牛頓這樣謙虛的一句話如果說我看得比別人更遠(yuǎn)些,那是因?yàn)槲艺驹诰奕说募绨蛏稀!0l(fā)布一個(gè)的事件,事件包含創(chuàng)建訂單的字段。 這周Jerry在SAP上海研究院參加了一個(gè)為期4天的Kubernetes培訓(xùn),度過了忙碌而又充實(shí)的4天。Jason,Benny和Peng三位大神的培訓(xùn)干貨滿滿,借此機(jī)會,Jerry和過去的兩位老領(lǐng)導(dǎo)Patrick和Evan敘了敘舊,也拜見了上海SAP圈子里...

    hosition 評論0 收藏0
  • 站在巨人肩膀上的牛頓:Kubernetes和SAP Kyma

    摘要:小的時(shí)候,聽過牛頓這樣謙虛的一句話如果說我看得比別人更遠(yuǎn)些,那是因?yàn)槲艺驹诰奕说募绨蛏稀!0l(fā)布一個(gè)的事件,事件包含創(chuàng)建訂單的字段。 這周Jerry在SAP上海研究院參加了一個(gè)為期4天的Kubernetes培訓(xùn),度過了忙碌而又充實(shí)的4天。Jason,Benny和Peng三位大神的培訓(xùn)干貨滿滿,借此機(jī)會,Jerry和過去的兩位老領(lǐng)導(dǎo)Patrick和Evan敘了敘舊,也拜見了上海SAP圈子里...

    Harpsichord1207 評論0 收藏0

發(fā)表評論

0條評論

wanghui

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<