使用 Open Connector 进行 HubSpot 和 SAP 系统的集成工作
![使用 Open Connector 进行 HubSpot 和 SAP 系统的集成工作](https://static001.geekbang.org/infoq/05/0544935f304b35bf5b3127ae4c159001.png)
HubSpot 是一个微型的 CRM 解决方案,麻雀虽小,五脏俱全。大家可以使用邮箱免费注册然后体验。
![](https://static001.geekbang.org/infoq/cf/cfeb86bf963d7807f68f89d555989d42.png)
从登录进去后的主页菜单能看出,一个 CRM 系统的三大核心模块 Sales,Service 和 Marketing,HubSpot 都具备。
![](https://static001.geekbang.org/infoq/db/dbfd5fe5fae284a3f5c90ed064d451c7.png)
之前 Jerry 陆陆续续介绍过一些 SAP 系统同第三方解决方案集成的技术:
一些SAP Partners能够通过二次开发实现打通C/4HANA和S/4HANA的方法介绍:通过 C4C 的 Event Notification 功能,每当 C4C 的销售订单创建时,都会通过事件通知机制,调用 S/4HANA 注册的事件处理函数,把这个订单同步到 S/4HANA 去。
以上四篇文章均围绕如何使用 Kyma Lambda Function 来扩展 SAP 产品或者客户的 legacy 系统来介绍的。
SAP云平台上的ABAP编程环境里如何消费第三方服务:这篇文章的标题就已经很好的诠释了文章内容了。
给用过SAP CRM中间件的老哥老姐们讲讲SAP CPI:通过 SAP Cloud Platform Integration 调用第三方 OData.
本文介绍另一种集成方式同第三方应用进行集成:SAP API Management Service + SAP Open Connector. 第三方应用选择的是 HubSpot. 我们将开发一个 SAP UI5 应用,通过这种新介绍的方式在 UI5 应用里显示 HubSpot 系统里的 Company 数据。
大家也许会问,这个常规需求,我直接在 UI5 应用里编程,直接调用 HubSpot 的 Restful API,不是一样也能实现么?
SAP 官网给出了使用 Open Connector 能享受到的收益,比如借助 SAP 在云平台上预置的连接器,能够减少集成的开发时间,降低集成复杂度,提高开发效率等等。
![](https://static001.geekbang.org/infoq/96/9615980536b7be7389ab61a49e5291f7.png)
而 SAP 云平台上的 API Management Service,对通过 Open Connector 连接的 API 提供了企业级的 API 操作方式和统一的生命周期管理。
![](https://static001.geekbang.org/infoq/82/82df3f2b5af2b53074cc0da5da0b14d4.png)
下面是集成的具体步骤。
进入 SAP Open Connector 首页,点击 Connectors:
![](https://static001.geekbang.org/infoq/da/dac05d9606cece992e4e2b07a55bdee5.png)
这个列表里就是 SAP 官网上介绍的 pre-built 的第三方 CRM 应用的连接器。
![](https://static001.geekbang.org/infoq/1d/1dafa1572a14f1a16e3fe67c26b88df0.png)
我们从列表里找到火锅,哦不对,找到 HubSpot:
![](https://static001.geekbang.org/infoq/80/80ef485299f2391fb8770475f6e89172.png)
点击 Authenticate, 建立 SAP Cloud Platform 同 HubSpot 的安全连接:
![](https://static001.geekbang.org/infoq/f2/f271cd7cd9eb5f13540eecd6c85664a9.png)
创建一个 HubSpot 的连接器实例,这里需要填一个 API key:
![](https://static001.geekbang.org/infoq/aa/aaaa63c8dc244a24cb87e41fc7315307.png)
到 HubSpot 的 settings 页面创建一个 API key:
![](https://static001.geekbang.org/infoq/0f/0ffdd15c43e50bc76a01667d56f668f9.png)
实例创建完毕后,就能在 SAP 云平台环境里通过这个实例消费 HubSpot 的 Restful API 了。
![](https://static001.geekbang.org/infoq/84/84a5ba683ecbbfb886b75b00c60f978c.png)
![](https://static001.geekbang.org/infoq/46/46afeb8f65374ec58f5893f47de54300.png)
Open Connector 的控制台里,还有这种叫做 Common Resources 的模型,有什么用处?
![](https://static001.geekbang.org/infoq/32/3247fd31f64d48e4bd9352c6d39f643b.png)
看帮助文档:"提供了一个预先配置好映射关系的通用数据接口,能够将通过 Connector 连接的不同 CRM 服务的数据通过简化的模型返回"。
![](https://static001.geekbang.org/infoq/94/942b0d79c0020a1a86a8164f4c76fa97.png)
看具体的例子。我在 HubSpot 里创建了两个 Companies:
![](https://static001.geekbang.org/infoq/d1/d194e9664b4fa145ce06edb579fcdf41.png)
如果直接消费 HubSpot 的 API,请求的 url 如下:https://api.hubapi.com/companies/v2/companies/paged?hapikey=<your API key>&properties=name&properties=website
![](https://static001.geekbang.org/infoq/b8/b8e6d6a4219540e9b3a6840f07b4cb5c.png)
尽管我们通过 url 参数只请求了 name 和 website 两个字段,从响应数据结构中可以发现,HubSpot 除了返回这两个字段的值以外,还包含了一些控制字段信息,比如 timestamp, source, sourceId 等字段,而我们对这些字段不感兴趣。
![](https://static001.geekbang.org/infoq/74/74d09650321111ad1f798432e6547d91.png)
现在就是 Common Resources 派上用场的时候了:
![](https://static001.geekbang.org/infoq/47/47f4a83b8df05df05c7a8107060c4ee8.png)
这个 Common Resources 起的作用好比 ABAP 里的 simple transformation,可以根据预定义好的 mapping 规则,对 HubSpot API 返回的数据进行一些“变形”,移除一些我们应用不关心的字段。
点击 Send 按钮,从 Transformed Response 里观察到通过 Common Resources 处理后的数据:
![](https://static001.geekbang.org/infoq/4a/4a8fac9b43857dc25282f2e2775bb0df.png)
现在这个数据看起来是不是清爽多了?这也就是我们 UI5 应用期望消费的数据。
![](https://static001.geekbang.org/infoq/fb/fb12abf1dd9d79a9a415e2c60696ec50.png)
如果对标准的 Common Resources 预置的映射处理规则不满意,还可以把标准的 Resource 克隆出来,然后在上面做修改。下图是我自己修改过的两个 Resources 模型。
![](https://static001.geekbang.org/infoq/47/4755a08ebb5395691c0b6dc437c15610.png)
Connectors 至此就开发完毕了,实际上我们连一行代码都没写,准确地说是配置完毕了,这也证实了 SAP 官网提到的 Open Connector 给集成开发人员带来的便利。
有了 Connectors,但我们还没有生成可供 SAP UI5 应用消费的 endpoint,这部分工作交由 API Management Service 完成。
登录 API portal,将这个 API tenant 同之前创建的 Open Connector 连接起来,这个连接取名叫 jerry_openconnector_provider:
![](https://static001.geekbang.org/infoq/e6/e62882e99b47c0f8fa412bd72a89076c.png)
需要填的 Organization Secret 和 User Secret 在 Open Connector 控制台里获得:
![](https://static001.geekbang.org/infoq/4b/4bfaab232d8bfb626f2ae9f214f94946.png)
回到 API 界面,创建一个新的 API provider:
![](https://static001.geekbang.org/infoq/8f/8f207e4cf8dd337815eabd267e3192bf.png)
从下拉菜单里选择刚才创建的 jerry_openconnector_provider,
![](https://static001.geekbang.org/infoq/2f/2f67912b04232a3a3679f24a6201e9bd.png)
点击 Discover 按钮:
![](https://static001.geekbang.org/infoq/1f/1f5cdf5a5c74b3c03915e7182268af73.png)
就能自动检测出之前创建的 Open Connector 实例了。
![](https://static001.geekbang.org/infoq/a0/a01428e653a3a9a77b4240883f936194.png)
点击 Deploy 进行部署:
![](https://static001.geekbang.org/infoq/0c/0c3f1278dd1d28289479748c068414fe.png)
Deploy 之后,可以在 API portal 里根据 swagger 风格的操作方式来浏览通过 Open Connector 连接的 HubSpot API 了:
![](https://static001.geekbang.org/infoq/78/78d24e9257da39586eacb9b64fe0b34d.png)
现在我们已经有了一个可用的 API endpoint,通过它,我们的 SAP UI5 应用就可以访问 HubSpot 的 Restful API 了:
![](https://static001.geekbang.org/infoq/48/48ad15d59fa8b2c314ce95fe9e5f4f0c.png)
在浏览器里测试,确保通过这个 url 能够返回我们期望的数据:
![](https://static001.geekbang.org/infoq/fd/fd9e31b7c7a9db0b038b803e998e99e6.png)
最后一步,就是常规操作了,新建一个 SAP UI5 应用,在里面通过 JSON Model 访问之前 API provider 暴露出来的 url:
![](https://static001.geekbang.org/infoq/81/81ae0dea150e6dd947ec9cf7b6b9b0b4.png)
为了解决跨域问题,上面第 12 行使用了指向 API provider 的相对路径,通过 neo-app.json 里声明的 Destination 指向实际的完整路径:
![](https://static001.geekbang.org/infoq/1a/1a2220fd349b891c66023a10a4ee5c28.png)
在 SAP Cloud Platform 上创建这个名为 api_portal 的 Destination:
![](https://static001.geekbang.org/infoq/d5/d527d1e421d4098b61b6f638aa74e562.png)
一切就绪后,打开 UI5 应用,就能看到通过 API provider,经由 Open Connector 从 HubSpot 取回来的数据了。
![](https://static001.geekbang.org/infoq/19/19ab04f9d12d1c18f16840369de1c395.png)
这种通过 Open Connector 和 API Management Service 同第三方应用进行集成的方式,同 Jerry 文章开头回顾的几种方式,并无孰优孰劣之说。在实际的工作中,我们需要根据自己企业的实际情况,比如现有系统架构,开发部门的技术水平,项目预算等,灵活选择适合自己企业的集成方案。如果非要寻找一些通用的最佳实践,可以参考 SAP CTO 在各大会议上介绍的 SAP 云端编程模型(Cloud Application Programming Model)技术选型的决策树,来制定适合自己企业集成方案选型的决策树。
![](https://static001.geekbang.org/infoq/14/14ba038106c45dc285a4d33750cc650d.png)
感谢阅读。
总结
本文介绍了通过 Open Connector 将 Hubspot 和 SAP 系统做集成的详细步骤,使用 Open Connector 集成方式,借助 SAP 在云平台上预置的连接器,能够减少集成的开发时间,降低集成复杂度,提高集成开发效率。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/aea4fa265be6e47dce8e3ac3d】。文章转载请联系作者。
评论