使用 SAP 云平台 Runtime 集成 Ariba 与企业微信
如今的 SaaS 市场内,提供私有定制化服务的厂家越来越少,不仅是因为企业定制化需求需要巨大的人力物力来实现,且同时还因为这些需求各有不同,难以复用,这也是为什么 SAP 云平台的愿景之一就是专注于加速 SaaS 功能拓展的研发,让企业可以快速安全的开发自己需要的定制化功能。
想做拓展,放在核心系统里又不能开放,放在公网又不想从零开始搭建安全,身份,运维一大堆系统?SAP Cloud Platform 帮助您快速搭建一道连接企业内外的桥梁。
本文将为您介绍如何使用 SAP 云平台 Application Runtime Service 来将 Ariba 系统的审批流拓展到企业微信内。
前期准备
在开始之前,请先确保:
-
您在 SAP 云平台上已有全局账号并可以使用 Cloud Foundry 环境
-
您在 SAP 云平台上已经订阅 Identity Authentication Service 和 Application Runtime Service
-
您拥有 Ariba 系统的相关 API 接口信息
-
您在企业微信里您的组织内拥有管理员权限
审批流流程分析
具体步骤
第一步: 在企业微信内创建一个新的应用
并请记录下来此 App的 AgentId 和 Secret。
参考文档:
第二步: 在本地创建一个 UI5+NodeJS 应用,将 NodeJS 的后端与 Ariba 系统审批流API调通,以获取审批流的信息,并将企业微信应用的 API 调通以连接上终端用户
在这个例子中,请各位开发者先使用 Postman 在本地调通 Ariba API。
API 文档:https://api.sap.com/api/approval/resource
需要使用到的 API 接口包括:
-
为了获取访问权限,获取凭证的 API
-
为了防止访问凭证过期,刷新凭证持续时间的 API
-
查询待处理请购单的 API
-
获取指定请购单细节的 API
-
对指定请购单发出审批动作的 API
注:各 API 的试用都可以在 API Business Hub(api.sap.com)中找到。
然后再按顺序在 NodeJS 后端对各个API进行调用。
在这里,由于连接的是 Ariba 云系统,所以只需通过 API 形式的集成,就已经可以完成功能;但是如果公司的核心系统部署在本地,您还需在本地部署一个简单的云连接器,以便将本地系统的部分数据以 OData 的形式安全地暴露给云平台。
第三步: 前端使用 Fiori 风格的 Master-Detail 控件来实现对请购单详细信息的多平台展现
参考文档:
https://sapui5.hana.ondemand.com/
Fiori 风格自带的多平台适应功能可帮助您在移动设备上保持一致的界面和用户体验,即使设备规格不同也没有关系。
Fiori 参考资料:
https://experience.sap.com/fiori-design/
第四步: 将后端与企业微信内新建的 App 的 API 调通
类似于第二步先在Postman调通企业微信API。
API 文档:
https://work.weixin.qq.com/api/doc/90000/90003/90487
需要使用到的 API 接口包括:
-
为了获取访问权限,获取凭证的 API
-
为了防止访问凭证过期,刷新凭证持续时间的 API
-
向指定应用,指定用户组,指定用户发送消息/链接的 API
参考文档:
https://work.weixin.qq.com/api/doc/90000/90135/90236
随后再按顺序在 NodeJS 后端对各个 API 进行调用。
此时在本地运行的 NodeJS 应用就已经可以联通 Ariba 和企业微信了,但是这个应用提供的审批拓展网页还不能暴露到公网,需要相对应的公网域名,安全措施,身份管理等功能才可以操作,而这些与业务功能相关不大,对整个拓展却同等重要的方面,比如安全措施,身份认证,这些问题往往才是阻拦拓展快速上线的拦路虎。
第五步 : 将 Ariba 系统内的身份账号与 SAP 云平台 Identity Authentication Service 相连接起来,并在 NodeJS 的后端增加身份验证部分
说到身份认证,给大家最大的困扰往往不是密码有多长,多久需要更换新密码,往往是有太多不同系统的密码要记住,而如果一个拓展还需要单独设置一套密码,那么就大大降低了这个拓展的价值,为了解决这个问题,SAP云平台提供的身份管理服务可以让您的拓展直接连上您公司的身份系统,一个密码,多处通用。以下是实现步骤:
-
获取服务提供者元数据 XML 文件
-
创建一个自定义应用程序以将其用作 SAML2.0 服务提供者。使用控制台 URL 访问 Identity Authentication 的租户管理控制台
-
配置使用 SAP Cloud for Customer 作为服务提供者的 SAML 2.0 信任
-
在 Identity Authentication 上配置身份联合
具体步骤操作流程请见参考文档:
https://help.sap.com/viewer/462e41a242984577acc28eae130855ad/Cloud/en-US/5e9e996add534a508d0afe1a341de2ac.html
通过这一步,我们就实现了对本应用的权限控制,并且可以轻松的连接上公司内部的身份提供商,一个密码通用于公司系统以及SAP云平台,避免了另外运营一套身份系统的复杂性;如果您公司的身份系统支持 OAuth 协议,还可以将企业微信和 SAP 云平台上的拓展,以及其他系统的单点登录打通,只需登录一处,进入其他系统就不再需要密码,大大减轻了员工记忆,输入密码的负担。
关于于单点登录的介绍:
https://www.sap.com/documents/2015/06/5c8f9989-5b7c-0010-82c7-eda71af511fa.html
第六步: 将之前在本地创建的应用上传到 SAP 云平台的 Application Runtime Service 中持续运行
参考文档:
https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/772b45ce6c46492b908d4c985add932a.html
*注意:在 Cloud Foundry 上部署应用程序时,cf push 始终在 manifest.yml 所在的目录中执行。
现在,我们就实现了暴露在公网的一个网站,同时还拥有 SAP 云平台提供的安全措施,弹性运维等功能,也就实现了一个安全,健全的 7*24 小时不停机运转的 Ariba 企业微信拓展。
基础架构
总结
通过上述步骤,您就拥有了一个独立在 Ariba 系统之外,且连接了 Ariba 和企业微信的拓展应用,这个应用有以下好处:
-
将 Ariba 系统内的功能安全快速的拓展到企业微信内
-
无需运维的同时拥有健全的安全机制,以及按需求弹性变化的网络资源
-
维持核心系统的纯净,未来的系统升级将不再会被大量的自定义拓展所干扰
-
具备将更多系统、更多商业流程集成进来的快速响应能力,从而实现更多的功能拓展,例如到货后触发财务系统发出货款的审批流,也同样可以拓展到企业微信里来