招商城科走进武汉研发中心,现场编码解锁平台内核技术

源宝导读: 联合开发、共建、共创共同打造地产数据字化,本文重点讲述招商城科团队来明源云武汉研发中做技术交流的内容,欢迎大家关注与阅读。

2020年1月,招商城科技术团队来到明源云武汉研发中心,以 “联合开发、共建、共创、共赢,加速地产数字化转型” 为主题,在开放平台的“平台架构“、“低代码开发”、“研发协同”、“应用集成”、“流程开放”、“数据分析”、“运维平台”,这七个方面进行了深入的体验与交流。

交流过程中,首先由开放平台负责人刘同学针对开放平台架构和技术优势进行了整体介绍,让大家对明源云的开放平台有一个整体的初步认识:

接着,由开放平台的产品经理与架构师们做了进一步细致的讲解与演示,内容包括:高性能高安全高稳定的技术架构、通过在线建模快速定制ERP功能、插件式的低代码开发、研发在线协同高效开发、高性能高稳定的应用集成、基于BPM标准的流程中心、数据分析平台、云运维平台等。

最后,我们基于一个模拟需求,对二开功能开发的技术细节进行了深入交流和现场编码体验:

整个交流过程非常的深入,涉及到了很多开放平台的核心技术。为了让更多的小伙伴Get到,我们将交流过程涉及到的的技术点整理了一份清单。

开放平台用了业界的哪些先进技术?

1、建模平台技术栈:

2、集成平台技术栈:

3、DevOps研发协同平台技术栈:

4、云运维平台技术栈:

5、数据库事务是使用什么方式?

平台提供的数据库事务支持4种模式:

Inherits:继承当前作用域的事务模式:

1、继承当前作用域的事务模式;

2、允许单独使用,但单独使用不开启事务;

3、不允许单独提交或者回滚;

Required:新的作用域请求启用事务:

1、当前作用域存在事务模式则继承,不存在则开启新的事务;

2、允许单独使用;

3、允许单独提交或者回滚;

Suppress:新的作用域不使用事务:

1、开启新的作用域,不受当前作用域的事务影响,但不开启新的事务;

2、允许单独使用;

3、不允许单独提交或者回滚;

RequiresNew:新的作用域开启新事务:

1、开启新的作用域,不受当前作用域的事务影响,但开启新的事务;

2、允许单独使用;

3、允许单独提交或者回滚; 

6、调度分发失败是如何处理与控制的?

如下图举例,调度后进行了事件的触发执行,在执行时,由3个订阅者去完成具体行为,如果其中一个订阅者执行失败,比如下图C订阅者执行失败,那么后续尝试执行会根据设定来尝试执行,比如设定为5次时,后期只会走事件中订阅失败的C路线,A、B路线不会再次执行。

7、调度服务如何保证只调用一次?

通过redis的锁和单体机时用数据锁来保证唯一性,通过CAP保证事件能够成功执行。

8、前端为什么使用Vue而不用React?

明源最早也是使用React,但通过深度应用与对比发现Vue在如下方面更具优势:

JS库文件大小:Vue 库的大小为 25.6KB。而要让 React 的架构达到相似的功能,需要 React DOM + React Router + React 和其他插件,总共是 48.8KB,按WEB呈现而言,占用带宽更小。

渲染性能:通过压测显示,Vue 比 React 占用的内存更少,运行速度更快。

还有Vue框架更易学习、第三方插件更多、代码更清晰简洁,综合这些原因,我们最终选择了Vue。

9、客户IT技术团队是否能自己做组件在建模平台中进行应用?

可以。我们有自建的组件生态库,可基于基础组件自己组装各种形态的组件,按标准制作的组件都可在建模平台中使用。

组件相关可见:https://honeycomb.mingyuanyun.com/

高性能、高安全、高可用是如何做到的?

1、高安全方面怎么做的?

研发过程引入SDL模型,符合三级等保要求

通过安全厂商的安全测试,获取7个权威认证,确保ERP系统无一高、中漏洞

通过全方位的系统日志,保证系统可追朔

通过水印、防伪等技术,保证业务数据及文档资料安全性

支持业界标准的链路追踪机制

2、平台整体如果私有化部署,预计需要有几台服务器,如何做到高可用的?

预计8到9台服务器可满足高可用的使用场景,相关的部署拓扑图如下:

3、如果在分离布式部署模式下,在主ERP创建如组织、用户数据是如何传递到其他站点?

在主站点创建组织或用户数据时,会触发相应的业务事件,由平台将事件分发到从站点,触发相关的业务订阅代码执行。

4、高性能方面明源是怎么做到的?

第一次演进:引入反向代理实现负载均衡。反向代理使应用服务器可支持的并发量大大增加,QPS从单机100+到集群的5000+;

第二次演进:应用分库、公司分库。数据库和WEB都能够水平扩展,可支撑的并发大幅提高;

第三次演进:复用的功能抽离成微服务,应用解耦。通过MIP接口中心、事件中心实现服务治理、限流、熔断、降级等功能,提高服务的稳定性和可用性;

下一次演进:云原生架构。利用公有云的海量机器资源,解决动态硬件资源的问题、大量计算性能的问题。

三次架构演进,经过链路压测,支持万亿规模性能秒开

如何实现内外部应用的集成打通?

1、用明源ERP时是否必须配置MIP平台?

非必须,但是如果存在多个应用之间连接交互时,建议通过集成平台来进行托管,让连接过程可视化,监管化,如下图所示,实现整体应用可用性的提升:

2、明源分离部署后,是否走MIP?

是的,分离部署只是平台应用实现可插拔及高可用部署方式,应用之间所有通讯、数据传递统一走集成中心。

3、明源ERP的相关信息通过配置中心来实现的,配置中心是连接内部应用的统一管理中心?

是的,举个例子,X客户有 9 台WEB服务器,如果哪天客户的IT管理员修改了数据库登录密码,

按以前的做法,需要我们依次远程到每台服务器上修改新密码,这样的操作要执行 9 次,最要命的是:如果忘记修改某台服务器,那么……

现在有了配置中心,只需要在配置中心的界面上修改 1次 就可以了!

简单说来,配置中心是一个统一管理ERP所有的核心配置的服务。

4、针对集群场景,集成平台中连接内部接口应用时,是如何发现的?

集成平台通过轮询的方式,从各被集成应用站点发现接口,如果不同站点发现了多个同名接口,以先发现的为准。

5、明源的集成中,注册中心用的什么方案?

使用consul技术实现,整体架构上如下图所示:

6、外部的API如何走明源MIP接管?

第三方应用服务通过手工注册进连接中心,大致步骤如下:

a、手工创建Http、WebService等连接器

b、设置健康检查地址

c、设置熔断策略

d、设置超时策略

连接中心注册流程示意:

良好接口管理中心,让多方应用连接更高效与安全

7、明源MIP的事件中心机制原理?

我们事件中心由事件源定义后开始工作,通过事件源监听到后,通过数据源连接器传递到事件中心,由事件中心再与订阅者取得联系,进行后续逻辑处理,事件源主要有3类组成。

a、数据库CDC

b、应用发布事件DDD

c、消息到达监听

8、轮询与事件监听用的什么技术?是SQL SERVER的触发器吗?

不同类型的事件会使用不用的监听技术,例如数据库监听我们运用的是CDC技术,而不是触发器,触发器的维护代价大、运行不稳定、存在性能问题和死锁风险。

如何进行扩展定制开发?

1、扩展后的代码逻辑中事务与主事务之间关系是什么样的?

通常为同一个事务,即扩展时出现异常,与主业务可用同一个事务,但也可以单起一个事务针对扩展部分单独做事务逻辑控制。

2、EntityService支持到什么程度?是否支持联查?

常规CRUD、批量处理、实体服务改变事件监听等,联查不支持,联查可采用LINQ或平台提供的XmlCommand机制。

3、应用服务层和领域层是否都支持扩展?

平台只允许对应用服务层和领域层的公开方法进行扩展。

具体扩展是怎么实现的呢,请看下图:

不仅支持后端扩展,还支持前端扩展哦。

4、个性化扩展开发后是否支持标准产品升级?

个性化代码与产品标准功能的程序文件,分开存放在不同的文件和目录中,产品升级不会覆盖掉之前个性化的任何程序文件。

如果客户需要产品升级的新特性,可通过在线的产品升级检测工具,经过快速的代码比对合并,将产品特性移植给客户。

5、附件内容会存到数据库字段中么?附件下载地址是否有加密?

附件内容不会存到数据库中,数据库只存储附件名称、地址等信息,平台通过独立的文档服务提供附件存储、下载、预览等服务。文档的存储还支持第三方或客户自己专有的文件服务。

附件下载的地址是加密的,并且存在时效性。

6、建模中进行数据建模时,数据类型的精度是否支持自定义,比如金额类型的支持2位?

不支持,我们根据行业特点与经验沉淀下来的4位及更多位数,均可满足客户业务需要,如果存在只允许录入2位数字的场景,可以通过页面建模配置界面录入的保留位限制。

7、同一个业务类,如果多个子类扩展时,顺序是怎么执行的?

不建议通过多个子类来进行多次扩展,建议由SM在开发过程中进行规范约定,统一在一个子类中进行扩展,方便后期团队成员持续维护,以免混乱出现同一方法被加载顺序相互覆盖问题。

8、建模平台是否可配置复杂界面,如表单及列表,列表中再嵌套等场景?

目前的产品中就包含通过建模平台搭建的复杂界面,例如售楼的合同详情页面。对于少量的极端复杂的页面,还可通过自定义页面机制,使用业务组件加少量代码的方式构建。

9、建模表单中,针对复杂字段上配置的SQL是否有考虑优化?比如界面20个字段都是复杂字段全部异步查询,那么查询是一次查询还是多次查询?

问题1:有考虑优化,同一个表单是在一个查询连接中完成的。

问题2:这种场景我们支持一个连接中将所有字段SQL拼装后,返回多维数据集再去适配,当然我们不建议这样去实现,如果多个字段需要查询取数时,建议在数据建模时,做好视图数据源,这样不就用给这些字段做额外的SQL异步查询了。

10、建模字段能否按组织来分别配置,主要考虑不同城市公司填写信息与要求存在差异?

有这样的功能,但不是通过组织来配置或设计表单,而是表单上面的元素可设置隐藏与显示的规则,比如可以设置当前公司名称或编码是XX公司或001时,则部分页签或字段或区域整体不显示等。

11、二开扩展开发是否有代码辅助工具?

支持,为了进一步提高质量与开发效率,在产品及项目生产过程中,出现很多不错的插件,如下图:

编码助手:

1、 一键新增重构项目

2、一键生成领域驱动模型文件

后台部分:Entity,DomainService,AppService等后台类

前台部分:JsAppService等js代理类

3、代码复用

4、JS代理类跳转到后台AppService方法

5、一键附加到调试进程

12、明源数据权限是怎么做的?是否有前端可操作界面?

1、通过资源化过滤来实现

主要的资源化过滤分2个层面,其他数据权限可根据需求自行定制,如同一条数据分不同采购角色的不同采购分类管理员来查看

a、组织层面,即当前人员所属什么角色,兼职哪些角色,决定登录人员能到哪些组织中去使用ERP

2、数据权限是支持在线界面中配置的,如下图可实现项目过滤和组织过滤,只需要在数据模型中设定项目ID或公司ID,即可启用项目过滤或资源化过滤功能。

当启用后,即可在建模列表设计界面中启用项目或组织过滤,如下图所示:

异地多团队协同开发如何管理?

1、针对多人调整时,A会影响到B吗,会有版本冲突吗?

不会,请看我们研发协同平台的版本管理机制,共分三个场景来做应用控制

实施人员发布流程:

项目二开发布流程:

产品发布流程:

2、建模测试环境包如何同步开发环境及同步到正式生产环境,关系是什么?

1、在测试环境通过建模平台调整功能后,在预览模式验证功能,验证通过后,通过建模平台发布,发布后,测试环境会立即生效,同时发布一个建模更新包到研发协同平台。

2、正式环境通过更新服务在线更新建模包,功能即可生效。

3、测试环境发布后,研发协同平台会将包内容同步回研发环境的代码仓库,开发人员只需重新拉取一次代码即可获取更新内容。

3、研发协同平台中源代码是否可以放到私有仓库?

支持,但使用私有库时需要提供Owner权限,配置如下图:

开放平台如何解决升级难问题?

1、平台在升级后是以个性化还是以标准产品做为最终保留是如何做到的?

根据客户需求来决定,整个过程通过平台差异化清单罗列出来后,由项目二开、实施人员同客户确认后来决定,如下图做版本差异对比,并最终形成差异对比清单文件,文件是源代码层面的。

2、二开扩展的方法的AppService,DomainService升级时如果参数变了,是如何做的有什么工具?

有专门的对比工具,提供升级报告并导出升级对比差异包,方便项目完成升级。

下图为冲突对比界面:

下图为冲突获取差异清单报告并提供产品代码与当前项目代码的精准对比及导出功能,方便二开进行文件对比与差异合并处理:

3、其他客户在升级时,升级策略是什么样的?

先通过部分圈定客户进行试点,试点运行稳定后再进行地推切换。

4、升级ERP的切换过程中,部分数据在老系统,部分在新系统,如何保证业务报表数据的准确性?

前期调研时,根据业务部门使用的核心报表应用情况及需要,会将新ERP中的核心关键数据回写入老ERP中,保障过程需要统计时的数据完整性。

5、针对客户部分新ERP部分老ERP的情况下,审批的入口能否统一?

新一代流程中心,已脱离传统工作流,任何外部系统想做流程审批,都可以无缝的衔接起来,如下图所示:

6、新老模块是否支持统一的流程,考虑新老切换周期时,如何做到不影响业务使用?

可以,最小粒度我们可以做到按一个业务单元来切分,保障最小粒度的适配。

7、老ERP使用流程中心是否支持?

流程中心可在IE8及以上浏览器的兼容模式下使用,部分功能例如制作流程表单,建议使用高版本浏览器来制作,效果会更好。

8、业务审批时,能追溯到之前业务的审批过程么?

可以,整体实现上分2块,一种是通过关联相关业务流程,一种是通过设置链路关系后(目前通过接口实现),流程能追踪到与当前有业务关系的其他审批流程。

以上只是开放平台一部分的技术,我们后续会分享更多技术内幕,请各位感兴趣的小伙伴们持续关注。时至年关,小编提前祝大家新年快乐,鼠年大吉!

- ----- END ------

作者简介

杨同学:  平台运营,目前负责开放平台整体运营。

也许您还想看

2019总结篇谈谈数字化时代,ERP如何坐稳数字化底座

2019年技术干货精选 | 明源技术团队

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章