Jerry年参加SAP成都研究院校园招聘会时,曾经听在研究院里实习过一段时间的两位教研室同学介绍过,进入SAP之后,咱们大学学习和研究生阶段做项目用的C/C++就用不上了,得从头学习一门全新的编程语言(详情参考Jerry之前的文章:我是怎么和SAP结缘的-Jerry的SAP校园招聘之路)。
后来,Jerry年1月进入SAP成都研究院报道才知道,那门语言叫做ABAP.
那个时候,整个成都研究院的开发人员,几乎都在围绕着同一个SAPSaaS软件进行开发工作:SAPBusinessbyDesign.
一晃十多年过去了。今天,SAP成都研究院小伙伴们,使用的技术栈早已突破了ABAP的限制,可以说目前IT业界使用的所有主流编程语言,在SAP成都研究院的开发项目里都能找到它们的身影。
这十多年间,我也亲身见证了SAP编程技术演进的历史。Jerry之前的文章,SAPUI和SalesforceUI开发漫谈,简单回顾了SAP前端开发几代技术的演进历史,按照诞生的日期早晚,依次罗列如下:
SAPGUI+DynproSAPABAPWebDynproSAPWebClientUISAPFiori(poweresbySAPUI5,orotherFioriFundamentals)
早在年SAPFiori1.0诞生之初,SAP就在官方社区上向生态圈内的从业者宣布,Fiori将会是未来SAP主流产品使用的UI设计语言和用户体验准则(UserExperienceGuideline).Jerry以前的同事周帅,曾经写过一篇文章,SAP成都C4C小李探花:浅谈FioriDesignGuidelines,概要介绍了SAPFiori的前世今生和其在SAPCloudforCustomer中的应用。
Fiori是一套界面设计风格的规范集合,在诞生之初,配套的前端实现框架仅仅只有SAPUI5这一种选择。近些年来SAP技术一直在朝着拥抱变化,拥抱开放的方向发展,于是就有了SAPFioriFoundamentals,能够让会用React,Vue等非SAPUI5框架的前端工程师们,使用他/她们熟悉的前端开发技术,依然同样能开发出具有FioriUX的应用出来。
而SAPUI5WebComponent,是SAP将之前SAPUI5控件库里的控件,按照WebComponents标准规范重新实现并封装后的产物。
一个传统的基于SAPUI5的应用,其XML视图里,声明一个Button控件的用法,见下图第二行:
SAPUI5WebComponents可以用在任何前端框架里,比如React,Angular,Vue和未使用任何框架开发的简单HTML页面。下图是一个简单的HTML页面,使用SAPUI5WebComponents定义的Button控件位于第17行。
关于更多SAPFioriFoundamental和SAPUI5WebComponents的介绍,请参考Jerry的文章:
SAPFiori+Vue=?FioriFundamentals和SAPUI5WebComponents用React开发SAPFiori应用
在Jerry刚进入SAP行业的那个年代,Partners如果要进行二次开发,手段相当有限,无非直接在ABAPOn-Premises系统上做增强,或者在第三方系统上,通过WebService或者RFC消费SAP系统暴露出的API.详情请参考Jerry的文章:SAPAPI开发方法大全。
随着SAP云平台的问世,极大地丰富了Partners进行二次开发的技术手段。ABAP也加入了云环境的大家族,正式成为了SAP云平台编程环境之一。而越来越多的来自开源社区的技术,诸如Docker容器,Kubernetes等等,也在逐渐渗透进SAP标准产品的开发中去。
这些新出现的技术,深刻影响到了咱们的客户们使用SAP产品的习惯和方式。上世纪末,把SAPGUI玩得烂熟的那些资深SAP老前辈们,绝对不会意识到,未来的十几年后,SAP应用可以在掌中一部几英寸大的移动设备上,仅仅凭借指尖触碰就能访问。技术的更新换代也给SAP开发人员提出了更高的要求,我们唯有保持接受变化的开放态度,根据客户的实际需求,更新自己的技能库,方能跟上时代的步伐。
SAP技术的这些更新换代,唯有SAP生态圈的人士才能够感知。同理,现代医学手术方式的改进,普通人也绝不会知晓,除了两类特殊人群:医生和病人。
Jerry就是属于开颅手术技术更新换代的受益者。
传统开颅手术的历史非常悠久,如同SAPGUI开发技术在SAP开发领域中享有的悠久历史一样。
我国第一台成功的开颅手术实例,发生在年前,证据来自国内考古学家和医学家们对一具出自大汶口文化遗址的成年男性头骨鉴定。根据史前考古学文化谱系和碳14年代数据分析,出土这个头骨的墓穴年代属于大汶口文化中期,距今约至年。
考古人员发现该头骨右侧顶骨后部有一直径为3.1X2.5厘米的圆形穿孔,圆孔边缘呈光滑均匀的圆弧形。医学专家对该头骨进行了人体标本观察、X线摄片、螺旋CT扫描及三维图像重建,观察到该圆孔上有人工用锐利工具刮削的痕迹。神经外科专家断定:这显然是做过手术的痕迹。中国科学院相关专家认为:这种开口边缘的圆弧状属自然修复,只有在极精细的修饰和骨组织修复后才能形成,表明此人手术后依然存活了很长一段时间。因而,这一史前外科开颅手术是成功的。
那么在现代,一台传统开颅手术的主要步骤是什么?
下面Jerry从一个病人的角度出发,试着把自己了解到的知识以教程的方式写出来:
(1)在头皮上标注出要下刀的切口线,下一步需要沿着这些切口线用刀将头皮切开。这一步好比程序员要动手开发一个feature之前,先去一趟厕所,端一杯咖啡到座位前。
(2)将头皮消毒后,使用无菌敷料覆盖。对切口线局部的组织进行麻醉。这一步类似我们准备在各种IDE和命令行里利用向导,生成项目的模板-我们还未真正开工,只是术前(编码前)的热身动作。
(3)切开头皮,头皮边缘使用医用头皮夹进行固定。这一步相当于程序员在命令行窗口里输入命令行并敲回车键。
(4)将切开的头皮沿外分离,暴露出颅骨。关于颅骨的构造和组成部分,Jerry之前的文章曾经简单介绍过:医院发的纸质版手术记录......
在头皮和颅骨之间还有一个中间层即骨膜,好比SAPERP和SAPCRM中间的Middleware.将骨膜切开,使颅骨充分暴露出来。
(5)开颅开颅,拿什么工具开?
我们八零后上小学时,学过一篇课文《种子的力》,部分内容节选如下:
有人问:世界上什么东西的气力最大?回答纷纭得很,有的说象,有的说狮子,有人开玩笑似的说,是金刚。金刚有多少气力,当然大家全不知道。结果,这一切答案完全不对,世界上气力最大的是植物的种子。一粒种子可以显现出来的力,简直是超越一切的。这儿又是一个故事。人的头盖骨结合得非常致密,坚固。生理学家和解剖学家用尽了一切的方法,要把它完整地分开来,都没有成功。后来忽然有人发明了一个方法,就是把一些植物的种子放在要剖析的头盖骨里,给与温度和湿度,使种子发芽。一发芽,这些种子便以可怕的力量,将一切机械力所不能分开的骨骼,完整地分开了。
所以,开颅的工具是种子?那样的话,病人早就凉了。
是时候亮出装备了。这把粗壮的钻头,就是神经外科医生在病人颅骨上打孔的工具,学名叫做气动开颅钻。Jerry的手术因为是经鼻做的,需要钻孔的蝶骨骨质远远不如颅骨坚硬,所以在我颅骨上使用的高速磨钻的身材远远比气动开颅钻要秀气。
使用气动开颅钻在头盖骨上钻孔:
钻孔完毕后,使用铣刀插入钻好的孔,将颅骨骨瓣铣出来。
现在颅内的脑组织只剩最后一层保护膜了:硬脑膜。
同样切开硬脑膜之后,脑组织就暴露在我们面前了。现在好比程序员在命令行向导生成的一大堆代码里,找到了我们需要书写业务逻辑的那个方法。剩下的工作就是业务逻辑的编写:颅内病灶该切的切,该留的留,该保护的保护,该减压的减压。
(6)业务逻辑书写完毕之后,该进行收尾工作了。回忆一下之前的操作,在接触到颅内的核心逻辑时,我们按顺序进行了下面的操作:
切开头皮切开骨膜钻孔后,铣刀剥离骨瓣切开硬脑膜
把这些操作想象成放入一个先进后出的堆栈里,那么手术收尾就是一个出栈的操作:先执行栈顶的操作,即缝合硬脑膜,然后将剥离的骨瓣用铣刀重置到原位:
接下来缝合骨膜:
此时栈里只剩下头皮一个部位的操作了。将切开的头皮进行缝合:
Done!
头皮缝合之后,外观看起来是这样的:
希望大家在阅读了这篇文章后能有所收获,感谢阅读。
更多阅读
这个系列之前的文章列表:
可能要暂时停更一段时间,希望时间不会太长一个中年程序员遇到突发情况的一些胡言乱语对程序员来说,看透生死远远没有操作0和1那么简单医院人生百态今天,我要在睡梦里,和死神握握手经鼻开颅手术成功了,Jerry脱离了生命危险脑部手术成功,只是万里长征走完了第一步一个程序员经历的7小时全身麻醉医院发的纸质版手术记录......“Z医生,我明天的手术,成功率有多高?”