抽象的艺术 - Business Platform

简介: "Art,古希腊拉丁语Ars,艺术。技巧、想象力、美学、环境的融合创造物。" ### Abstract a=F/m。牛顿第二定律:“物体加速度的大小跟作用力成正比,跟物体的质量成反比,且与物体质量的倒数成正比;加速度的方向跟作用力的方向相同。”这是抽象的一个简单例子,简单的公式,描述了经典物理学时期日常各种物体加速的根本原理。作为程序猿,我们在完成各种业务需求的时候,可以发现一些可以抽象出

"Art,古希腊拉丁语Ars,艺术。技巧、想象力、美学、环境的融合创造物。"

Abstract

a=F/m。牛顿第二定律:“物体加速度的大小跟作用力成正比,跟物体的质量成反比,且与物体质量的倒数成正比;加速度的方向跟作用力的方向相同。”这是抽象的一个简单例子,简单的公式,描述了经典物理学时期日常各种物体加速的根本原理。作为程序猿,我们在完成各种业务需求的时候,可以发现一些可以抽象出来的公式?B = T × W × F × n + E?

Art

在阿里这几年经手过一些不同的业务:客户管理、网商贷产品售卖、一达通产品售卖、公告、站内信、村淘交易二段物流、ICBU交易纠纷仲裁、售前售后咨询服务、RFQ匹配推送、买家分层服务、买家多语言渠道销售、一达通拍档工单、中供&诚信通&钉钉CRM反馈中心 等等。幸运的是,大部分做过的业务都还活着,也有些已经下线了。程序猿的成就感来自哪里?一部分是业务效果,一部分是Technical Art。所以,我在设计和编码的时候会提前想一下后验结果是怎样的,如果这个业务挂的几率 > 0.7,我是不是就要拒绝?然而,有时候并不是你想拒绝就可以的。那怎么办?如何抗风险又能不浪费自己的劳动成果。Abstract,能够解决风险的问题,越抽象越稳定。我们的劳动成果,就是这个抽象的创造物。所以,我们会调整一下自己对成就感的后验比率,业务效果 = 0.3,TA = 0.7 。即使业务波折,我们抽象的创造物(可复用的一些软件模块)还是可以持续产生价值。那如何验证你的创造物是一件TA?很简单,不断扔各种业务进去,训练它,打磨到大家认可了就是艺术。

Platform

俗话说:没吃过猪肉,还没看过猪跑吗。嗯,多看几只猪你就能吃到猪肉了(真的)。Platform这个概念已经被玩坏了,每个BU都在做各种Platform,看得多了,我也做了一个(真的),想名字的时候难到我了,想了可久了,既要听起来高端大气上档次,又要足够抽象让人一下看不懂,干脆就叫:Business Platform(一堆板砖飞来了,中间件的同学不会扔,为什么?因为我是他们的用户)。做这个平台之前参考过BOP(交易的业务中台),参考的那个时间点,BOP解决了各垂直电商市场“订单确认页面”的平台化。和我在做“村淘二段物流”项目的时候有些概念没变,比如“主流程”和“扩展点”,我那时也写过村淘交易的一些SPI扩展点实现。BOP的一个重要的功能是提供了UI可视化编排各垂直市场的扩展点执行流程。编排完之后,使用tbbpm的内存流程引擎执行无状态流程,输出订单确认页面需要的渲染数据。整个过程会拉取商品、地址、物流、优惠、支付等领域(BOP里面有个能力地图)的数据。刚说了一个前提“主流程”,因为订单确认页面的数据是固定的几部分,所以主流程只需要负责准备好这几部分的数据就好了,每个垂直市场针对主流程提供出来的扩展点执行自己的子流程准备数据就好了,主流程运行过程中动态发现子流程SPI扩展点实现并调用获取数据(讲错了欢迎拍砖)。接下来讲自己的Business Platform设计和实现。

Business Platform

几个核心概念:业务实例(Business Instance)、实例任务、业务流程、状态机(FSM)、元数据、业务规则。Business Instance = Task Instance × n + Business Process Instance × m + FSM × j + E。n、m、j >= 0,E为不同业务的特征属性值,因为不同的业务上下文不一样。Business Instance的两个核心API:启动、驱动。

  • 启动
  • 诚信通合伙人电销工单.003.jpeg
  • 驱动
  • 诚信通合伙人电销工单.005.jpeg

代码就不贴了(太丑了),UML的一些设计图也不贴了(要分享到云栖,贴了可能审核不过概率 > 0.7),内网的文档库有。启动和驱动的实现中会使用到集团的中间件,比如元数据配置平台AMS,规则引擎Sky Light,流程引擎Tbbpm,泛化调用HSF。非常感谢集团的这些兄弟团队,这么多好的轮子可以拿来使用,这些就是我们实现自己艺术品的画板、笔、颜料,爱你们(如果对创新和造轮子冲突有想法的同学,可以一起聊聊,我以前写过一篇程序猿日记S01E01)。

流程引擎

Business Instance基于Tbbpm(非常感谢无相的支持)封装了一层,做了服务化。因为Tbbpm是嵌入式使用方式,每个引用的应用都要自己初始化一套数据库表,我们基于它建了一个Pandora Boot(非常感谢该团队的成员,北纬、千臂、断岭)工程应用,对原始的api封装了一套流程的Service。这部分内容先不展开了,后续我的团队成员会写文章阐述。

状态机

Business Instance用的FSM Service也是基于Tbbpm封装的,由于这部分功能没有按照FSM的一些规范和理念完整实现,所以封装过程中遇到了一些问题,到目前为止还有缺陷,正在想一个合理的Fix方法,看是否能够也给Tbbpm提供一个Patch解决更多人的这个问题。

想象力

弱约束的事件与状态驱动,混入价值与策略。

A, S, P, R

Action space : A

State space : S

Transition : P : S × A → S

Reward: R : S × A × S → R

目录
相关文章
|
6月前
|
JavaScript 前端开发 Java
SAP BTP 平台 Cloud Application Programming 编程模型概述
SAP BTP 平台 Cloud Application Programming 编程模型概述
76 0
|
6月前
|
前端开发 JavaScript 数据库
SAP S/4HANA 的 Data-Centric Applications 编程范式
SAP S/4HANA 的 Data-Centric Applications 编程范式
54 0
|
6月前
|
UED
什么是设计领域的 4 eyes design
什么是设计领域的 4 eyes design
23 0
|
7月前
|
XML Java 应用服务中间件
ABAP Netweaver 和 ABAP Platform 这两个名词的辨析
ABAP Netweaver 和 ABAP Platform 这两个名词的辨析
65 1
|
7月前
|
存储 机器学习/深度学习 架构师
SAP 软件的精髓之一:各种各样的决定机制 - Determination Logic
SAP 软件的精髓之一:各种各样的决定机制 - Determination Logic
59 0
|
7月前
|
SQL JavaScript IDE
SAP Cloud Application Programming 编程模型(CAP)的设计准则
SAP Cloud Application Programming 编程模型(CAP)的设计准则
97 0
|
数据建模 Java 项目管理
【UML建模】(X) UML建模之Enterprise Architect 15的使用
Enterprise Architect (后面简称EA)是一款优秀的UML建模软件。它兼容UML2.0中的所有图表。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发与部署等方面有着强大的支持,同时加上对10种编程语言的正反向工程,项目管理,文档生成,数据建模等方面。
242 0
【UML建模】(X) UML建模之Enterprise Architect 15的使用
|
存储
一个典型的使用 SAP Cloud Application Programming 模型开发的 Fiori 应用
一个典型的使用 SAP Cloud Application Programming 模型开发的 Fiori 应用
一个典型的使用 SAP Cloud Application Programming 模型开发的 Fiori 应用
|
API
SAP CRM Relationship API设计原理
SAP CRM Relationship API设计原理
93 0
SAP CRM Relationship API设计原理