一种经典的客户关系管理系统(CRM)订单模型的设计与实现(二)

简介: 一种经典的客户关系管理系统(CRM)订单模型的设计与实现

One Order API 的代码实现原理,实际上就是设计模式里的模板(Template)模式和观察-发布者模式的结合体。

我们学习模板模式的时候,有一个经典的例子,上帝通过模板模式主宰芸芸众生的生老病死。

33.png

我们每个人被父母实例化出来之后,只能被动地实现上帝在模板里定义好的四个方法:生,老,病,死,而不能够更改这个模板本身,比如调换这四个方法的顺序。即使是乔布斯,也没有办法给自己添加一个"永生"的方法。听起来很残酷,但这是事实。


那么,One Order框架里,作为One Order应用的上帝,定义了哪些模板方法?


事务码CRMV_EVENT,指定 BUS2000116, 执行:

网络异常,图片无法展示
|

得到下图列表。红色的第一列,就是前文提到的组成One Order模型的积木。蓝色的第二列,是这些积木对发生在自己身上的感兴趣的事件列表。从图中可以看到这些事件名称都是自描述的,比如AFTER_CREATE, BEFORE_CHANGE, BEFORE_DELETE等等。


第三列黑色的ABAP函数,就是这些事件的监听函数。


这些监听函数的后缀 EC 代表 Event Callback.

————————————————

版权声明:本文为CSDN博主「汪子熙」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/i042416/article/details/124761739


image.png

得到下图列表。红色的第一列,就是前文提到的组成One Order模型的积木。蓝色的第二列,是这些积木对发生在自己身上的感兴趣的事件列表。从图中可以看到这些事件名称都是自描述的,比如AFTER_CREATE, BEFORE_CHANGE, BEFORE_DELETE等等。


第三列黑色的ABAP函数,就是这些事件的监听函数。


这些监听函数的后缀 EC 代表 Event Callback.

35.png

借助上述框架,One Order应用的开发人员的开发工作就变得无比轻松:


(1) 通过搭积木的方式,定义出自己应用需要的One Order模型

(2) 实现模型里需要关注的事件对应的监听函数。


至于这些监听函数什么时候被调用到?应用开发人员完全不用操心。


由此我们能发现,One Order框架的实现,把编程复杂度从应用开发人员身上转移到了框架实现身上。


One Order框架内部的实现比较复杂。通常情况下,One Order框架的使用者只需要了解CRM_ORDER_READ, CRM_ORDER_MAINTAIN等API的用法即可。


One Order的API之一,为消费者提供修改操作的CRM_ORDER_MAINTAIN, 所有SAP标准支持的结构体都作为输入参数之一出现在参数列表里:

36.png

这种设计方法虽然让参数列表显得有点冗长,但是从另一方面看,也起到了自描述的效果, 确保API的使用者即使不阅读文档,仅凭浏览这些参数本身,就能大概了解该API到底支持One Order哪些数据的修改。


这也符合那份著名的来自 Google 的API设计最佳实践文档里提到的,好的API应该满足的条件之一:易学易用,自描述,不易造成误解。

image.png

SAP CRM 的部分功能迁移到 SAP S/4HANA后,部分实现做了一些改造,其中就包括One Order的改造。

37.png

为什么要改造?因为SAP CRM搬到了S/4HANA上,而S/4HANA的一个强大之处,即 S/4HANA在 SAP 历史上第一次实现了 OLTP 和 OLAP 的完美结合,即一套系统的唯一数据源,可以同时满足Transaction事务型应用和Analytics分析报表型应用的需要。

image.png而SAP CRM One Order没有改造之前的模型是无法和S/4HANA的上述特性匹配的。


改造之前,每个组成One Order模型最小粒度的结构体,都有自己独立的一张专属数据库表,命名规范一般是CRMD_加上结构体名。


这套底层存储模型如果原封不动地搬到S/4HANA里,在运行报表统计等应用时会出现性能问题——为了取出报表结果,后台需要在很多个结构体的存储表中做各种数据库表的内外连接操作。当参与连接操作的数据库表尺寸增长到一定数量级后,整个应用的性能表现不佳。笔者也参与了性能评测,最后我们决定对One Order的底层数据模型做改造。


因为留给我们从调研到改造的原型开发,再到正式开发一共只有八个月的时间,因此我们选择了一种代价最小,对One Order框架改动最小的方式。


首先我们抛弃了之前每个结构体拥有一张专属数据库表的做法,在 S/4HANA 里,每种订单类型只拥有两张表,一张存储抬头级别的数据,另一张存放行项目数据。之前散落在不同结构体表中的字段,如今统一维护在这两张表里。由于所有的字段都平铺在这两张表里,我们内部形象地称其为平坦表(Flattened Table)。


存储模型大大简化之后,我们基于这两张表再创建CDS view,让上层的报表应用消费。这样改造后简化的模型,能满足S/4HANA中OLAP应用的需求。


针对S/4HANA OLTP应用的改造,用一句话概括,就是我们采用设计模式里的适配器模式(Adapter), 在API与简化后的数据库表之间引入一个微型的中间件,扮演Adapter的角色。


当消费者通过One Order API进行读操作时,中间件负责把存储在简化后的数据表中的数据进行还原,再填充到One Order API上层的缓存中。对后者来说,它对底层存储模型发生的变化毫不知情,因为Adapter封装了底层数据读取的逻辑并做了格式转换,所以One Order API上层不需要做任何改动,也完全能够像在SAP CRM里一样正常运行。

image.png

而当消费者调用One Order API进行写操作时,在存储于各个结构体对应的缓存中的数据持久化到数据库之前,同样是Adapter负责把这些分散在不同缓存结构中的数据做一个合并,合并后的结构体再写入平坦表。

image.png

讲完了CRM One Order订单模型的设计,我们再来简单看看SAP Cloud for Customer的订单模型设计。


虽然SAP Cloud for Customer的后台对客户和Partners不可见,但我们仍然可以从合法渠道获得一些其订单模型的设计信息。


从SAP社区上这位SAP员工的回复,我们得知ESF2和BOPF有很多相似之处,设计理念类似,但ESF2主要用于部署在云端的产品,比如SAP Cloud for Customer上Business Object的开发,而后者主要服务于On Premises解决方案比如S/4HANA。


同之前介绍的SAP CRM One Order框架一样,通过BOPF实现的订单模型,同样由若干个结构体通过搭积木的方式组成,这些结构体如上图红色高亮区域所示,每个结构体也有自己的专属存储数据库表。而SAP CRM One Order里每个结构体的事件监听函数,采取的是 ABAP 传统的面向过程的函数实现,而BOPF则采取了实现指定接口的ABAP类,二者原理相同,只是实现细节有差异。


SAP C4C的订单模型,虽然和SAP CRM传统的One Order模型一样,每个结构体拥有一张专属的数据库表,但是在运行报表程序时并不会出现性能问题,这是怎么做到的?


答案是采用了TREX,一个专为只读报表应用优化过的存储仓库。换句话说,SAP C4C的事务处理和报表处理使用的是两套不同的存储系统,这一点和S/4HANA不同。

38.png

SAP Cloud for Customer的订单模型,在Cloud Application Studio里对客户和Partners是可见的,大家感兴趣的可以自行去查看。

39.png

总结

本文首先详细介绍了 SAP CRM 系统里订单模型的演进历史和设计原理,以及消费该订单模型的 API,接着介绍了这种模型迁移到 S/4HANA 系统时面临的挑战,以及笔者所在项目团队给出的迁移重构方案。最后将另一款云端 CRM 系统的订单模型进行类比,希望对工作于客户关系管理领域的读者能有所帮助。



38.png



image.png


image.png


36.png


目录
相关文章
|
2月前
|
存储 监控 数据挖掘
用CRM系统开启订单-回款自动化管理之旅
在现代企业管理中,CRM系统不仅是客户信息的存储库,更是提升运营效率的关键工具。通过订单到回款的自动化管理,CRM系统减少人为错误、提高响应速度、优化现金流。具体方法包括:订单管理自动化、回款跟踪自动化、财务与CRM集成、数据分析与报告,从而显著提升客户满意度和企业内部效率。CRM系统正成为推动企业持续发展的重要力量。
|
2月前
|
监控 搜索推荐
构建长期客户关系:CRM全周期销售管理指南
在现代商业环境中,CRM(客户关系管理)系统作为企业销售和市场营销的核心工具,通过全周期管理体系帮助企业从潜在客户识别、需求挖掘、销售转化到客户维护和再销售,系统化管理销售流程,提升销售效率和客户满意度。本文探讨CRM销售全周期管理体系的重要性、关键组成部分及如何通过数据驱动决策、自动化工作流程、客户洞察、团队协作和绩效监控等手段提升销售绩效,助力企业在竞争中脱颖而出。
|
3月前
|
存储 监控 数据挖掘
智能流程管理:CRM系统助力订单与回款自动化
在现代企业管理中,CRM系统不仅是客户信息的存储库,更是提升运营效率的关键工具。通过订单管理自动化、回款跟踪自动化、财务与CRM集成、数据分析及报告,企业能减少人为错误,优化现金流,提高响应速度,增强客户满意度。CRM系统的全面应用显著提升了企业的内部效率和外部竞争力,成为推动持续发展的重要力量。
|
3月前
|
安全 数据挖掘 数据安全/隐私保护
国产CRM品牌巡礼:系统品牌的核心优势与特色
本文深度解析国产CRM系统的四大知名品牌:销售易、神州云动、销帮帮和天衣云。 销售易:中国领先的CRM解决方案提供商,提供全渠道获客、智能化销售流程及AIGC技术应用,赢得500强企业信赖。 神州云动:以PaaS+SaaS模式、灵活定制和行业解决方案著称,支持企业实现客户关系管理的数字化和智能化。 销帮帮:面向中小企业的实用型CRM系统,提供销售跟踪、客户视图等功能,提高销售效率和客户满意度。 天衣云:专注于云端部署,提供快速部署、高安全性的CRM解决方案,确保企业信息安全。 各品牌各有特色,企业应根据自身需求选择合适的CRM系统,以实现客户关系的全面管理,提升业务效率和客户满意度。
|
4月前
|
搜索推荐 数据库 UED
CRM系统源码|客户管理系统源码开发
CRM系统通过提供个性化的用户体验、提高生产力、改善客户体验和增加销售额来助力企业成长。集成CRM能自动化数据输入,减少管理时间,提高销售代表的效率。此外,CRM还能增强客户互动,降低跳出率,增加透明度,确保整个公司的协调合作。
89 5
|
4月前
|
人工智能 搜索推荐 数据挖掘
2024国产CRM测评:探讨企业客户关系管理新利器
近年来,国产CRM系统迅速崛起,成为企业客户关系管理的重要工具。中国CRM市场快速增长,得益于企业对提高客户满意度、增强客户粘性和优化销售流程的需求。本土CRM厂商如销售易、神州云动、白码CRM等,凭借对本土市场的深刻理解、强大的定制开发能力和智能化功能,逐渐崭露头角,推动了国产CRM系统的广泛应用和发展。
|
4月前
|
机器学习/深度学习 人工智能 运维
电话机器人源码-智能ai系统-freeswitch-smartivr呼叫中心-crm
电话机器人源码-智能ai系统-freeswitch-smartivr呼叫中心-crm
176 0
|
5月前
|
机器学习/深度学习 人工智能 安全
精选CRM软件:顶级客户关系管理工具深度剖析
本文综合评测2024年顶级CRM工具,依据功能性、用户体验、集成能力、数据安全、客户支持及成本效益六大标准,深度剖析纷享销客、Salesforce、Microsoft Dynamics 365、用友CRM和SAP CRM等软件,为企业选型提供参考。
|
7月前
|
开发框架 人工智能 数据挖掘
2024年国产CRM软件排行榜:客户关系管理工具
CRM软件是企业数字化战略的核心,通过全渠道互动、客户细分和销售赋能提升竞争力。2024年,国产CRM软件凭借本土化优势、成本效益、政策支持和市场机会展现出强劲竞争力。销售易、白码CRM、悟空CRM、用友CRM、金蝶CRM、珍客CRM、八百客CRM和销帮帮CRM等名列前茅。选择CRM时需考虑本土化服务、技术兼容性和长期合作潜力等因素。随着国产CRM软件的崛起,企业应根据需求选择最适合的解决方案,实现客户关系管理和业务增长的优化。
|
7月前
|
搜索推荐
实现CRM与ERP系统无缝集成,优化客户关系管理
在当今竞争激烈的市场环境中,企业要想保持领先地位,必须高效地管理客户关系并优化内部资源。CRM(客户关系管理)系统与ERP(企业资源规划)系统的无缝集成,为企业提供了一种强大的工具,以实现这一目标
100 2