SAP 移动开发技术综述

(1) 基于 Java 的 Android 原生移动应用开发
(2) 基于 UI5 + Cordova 的混合移动应用开发
(3) 基于 SAP BTP 平台 Mobile Service 的移动应用开发

移动操作系统里的最耀眼的两颗明星,iOS 和 Android,于 2007 年先后诞生。SAP 随后也推出了一系列基于 iOS 和 Android 平台的原生移动应用。以 2011年笔者所在的 CRM 开发团队,负责开发的名为 SAP Customer Briefing 的一款 Android 原生应用为例,该应用能帮助使用者,高效快速地浏览应用连接远端的 CRM 系统里存储的客户主数据,显示每个客户的 Company Profile, 历史业务数据,Key People,销售机会, 交媒体相关信息等维度的数据。

对于这种典型的 iOS/Android 移动原生应用连接远端 CRM 系统的应用场景,因为 CRM 系统部署在企业内 受防火墙保护,移动原生应用无法通过 HTTP 直接消费防火墙后面的 OData 服务。

为了解决内外 穿越问题,我们采用了 SUP 和 SAP Netweaver Gateway 的组合方案,将位于公 的原生移动应用的 OData 请求,转发到内 防火墙后的 ABAP On-Premises 系统进行业务处理。

SUP 即 Sybase Unwired Platform 的缩写,是一个移动企业应用程序平台 (Mobile Enterprise Application Platform, 简称 MEAP)。SUP 是一种用于管理移动应用程序的中间件,主要用于在 移动设备和 SAP 系统之间存储和传递数据。

SAP CRM Fiori 移动应用采取 UI5 + Cordova 组合方案后,作为应用开发人员,我们使用 UI5 完成了 Web 应用的开发,然后再使用 Cordova 提供的 build 工具,将开发好的前端应用,打包成能够安装到 iOS 和 Android 平台上去的混合移动应用(Hybrid Mobile Application )。所谓混合移动应用,是为了同使用原生开发手段得到的 native 应用相区分。对混合移动应用的最终用户来说,其用户体验同原生移动应用几乎没有太大差别。

下图是 Cordova 官 上的架构图。图中上半部分橘色的 Cordova Application,即前端 Web 应用使用 Cordova 工具打包后的生成的混合应用。运行时,这个混合应用里的前端资源文件被加载,渲染并且运行在一个嵌入的 HTML Rendering Engine,即 WebView控件内部。这个嵌入的 WebView 通过 Cordova 框架提供的插件(Plugins),能够访问移动操作系统的 Native API,比如相机,陀螺仪,本地存储等系统调用。

首选使用命令行安装 Cordova:

npm -g install cordova:

然后新建一个文件夹,进入该文件夹内部,使用命令行创建一个新的 Cordova 项目:

cordova create JerryUI5HelloWorld

使用命令行添加对 Android 平台的支持:

cordova platform add android

将完成开发的 UI5 应用拷贝到 Cordova 项目根目录下的 www 文件里,然后执行命令行 cordova prepare,根目录下 www 文件内的资源自动被拷贝到 platforms/android 文件夹内。

最后使用命令行 cordova compile 进行打包,生成的针对 Android 平台的混合移动应用的 APK 文件,就出现在文件夹 platforms/android/build/output/apk 里了。

Cordova 有着极佳的可扩展性,即 Cordova 的官方架构图里提到的 Custom Plugin,自开发插件,如下图红色高亮区域所示。

假设我们需要开发的混合移动应用,需要使用到 Android 系统一些硬件设备比如陀螺仪。传统的 Web 应用里是无法通过 JavaScript 代码直接调用移动操作系统提供的原生 API,因此需要开发 Custom Plugin,作为沟通 Cordova 混合移动应用中的 JavaScript 代码和 移动操作系统中原生 API 的桥梁。

成功安装插件管理器后,用它创建一个 Custom Plugin:

命令行:plugman create -name Adder -plugin_id jerry.adder -plugin_version 1.0.0

进入 Adder 文件夹,为该插件添加对 Android 平台的支持:plugman platform add –platform_name android

完成 Custom Plugin 开发之后,为其创建一个 package.json 文件:

plugman createpackagejson ./

最后使用命令行将开发好的 Custom Plugin,安装到混合移动应用中。

cordova plugin add Adder。

一切正常的话,能看到 BUILD SUCCESSFUL 的提示,意味着该插件可以被 Web 应用的 JavaScript 代码消费了。

JavaScript 调用代码里传入的 action 名称 performAdd, 必须和 Custom Plugin 实现 Java 代码里接收的 action 名称保持一致。Custom Plugin 的执行结果,通过上图代码里的 success 回调函数,返回给 JavaScript 调用端。

上图代码我在 JavaScript 代码里传入了 10 和 20 作为加数,传递给 Custom Plugin,在手机上运行这个混合移动应用,得到了加法器的计算结果 30.

基于 SAP BTP 平台 Mobile Service 的移动应用开发

随着云时代的到来,SAP 也推出了自己的云原生应用开发平台:SAP 业务技术平台(SAP Business Technology Platform,下文简称 SAP BTP).

SAP BTP 将智能企业应用程序与数据库和数据管理、分析、集成和扩展功能整合到一个平台中,适用于云环境和混合环境,包括数百个用于 SAP 和第三方应用程序的预构建集成。

SAP BTP Service Marketplace 里提供了各种类别开箱即用的服务,其中之一就是 Mobile Service,其底层基于 NativeScript,一个使用 JavaScript 构建原生移动应用的开源框架:

业界另一个流行的框架 React Native,构建出的是一个真正的原生移动应用,其使用的基础 UI 组件与用 Object C或 Java 编写的原生移动应用相比并无差异,只不过 React Native 应用里的 UI 组件,是由 Web 开发人员通过 JavaScript 语言和 React 进行操纵,最后被编译器转换成原生组件罢了。

我们登录 SAP BTP 控制台,在 Service Marketplace 里找到 Mobile Services,点击 Support 进入服务控制台:

维护应用的 ID 和 Name 字段:

这些 Features 可以理解成 SAP 对企业级移动应用所需满足的最基本功能集合所抽象出的一些最佳实践。根据项目实际需要分配 Features 之后,我们用WebIDE生成的移动应用工程项目,将自动包含对应的模板实现。

其中一个名叫 Mobile Sample OData ESPM 的 Feature,扮演的是类似 UI5 开发中 Mock Server 的角色,可以让移动应用在开发过程中,不需要连接远端的 OData 服务实现。ESPM 即 Enterprise Sales Procurement Model 的缩写, 包含 SalesOrder,Customers,Products 等一系列业务数据的集合。

给移动应用分配好需要的 Features 之后,打开 SAP WebIDE,启用 Mobile Service Development Tools这个扩展:

创建一个新的 MDK 项目:

在 Application ID 下拉菜单里,选择刚才在 Mobile Service 控制台里创建并分配了 Features 的应用 ID com.sap.jerry.demo:

如何将这个 WebIDE 里的移动应用工程,部署到 Android 设备上呢键菜单里选择 MDK Deploy and Activate:

WebIDE 控制面板里打印出部署成功的消息:

SAP WebIDE 里创建的 MDK 项目,生成的实际是 JSON 格式的元数据。使用 Android 移动设备上的 SAP Mobile Services Client 连接 SAP BTP Mobile Service 后,前者会从 Mobile Services 接收这些元数据,绘制出 Android 原生应用的 UI,完成初始化动作。

笔者使用的 Android 手机,安装 SAP Mobile Services Client 后,扫描二维码,弹出登录提示窗口。输入 SAP BTP 的用户名和密码登录:

SAP Mobile Services Client 会连接 SAP BTP Mobile Service,下载 WebIDE 里生成的 JSON 格式的应用元数据并完成应用初始化操作。

总结

如果您的公司也在开发面向企业级用户的移动应用,并且具有原生移动开发技术能力很强的团队,能够承受分别为 iOS 和 Android 二者维护两套不同的代码线,那么当然可以选择原生移动开发的技术路线。

如果移动应用的需求里对移动操作系统原生 API 的依赖不高,并且希望充分利用开发团队的 Web 开发技能,或者不希望为不同的移动平台分别维护不同的代码线,则可考虑选择基于 Cordova 的混合移动应用技术路线。

如果企业本身就已经在采取 SAP BTP 同其他 SAP 应用进行集成,愿意直接重用 SAP BTP Mobile Services 提供的众多开箱即用的 Mobile Features,可以考虑采取 SAP BTP Mobile Services 来进行移动应用开发。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91537 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月22日
下一篇 2022年1月22日

相关推荐