
前 言
sap on cloud
雲端的sap是sap公司對未來的一個展望。sap公司以及其軟體産品、業務模式将會變成什麼樣、未來是什麼,此時此刻沒有人說得清楚。但是,sap公司目前所有的業務發展、主流技術路線都非常明确地指向一個方向—雲計算。
為了實作這個目标,sap公司花了五六年的時間,耗費超過300億美元進行收購(ariba、hybris、sucessfactor、concur這樣的saas公司及sybase)和新産品研發(已經釋出的有hana企業雲、hana雲平台、s/4 hana及全新的xs 2.0應用伺服器),就是為了打造一個靈活平台,進而為将來的數字經濟服務。而這個靈活平台就是sap hana,目前全球已經有超過7200家公司使用它,而且其客戶量每年都以超出想象的速度在增加。這不是一個願景,而是正在發生的事情。
在過去幾十年的發展中,sap公司的核心平台一直都是netweaver abap和netweaver java(java從2004年才被納入netweaver體系),而且作為sap公司立身之本的企業商務套件及一些主流技術産品,基本上都是基于這兩個平台的。
sap netweaver是比java曆史更為悠久、成熟、健壯和穩定的平台,但其也有自身的不足。首先,sap netweaver雖然一直在追着網際網路的腳步(從早期的its,到bsp技術,再到webdynpro和personas做web化的應用),但是始終受制于自身平台,無法跳出平台進行思考,太多的成功和貢獻反而成為了它的曆史包袱。其次,由于這個平台的不開放性,不太适合主流的web應用部署和移動開發,同時java受制于專利和一些競争對手的法律限制。最重要的是,這個平台不适合部署在雲端,雲端部署要求應用要輕、要可面向微服務、可擴充性和相容性強。
是以,sap需要尋求一個新應用服務平台作為雲計算架構中paas層面的應用支撐,這個責任就落在了sap hana xs身上。之是以稱其為hana xs而不是sap xs,是因為xs剛開始釋出時,是被當作一個輕量級web服務元件被內建到sap hana中的,并且能夠利用sap hana全部計算能力。
從xs的2.0版本開始,hana xs将會從hana資料庫軟體包中剝離出來,真正成為一個平台即服務的平台。如果基于雲部署,hana xs底層的資料庫也是sap hana。如果使用者選擇的是本地部署,那麼和以前一樣,xs依然和sap hana安裝在一起,這種部署的靈活性,使得sap hana xs部署應用系統時更友善,可不中斷現有系統的基礎架構,而且可以立即适應企業的環境。
通過xs伺服器端的javascript技術,可充分利用記憶體計算及ui5技術,并且可以fiori apps作為應用的釋出形式,最終提供ui5+xs+hana這樣全新的技術組合,進而将應用非常輕松地部署到雲平台之上,為使用者提供極佳的使用體驗和部署政策。這就是未來sap應用系統的樣子。
為什麼需要閱讀本書
本書的前傳篇《sap hana實戰》主要是以建構一個商務智能的項目為出發點去講解sap hana系統安裝配置、資料etl、資訊模組化、bi內建應用及系統管理的。但是,筆者總覺得還少了點什麼,是以就有了寫這本書的念頭,是以本書應該算是《sap hana實戰》的兄弟篇,書中僅針對基于sap hana xs原生應用開發來進行講解,其他的話題一概不涉及。
本書不包含任何關于bw on hana、s/4 hana、bi on hana和etl、資料複制、abap、r的話題,也沒有講解sap hana的系統安裝、配置更新管理等話題,如果讀者對這些話題感興趣,可以參考《sap hana實戰》一書。
早期的sap hana應用主要作為企業bi商務智能的平台,然後推動erp on hana,接下來再更新到s/4 hana這一步。但是,大力提升上層應用的運作效率僅是它最基本的功能,而且sap也正在依托hana這個平台進行更大的自我創新。例如:
sap hana已經從本地單節點、叢集部署走向雲部署,并且推出了hana企業雲及hana雲平台,公有雲平台支援java(目前使用的sap jvm、xs 2.0版本将使用tomee來支援java運作)、hana、html5的應用開發,而xs 2.0也将主要應用在雲部署上,并且還将支援node.js、c++的開發。
在s/4 hana大計劃中,simple finance、simple logistics都基于sap hana,并且原有的大部分業務操作全部用fiori app來替換,并應用hana模型以簡化資料結構,同時應用了大量xsjs代碼。
在s/4 hana中,sap netweaver架構已經發生實質性的變化:sap gui用戶端→sap netweaver應用伺服器→資料庫的四層架構(之前是三層架構),即浏覽器→sap netweaver前端伺服器→sap netweaver後端伺服器→資料庫,而後端伺服器僅作為核心業務邏輯繼續存在,并持續被優化。
全面擁抱html5(ui5),在伺服器端大量采用javascript、hana資訊模型等,而這些東西都是基于sap hana xs的,并且逐漸向xs上遷移。
由此可見,依托sap hana xs進行原生應用開發,是sap将來新應用的開發技術路線。雖然xs平台支援hana原生、node.js、java、c++四種應用開發,以及自定義容器,但毫無疑問,hana原生應用(即xsjs、ui5、fiori apps、cds、modeling)将是未來采用的最主要的方式,是以本書所有的章節都是圍繞着hana原生應用開發展開的。
本書主要内容
本書邏輯上可分成五個部分,讀者可以根據下面的簡介來選擇性閱讀。
第一部分:包含第1、2章,主要講解sap hana伺服器的各個元件、原生項目的開發架構、sap hana工作台的主要操作、建立使用者、建立表、賦予權限等。
第二部分:包含第3、4章,主要介紹資訊模組化、sqlscript相關知識。這部分相對獨立,但後續的xs項目示例中會應用這部分知識。
第三部分:包含第5~8章,講解了hana原生應用開發過程涉及的絕大部分内容,包含xs項目的建立、核心資料服務、通路控制、xsjs、odata和ui5內建等内容。
第四部分:包含第9~11章,這部分主要通過一個具體案例來說明hana xs原生應用的開發過程及所涉及的全部對象。在介紹過程中,一步一步不斷增加新特性,使這個例子成為一個完整和考慮周全的系統,最後還将一個xs應用部署和傳輸到另外一個hana系統,并重點介紹了修改控制、傳輸等細節内容。
第五部分:包含第12、13章及附錄。主要講解hana應用上線後如何進行運維、團隊如何進行協同開發,以及如何實作系統的高可用。在附錄部分,提供了作者很多年的經驗和心得。
本書面向的讀者
本書是一本面向應用開發的純技術書,瞄準基于sap hana原生應用開發的所有細節内容,隻要你對sap hana、xs、ui5、hana原生應用開發感興趣,本書都将是你的最佳選擇。
目前還在從事abap開發的讀者,通過本書可輕松進入hana應用開發領域,還可以嘗試将一些已經在做的項目用xs來實作,并将其作為一個解決方案釋出到hana雲平台,進而成為一個hana雲應用的開發者。
閱讀過《sap hana實戰》的讀者則可以從本書中學到hana原生應用開發的内容,并且在新的hana項目中不斷應用這些技術。
hana系統管理者則可以從本書中學到hana應用自動化傳輸、配置和協同開發、高可用等相關知識。
勘誤和支援
本書基于sap hana sps10 revision 95版本進行講解。在本書的撰寫過程中,sap hana版本也在不斷更新,每次推出新的sps版本,或者有比較大的變化(例如xs 2.0的架構更新),作者都花了相當多的時間去更新書中的内容。
由于受限于作者本身的知識,書中某些内容可能闡述得不是非常精确,如果大家在閱讀中發現有一些錯誤,敬請諒解。
特别感謝
感謝機械工業出版社華章公司楊福川的大力支援,編輯姜影、孫海亮的耐心幫助,因為有了他們本書才得以順利出版;感謝sap研究院的張凱,是他幫助作者提升了本書的格調;還要感謝小黑屋七人衆的吐槽支援。
目 錄
前言
<a href="https://yq.aliyun.com/articles/89948">第1章 sap hana和xs開發</a>
<a href="https://yq.aliyun.com/articles/89948">1.1 sap hana系統的元件</a>
1.1.1 資料庫服務的元件
1.1.2 應用服務和輔助元件
<a href="https://yq.aliyun.com/articles/89957">1.2 進入xs應用開發的新篇章</a>
1.2.1 xs原生應用和fiori app
1.2.2 xs應用開發架構
<a href="https://yq.aliyun.com/articles/89968">第2章 熟悉hana開發環境</a>
<a href="https://yq.aliyun.com/articles/89968">2.1 環境準備</a>
2.1.1 sap hana伺服器軟體及硬體
2.1.2 sap hana用戶端軟體
<a href="https://yq.aliyun.com/articles/89978">2.2 第一次親密接觸</a>
2.2.1 幾個系統使用者
2.2.2 連接配接到sap hana系統
<a href="https://yq.aliyun.com/articles/90018">2.3熟悉sap hana工作台</a>
2.3.1 視角切換
2.3.2 sap hana系統運作期對象
2.3.3 常用的三個按鈕
2.3.4 建立表和上傳資料
<a href="https://yq.aliyun.com/articles/90047">2.4 使用者、角色和授權管理</a>
2.4.1 使用者管理
2.4.2 角色管理
2.4.3 關于授權
<a href="https://yq.aliyun.com/articles/90052">第3章 資訊模組化</a>
<a href="https://yq.aliyun.com/articles/90052">3.1 準備工作和tpc-h</a>
<a href="https://yq.aliyun.com/articles/90073">3.2 屬性視圖</a>
<a href="https://yq.aliyun.com/articles/90084">3.3 分析視圖</a>
第4章 模組化進階和sqlscript
4.1 計算視圖
4.1.1 基本工作界面
4.1.2 計算操作
4.2 計算視圖—可視化方式
4.3 sqlscript
4.3.1 表類型
4.3.2 存儲過程
4.3.3 計算引擎函數ce function
4.4 計算視圖—腳本方式
第5章 hana xs原生應用
5.1 xs路線圖
5.2 xs應用開發
5.2.1 xs應用程式
5.2.2 xs項目開發流程
5.3 永遠的“hello, world”
5.3.1 xs項目的開發視圖
5.3.2 建立xs資源庫的本地工作區
5.3.3 建立“hello,world”的xs項目
5.3.4 通路控制部分
5.3.5 運作程式
5.3.6 項目協同開發
5.4 從設計期到運作期
5.4.1 設計期對象的擴充名
5.4.2 可視化向導方式
第6章 深入xs開發
6.1 xs應用的開發流程
6.2 xs應用的通路控制
6.2.1 應用描述檔案
6.2.2 應用通路控制檔案
6.2.3 應用權限定義檔案
6.3 xs項目開發規範
6.3.1 分門别類
6.3.2 package和開發規則
6.3.3 對象如何引用
6.4 資料庫對象
6.4.1 建立schema定義
6.4.2 建立table定義
6.4.3 建立table type定義
6.4.4 建立sequence定義
6.4.5 建立sql view定義
6.4.6 建立role定義
6.4.7 存儲過程
6.4.8 建立hana模型視圖
6.4.9 資料自動加載
6.5 用cds開發table定義
6.5.1 cds定義群組成
6.5.2 cds檔案分解
6.5.3 hdbtable還是cds
6.5.4 示例:建立一個cds
第7章 xs應用的背景服務
7.1 支援xs應用的資料服務
7.2 odata服務—資料讀取
7.2.1 xs開發中的odata
7.2.2 快速定義odata服務
7.2.3 odata服務定義
7.2.4 odata通路操作
7.2.5 odata輔助工具
7.3 odata服務—自定義出口資料更新
7.3.1 odata服務的自定義出口
7.3.2 建立操作
7.3.3 更新操作
7.3.4 删除操作
7.3.5 關于資料傳遞
7.4 odata高效架構設計實踐
7.4.1 odata cud程式架構設計
7.4.2 導入shine應用
7.4.3 測試源代碼介紹
7.4.4 odata調用存儲過程—方式b
7.4.5 odata調用xsjs—方式c.1
7.4.6 odata調用xsjs—方式c.2
7.4.7 odata調用xsjs—方式c.3
7.4.8 開發xs應用的最佳方案
第8章 xsjs進階應用
8.1 node和xsjs
8.2 xsjs的api分類
8.3 處理request和response
8.4 通路hana資料庫
8.4.1 舊資料庫api
8.4.2 新資料庫api
8.4.3 使用自定義db通路連接配接
8.5 使用xs db utilities
8.6 調用web服務—soap
8.7 發送電子郵件
8.8 建立xs定時運作的作業
8.8.1 建立xs job
8.8.2 xs job通路關系
8.8.3 配置xs job和執行計劃
8.9 java通路xs web服務
第9章 xs應用項目開發示例
9.1 示例項目的結構設計
9.2 建立xs項目
9.3 資料模型實作
9.4 主資料初始化
9.5 ui5界面和odata、hana模型綁定
9.5.1 ui界面—客戶資訊
9.5.2 ui界面—整體業務分析
9.6 從ui到背景邏輯
9.6.1 ui5觸發http請求
9.6.2 odata處理請求的出口定義
9.6.3 處理post請求
9.6.4 處理delete請求
9.7 通路控制和權限
9.7.1 通路時的自動校驗
9.7.2 ui界面如何檢查應用權限
9.7.3 應用權限封裝為角色
9.8 應用部署
第10章 應用權限設計與開發
10.1 使用者設計和db互動
10.1.1 前端使用者使用同一個db賬号
10.1.2 前端使用者使用自己賬号
10.1.3 匿名通路
10.2 資料通路和隔離設計
10.2.1 資料讀取的隔離
10.2.2 資料更新,invoker還是definer
10.2.3 真實role或虛拟role
10.3 應用運作期的使用者和權限處理
10.3.1 從xs應用層面建立使用者
10.3.2 程式中實作對使用者的授權
第11章 xs自動化傳輸和部署
11.1 産品管理
11.1.1 一些前提操作
11.1.2 管理delivery unit
11.1.3 管理product
11.2 cr修改管理
11.3 自動化傳輸管理
11.3.1 注冊系統
11.3.2 傳輸路徑
11.3.3 傳輸du—啟用cr模式
11.4 應用部署和分包政策
第12章 xs運維和開發協同
12.1 xs應用運維、協同開發和傳輸
12.1.1 簡約3系統架構
12.1.2 傳統6系統架構
12.1.3 傳輸時代碼鎖定,覆寫失敗
12.1.4 運維傳輸的常見問題
12.2 通路賬号的權限和角色設計
12.3 xs伺服器的一些重要參數
第13章 xs系統高可用
13.1 hana高可用方案
13.1.1 資料庫備份
13.1.2 存儲複制
13.1.3 節點自動故障切換
13.2 系統複制方案
13.2.1 redo日志的複制模式
13.2.2 如何執行切換
13.3 系統複制的配置示例
13.3.1 系統複制—hana工作台
13.3.2 系統複制—使用指令行
13.4 浏覽器通路的重定向
附錄a sap hana快問快答