1.2 进入XS应用开发的新篇章
在SAP HANA的早期版本(例如SPS06)中,没有提供所谓的XS资源库的概念,但是XS Server是一直就存在的。
因为早期的XS系统架构和服务不是非常成熟,在SAP官方的文档中都只是将其作为一个轻量级的应用服务器,并且XS的应用开发和资源库管理也都没有准备好,所以,早期的基于SAP HANA开发都没有使用XS项目的方式,也就没有相应的XS开发说明。
以往在SAP HANA上的应用开发大致如下:
- 没有任何HANA的应用部署在XS服务器之上。
- 直接在Catalog下创建Schema和存储过程、表。
- 直接在Content下创建Package、属性、分析、计算等视图。
- 创建DU,将Package分区分配进去,导出为离线文件,手动在几个SAP HANA系统之间进行DU的导入/导出。
- 创建新用户,为其赋予访问数据库对象和视图的权限,然后外部系统应用可以通过这个用户访问SAP HANA。
- 在HANA中只能开发基本的存储过程和HANA信息模型,供BI软件(BO、Tableu、QlikView)或者应用系统(NetWeaver、BW)访问。
- 无法开发任何独立Web应用。
以前这种方式是无法进行部署的,也无法进行多人协同开发,没有版本管理和传输的机制,这基本上是条件不成熟的情况下,不得已而为之的方式。
但是,从SPS07开始,所有的SAP HANA上的开发都可以在XS资源库中完成,并且提供了多个HANA系统之间的自动化传输和部署工具。如果还继续使用过去的资源库来做应用开发,那么现在是时候考虑如何利用XS资源库进行开发了。
在目前的SAP HANA版本中,我们所做的一切开发都属于XS开发。
XS开发的优点如下:
- 可以开发基于SAP HANA XS的独立Web应用,并且可以应用Fiori来进行统一的访问管理。
- 以XS项目的方式来开发整个项目,并且使用统一的资源库功能来解决项目的多人协同开发的版本冲突、激活等问题。
- 将数据库对象的开发(Schema、Table、角色、权限、存储过程等)全部以CDS的方式进行,让数据库对象可以通过DU来传输和部署。
- 将HANA信息模型开发变成XS项目的一部分。
- 具备完整的XS应用生命周期管理功能,如开发、DU或者Product打包、传输路径,以及后期运维的修改管理。
1.2.1 XS原生应用和Fiori Apps
我们已经在SAP HANA上开发了XS原生应用,还需要使用Fiori LaunchPad(本文简称应用启动界面)作为入口和统一管理工具吗?笔者的回答是:不一定。
通常,我们基于SAP HANA XS开发的应用可以是独立XS原生应用,用户可以直接访问这个应用,当然,也可以将其挂载到Fiori LaunchPad中,用户通过统一的URL地址登录,Fiori根据登录用户的角色来判断可以使用哪些应用。为什么不一定需要使用Fiori来作为XS应用的入口和管理点?下面将详细说明。
- Fiori只是一个前端的UI框架,是由一组CSS、HTML5、JavaScript组成的一个Central UI Component,不涉及任何应用,仅提供管理Fiori应用的一些基本功能。
- SAP官方为很多已有的产品定制开发了很多UI组件,这些UI组件其实就是将SAP ABAP开发某个GUI程序做成Web的前端(不包含任何后台逻辑),这些UI组件在SAP的官网上被称为SAP Fiori Product,如图1-4所示。
- SAP Fiori Product基本上都是对已有SAP应用的一个Web化,但并非所有的SAP后台的应用都完成了“Fiori化”了。以SAP Fiori Product for ERP为例,目前已经包含了Accounting、Logistics(PS、SD、LE、MM、PP、PM、QM、GTM)大部分常用的用户界面,而且大部分SAP Fiori Product都是需要配合SAP Netweaver Gateway来使用的, XS独立应用则不是。
- SAP Fiori解决了不同应用之间的导航和相互跳转的问题,自开发的XS应用则是一个个独立的URL地址,如果需要做跳转,则需要在XS应用中考虑这些需求,虽然工作量不大,但是需要在设计XS应用时预留好这个功能。
- SAP Fiori只是一个Web应用的入口和整体展现框架,至于进入到应用以后的权限、数据隔离访问等操作都需要在这个应用中区实现。
**提示信息:
对于前面这个问题,笔者的看法是,因为SAP官方的产品需要将大量的应用“Web化”,但是这个Web化的工作不是仅在展现层面做了,后台的那些业务逻辑(例如,用ABAP写的BAPI、RFC FM等)也都用OData作为服务的封装。
SAP Fiori非常适合作为SAP开发的Web App的容器,因为它提供了较好的统一风格、导航、基于角色的工作台,并且支持多种设备的访问。SAP Fiori用来管理很多独立小应用是很好的。
如果需要在SAP HANA XS上开发多个不同的独立应用,那么使用Fiori是比较合适的。如果XS应用数量不多,而且每个XS应用都有自己独立的一套菜单和完整的业务操作,而且这些XS应用还会被挂载到企业内部的门户站点上去,那么就不需要使用Fiori作为访问入口,因为这反而会把事情弄得更为复杂。**
1.2.2 XS应用开发架构
前言中讲到了SAP HANA XS将作为下一代的应用服务器,图1-5所示为XS应用服务器的组成示意图。图中SAP向开发者传递了一些比较重要的消息,需引起注意。
首先,HANA XS服务器部署在什么地方?
如果客户部署的SAP HANA系统在本地服务器上,那么XS服务器和现在一样,继续作为SAP HANA系统的一个服务(即XS Server组件),和Index服务器及其他组件一起,共同组成了一个完整的SAP HANA系统实例。XS应用服务器和数据库服务器在一起,不分离。
XS服务器是为HANA云平台而设计的,但是也可以部署在本地的HANA中。部署在云环境,就是SAP HANA Could Platform(HANA云平台)的应用方式。这种情况下,XS服务器从HANA系统中独立出来了,可以集群部署,并且基于Cloud Foundry这样的PaaS云平台。
因为考虑到了用户的需求,大部分部署在HCP上的应用都是可以部署在本地SAP HANA环境中的。基本上不需要做什么调整,毕竟本地和云部署的运行环境是相同的。
其次,是HANA XS服务器提供的运行环境是什么?
不管是云部署还是本地部署的方式,XS应用服务器都提供了XSJS、Node、Java、C+的运行环境。而且在2.0的版本中,将服务器端JavaScript的引擎做了统一整合,全部使用Google V8。