共计 3856 个字符,预计需要花费 10 分钟才能阅读完成。
SAP FSM(Field Service Management), 属于 SAP C/4HANA 五朵云里的 Service Cloud.
本文介绍笔者在工作中经验过的一个我的项目,蕴含 SAP Field Service Management 同微信集成的一个场景的性能需要剖析和具体的技术实现。
咱们须要在微信里可能显示 FSM 的数据,比方 FSM 里的产品和客户主数据:
一种繁难的形式就是应用 FSM 提供的 Query API.
关上 FSM 官网的帮忙文档:
https://docs.coresystems.net/…
进入 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/ma…
这个 Vue 利用做好之后,部署到服务器上,生成一个 url,咱们假如为 https://www.xxx.com/smart
如何将这个 url 和微信公众号绑定起来?
在微信公众号的自定义菜单里,创立一个新的菜单项“预约”,给它保护一个特定的 url.
这样在手机微信里点击这个菜单,就会跳转到对应的 url.
url 格局:https://open.weixin.qq.com/co…<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/…
总结
本文首先简略介绍了 SAP Field Service Management 的技术架构和 Restful API,接着具体分享了笔者工作我的项目中一个理论的通过 SAP FSM API 将其通过微信集成实现的智能服务场景案例。