SAP Field Service Management 和微信集成的案例分享和实现介绍

简介: SAP Field Service Management 和微信集成的案例分享和实现介绍

SAP FSM(Field Service Management), 属于SAP C/4HANA五朵云里的Service Cloud.

本文介绍笔者在工作中经历过的一个项目,包含 SAP Field Service Management 同微信集成的一个场景的功能需求分析和详细的技术实现。

我们需要在微信里能够显示FSM的数据,比如FSM里的产品和客户主数据:

一种简易的方式就是使用FSM提供的Query API.

打开FSM官网的帮助文档:

https://docs.coresystems.net/dev-index.html


进入Query API的相关部分:

通过阅读文档,得知FSM Query API采用一种和Facebook Query Language,SAP Hybris Flexible Search和ABAP Open SQL类似的思路,即仿SQL语法的查询方式,从FSM系统里读取数据。


下图是Facebook Query Language的一个例子:

下图是SAP Hybris Commerce Flexible Search的例子:

ABAP Open SQL的例子我就不贴了,大家太熟悉了。

那么FSM的Query API如何使用呢?

登录FSM,点击Query API:

在弹出来的控制台里,输入类SQL语句:

SELECT bp FROM BusinessPartner bp

默认返回了前40条数据:

那么如何使用代码来触发Query API查询呢?官网上给出了一个基于nodejs的SDK,可以轻易实现用代码调用Query API的需求。

点击超链接后,会跳转到github的一个仓库:

按照帮助文档上的示例代码,将自己FSM系统里创建的API client对应的credential维护到代码里,得到一个CoreAPIClient实例。

ClientIdentifier和clientSecret等Credential字段的值,可以通过Admin标签页,新建一个Client后获得:

使用CoreAPIClient实例的query方法向FSM系统发起Query API请求,输入参数一为应用程序里拼接的类SQL查询语句,参数二为Data Transfer Object的名称,在帮助文档里能查到。

通过Visual Studio Code调试器观察上面这个API调用返回的结果。因为我的752和753行代码分别指定了Item和BusinessPartner的查询,因此API调用返回的响应是一个数组,其内两个元素分别包含了Item和BusinessPartner各前40条数据。

每个Item和Business Partner实例的明细在调试器里显示如下:

假设我们的场景是:希望在微信里能够浏览SAP FSM里可用的服务技师,如下图所示:

那么首先要设计一个Web应用,在该Web应用里通过第一篇文章介绍的方式,使用SAP FSM提供的nodejs SDK去调用API.

为此,我们开发了一个Vue应用,在Vue生命周期钩子函数mounted里,发起对SAP FSM employee(技师)数据的请求:

在我们微信里指定的时间段内,SAP FSM有三个可用的技师,其名称,用户评分,头衔,服务年限等数据通过FSM nodejs SDK返回给微信端,如上图微信开发者调试器里所示。


比如employeeID为2E9BC784D477CA3DD048E593D853CFF1的这条数据,可以直接在FSM里通过这个url查看:


https://de.coresystems.net/master-data-management/#/people/details/2E9BC784D477CA3DD048E593D853CFF1

这个Vue应用做好之后,部署到服务器上,生成一个url,我们假设为https://www.xxx.com/smart

如何将这个url和微信公众号绑定起来?

在微信公众号的自定义菜单里,创建一个新的菜单项“预约”,给它维护一个特定的url.

这样在手机微信里点击这个菜单,就会跳转到对应的url.

url格式:https://open.weixin.qq.com/connect/oauth2/authorize?appid=&redirect_uri=https%3a%2f%2fwww.xxx.com%2fsmart&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect

其中appid在微信公众号后台的公众号开发信息里获取:

而redirect_url后面的值,为web应用https://www.xxx.com/smart进行url encode后的值。

这一切设置好之后,从微信公众号菜单跳转到web应用的场景就能工作了。

如果想在本地模拟微信访问的方式调试部署到服务器上的Web应用,只需要安装微信开发者工具,将自己的个人微信号绑定到微信公众号的开发者微信号列表中去:

然后用个人的微信号扫码登录微信开发者工具,在地址栏里输入上述包含oauth 2.0重定义的那一长串url,点击Allow按钮:

就可以像使用Chrome开发者工具那样,对前端应用代码进行单步调试了:

下面我们采用“上门安装服务”这个场景来说明,假设客户购买了某公司的某产品,希望通过微信来预约某个时段的上门安装服务。


从微信公众号里点击“预约”按钮之后,我们开发的前端应用会自动定位出当前用户的地理位置:武侯花园人民政府,同样我们也提供了允许客户手动修改地址的功能,如下图预约地址字段尾部的字符2,就是Jerry为了测试手动修改的功能而故意添加上去的。

维护手机号和希望上门安装的具体时间段,然后就可以从下拉列表里选择该时间段内可以提供服务的安装技师。这里我们选择名叫李小刚的技师:

点击确定按钮,运行在微信里的前端应用就通过我们开发的后台服务,向SAP FSM发起API调用。

先看最后的结果:我们在微信里收到了公众号推送的通知消息,告诉我们预约已成功。

点击这条消息可以查看预约详情:

待李小刚动身前往客户途中,我们还能在微信里查看李小刚的实时位置共享信息,这是通过SAP FSM提供的技师位置服务加上我们的少许自开发实现的效果。

我们在微信开发者工具里重复上述步骤,观察请求明细:

这个url指向我们开发的一个后台服务,/ticket/后面跟着的一串数字与字母组合是Jerry的个人微信open ID,13911111111是我预约时留下的手机号,手机号后面一长串包含%的片段,是预约时留下地址经过url encode后的结果。

请求正文里包含了微信里填入的全部预约信息,和李小刚在FSM里的GUID. CustomerID,则是前端应用通过我的微信open ID调用微信API获取到的昵称,Jerry Wang. “上门安装机械臂”,是我们为了demo方便,硬编码的一个预约标题。

API调用成功后,返回一个ID给消费端,这个ID代表了SAP FSM里成功创建的预约记录。

下面我们到SAP FSM里根据这些GUID,去详细查看API到底在系统里生成了哪些记录。


首先, 如果一个微信用户在SAP FSM里不存在对应的Business Partner记录,是无法进行业务流程的,因此我们的后台服务实现里,会首先检测该微信用户在SAP FSM里是否存在对应的BP记录,如果没有,就自动创建一个。


下图是Jerry的个人微信号在SAP FSM里生成的对应BP记录,Additional name即是我微信号的open ID,我们的原型开发里,通过微信号的open ID同SAP FSM BP模型的Additional name这一对字段来维护微信用户和SAP FSM BP一一对应的关系。这个BP的ID为36,记录下来后面会用到。

而我们在微信预约页面选择的技师李小刚,在微信开发者工具里观察到其GUID为2E9BC784D477CA3DD048E593D853CFF1,这也正是李小刚在SAP FSM里的明细页面列表url的片段之一:

而SAP FSM API返回的ID:B0555705B9EC41009739D0111E16CC91,在系统里实际上是一条Service Call记录的GUID,这条Call的ID为175,服务的客户ID是Jerry Wang,Code为36,即前面提到的基于微信号open ID自动创建的客户记录。


这个Service Call有一个同名的Activity,编号为205.

在SAP FSM的Activities页面可以查到这条编号为205的记录,其所属的Service Call为175,即上图显示的Call内容。

Service Call和Activities创建之后,调度员就可以相应地派工,然后李小刚就可以动身出发了。下图显示的李小刚在系统中被分配了多个安装任务,这是Jerry反复测试时创建的数据,其中任务显示上标有的白色小旗,代表任务已完成。

调度员选择一条我刚刚在微信里创建的预约,点击Release Assignments, 即可完成派工。

在我们的后台服务实现里,使用SAP FSM nodejs SDK,依次调用了Service Call,Activity的创建API来创建对应的记录。同时安装技师和安装任务的分配关系,是通过创建一个新的ServiceAssignment对象来维护的。这三个API的说明在SAP FSM官方网站上有文档:

https://docs.coresystems.net/dev-index.html

总结

本文首先简单介绍了 SAP Field Service Management 的技术架构和 Restful API,接着详细分享了笔者工作项目中一个实际的通过 SAP FSM API 将其通过微信集成实现的智能服务场景案例。

相关文章
|
5月前
|
Java API 网络架构
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码
173 0
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
|
7月前
|
存储
SAP Emarsys 和 SAP Spartacus 的集成
SAP Emarsys 和 SAP Spartacus 的集成
51 0
|
3月前
|
机器学习/深度学习 人工智能 监控
SAP Sales Cloud,Service Cloud 和 SAP BTP 平台上的 AI 集成场景
SAP Sales Cloud,Service Cloud 和 SAP BTP 平台上的 AI 集成场景
67 0
|
5月前
|
项目管理 计算机视觉
软考系统集成知识精讲第九章项目成本管理(选择4分,案例13分)
软考系统集成知识精讲第九章项目成本管理(选择4分,案例13分)
|
5月前
|
XML Java API
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码2
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码
154 0
|
5月前
|
消息中间件 Java Docker
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码1
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码
168 0
|
6月前
|
数据库
关于 SAP BMBC 批次查询结果 BADI - BIC_ADDITIONAL_DATA 的案例
关于 SAP BMBC 批次查询结果 BADI - BIC_ADDITIONAL_DATA 的案例
57 0
|
6月前
|
数据管理 API
什么是 SAP Commerce Cloud 集成扩展包
什么是 SAP Commerce Cloud 集成扩展包
22 1
|
7月前
|
JavaScript 容器
SAP UI5 控件聚合属性 Aggregation 的概念和具体使用案例
SAP UI5 控件聚合属性 Aggregation 的概念和具体使用案例
35 1
|
7月前
SAP 电商云 Spartacus UI 和 CPQ Configurable Products 的集成
SAP 电商云 Spartacus UI 和 CPQ Configurable Products 的集成
66 0