看15年间用友iUAP企业互联网平台的发展历程2016年1月11日
无独有偶,用友iUAP平台也经历了四个大版本阶段,经历十余年的发展,将长期服务企业信息化过程中提炼出的各类技术,与互联网技术和企业互联网化全生命周期管理相结合,缔造出一个的企业互联网平台。
2014年,用友吹响了向互联网企业转型的号角,UAP从此也就多了个i,变成了iUAP。这个新增的i,其实就是iEOP——企业互联网运营平台。iUAP能够帮助企业方便地实现企业内外部的数据整合、O2O互联,并助力企业基于互联网构建出产业/企业生态圈,再以生态圈方式实现商业模式以及管理创新。新的平台iUAP具有以下的架构:
}catch (Exception e) {
n 2003年,NC2.3发版,这也是2.x时代的最稳定版本。
2015年底,又一里程碑6.5即将发版。
第三阶段:5.x时代(2006-2011)
实际上,要追溯UAP2.0的起源,就必须要提到2001年初春在西山凤凰岭脚下的一次封闭开发。当年的凤凰岭,并不是现在4自然风景区的样子,而是怪石密布的大山和裂谷,裂谷边缘是茂密的树丛,这和1200万年前南方古猿的非常相似。
下面,就让我们对照人类进化四阶段,来看看iUAP从前世到的四个时代。
2006年7月,NC3.5上市,这也是3.x时代的最稳定版本。
}
quos = service.queryBillByPK(pks);
翌年,更为完善的NC2.1版本问世。由于UAP平台的支持,NC2.x的产品已经涵盖了财务、供应链、制造等跨不同领域的ERP功能,UAP平台采用的是当时刚刚兴起的J2EE技术,在技术上保持了领先性。
iUAP中心总经理谢志华当时对此给出了准确的评价:“没有平台时,每个开发人员都必须是全能选手,按现在流行的说法可以称为‘全栈开发工程师’,既要了解底层的操作系统、数据库技术,又要了解上层的业务逻辑和用户体验,这样的结果是开发效率低,对个人的依赖程度高。有了平台之后,按照平台的架构和体系,研发团队也被分为了技术平台层、业务逻辑层、应用展现层,每一层再进行技术细分,每一部分的开发人员可以专注于自己所在领域的研发,这样就使得开发效率提升了一倍以上。”
在3.0版本的客户化模块中,系统管理增加了安全控制和权限控制管理;自定义查询进行了重构,新的查询引擎功能更为强大和完整;原数据仓库重构为ETL工具;审批流支持越级跳转;EAI部分实现了U8和NC的整合;模版的易用性和功能大大增强。3.0版本推出后,NC产品交付了一大批项目,此时,用友在高端市场得到客户的认可和青睐,这也标志着用友抢滩高端市场初战告捷。
尾声
2.x时代的关键版本包括:
try {
iUAP,亦如此。
2005年7月,NC3.1(国际化版本)发版;
从6.0开始,UAP从研发机构上已经于NC存在。6.0主要包括五大部分:企业动态建模平台、应用管理平台、应用集成平台、应用开发平台、云技术运行平台。作为支撑用友高端应用的后盾,UAP6系列具备了“高智能、高性能、高可用”的特征,致力于为集团企业构建先进、的云计算应用平台,并为集团企业提供建模、开发、集成、运行、管理一体化的IT解决方案。
3系列的界面风格也发生了翻天覆地的变化。先前大家认为,用友代表性的底色就应该是红与白,蓝色基调是竞争对手多年采用的底色。但经过人机工程方面的分析,NC3.0从配色上毅然转向浅蓝色,这也体现了平台开发团队在观念和心态上的成熟化。以下是NC3.x系统桌面和登录界面的截图。
2012年09月,UAP6.1发版;
当时,用友NC从各部门抽调Java技术、组成这支20人的先遣队进驻凤凰岭的时候,团队谁都没有想到自己正在为一个伟大的平台建立雏形。那时候甚至没有UAP这个名字,封闭团队所肩负的,就是把经过检验积累下来的各种公共开发框架、UI控件等进行平台化封装,解决内部开发效率和代码重用问题,更好的服务于水平应用产品的规模化开发。
mon.NCLocator
} catch (Exception e) {
2013年09月,UAP6.3上市;
今天的iUAP,结合开发者和客户的意见反馈,经过一版一版呕心沥血的改进,业已成为面向大型企业与组织的企业互联网平台。它是用友公司从多年应用软件研发过程中提炼出模型、模板、开发工具、应用框架、中间件、基础技术类库及研发模式等,采用可视化开发模式集成在一起,提供覆盖开发、集成、运行、管理等软件全生命周期功能于一体的企业互联网平台。
e.printStackTrace();
如果说2.x是程序员各显的年代,那么从3.0开始,各类组件控件都已严格规范化。另一方面,用友自主的中间件也日臻成熟。早期NC中间件的主要职责是支持NC开发调试过程和客户运行,进入3系列后的主要改进包括:完善支持NC开发调试过程的工具,包括在VA中的插件,用于生成代码和进行热部署等;为支持客户运行,对中间件的底层功能进行了改进,包括工具生成代码的优化;增强了NC中间件的本身特性,支持多种策略的负载均衡特性。
2011年12月,UAP6.0/NC6.0发版;
n 2002年,NC2.1发版;
2004年8月,NC3.0发版;
// 检查该查询是否被复合查询引用
2014年05月,移动应用平台2.1发版;
2014年01月,AE2.0/BQ8.0发版;
bQuoted = GrowmodelBO_Client.isQryQuoted(strQryOid);
NC3.0于2004年8月发版,其中的UAP平台当时被称作“客户化”。3.0是在前一版产品NC 2.3的基础上,结合实施过程中客户提出的需求,以及3.0的产品规划,开发完成的更加实用、高效和完整的产品版本,除核心应用得到加强外,在产品效率和产品可靠性上也有显著提高。
拿猿人阶段对比UAP的2.x时代,还真是有些相似呢。这不仅仅是因为猿人和程序员的关系——毕竟进化到了现在,“程序猿”的帽子也还没有被摘掉。
2015年04月,企业互联网运营平台(iEOP)发布;
在前一版产品3.5的基础上,用友NC结合市场、客户的需求以及产品未来的发展规划,推出了高效、易用和适合集团客户管理应用的新一代产品。它的版本号是什么呢?当然是5.0(用友产品的大小版本号都不会出现4这个数字)。此时的UAP平台产品更趋成熟稳定,在诸多亮点当中,有一点足以体现UAP“从原始人到智人”的飞跃,那就是对当时大热的面向服务体系架构SOA的支持。
未来,人类会否继续进化?无从知晓。但已经进化为iUAP的UAP,一定会继续发扬光大。
try {
n 2001年12月,NC2.0发版;
以下是2.x的运行的登录界面和系统桌面,红白底色的LOGO,Jtree风格的菜单树,都带有很强的时代烙印。
从事研发的岁月,技术变革的历程,在我的脑海中留下了难以磨灭的烙印,时刻牵动着心弦。以至于多年之后,我在飞机上随便看了一部青春题材的片子《左耳》,就对里面仅有的几幕体现软件和编程的画面印象深刻。
回顾这一变迁历程,历经诸多挑战与,与地球生物以及人类的进化何其相似。
不难看出,接口、实现的封装/查找/调用,功能模块的解耦,代码层次的封装,都已经能从短短几行代码中看到了影子。实际上,经过架构优化后的UAP代码,已经分为public、client、private三层,层次间、模块间的调用都已做了严格的规范,一切都是面向接口而不能去访问组件内部的私有实现。下面这张5x时代开发工具截图,正体现了代码、类库和其它资源的规范分层。
6.x时代,UAP子平台已开始发版,其关键版本包括:
让我们把目光重新投回2011年的初冬。
经过凤凰岭封闭和后续加班加点的开发,用友于2001年底推出了NC2.0产品,底层已经形成了应用开发平台,这就是早期的UAP平台——当时UAP并没有从NC中为一条产品线。应用开发平台的出现,大幅提升了应用系统的开发效率。
早在2x、3x年代,程序员写一段最普通的远程调用代码,通常是这么写的:
到了5x年代,这种调用变成了这样写:
2006年12月,NC5.0发版;
2009年12月,NC5.6发版,性能取得重大突破;
在运行的界面风格上,5x逐步从3x的深海蓝转向淡淡的天蓝,给人的感觉更加简洁明快,愉悦轻松。5系列发展了4年多的时间,支撑交付了大量的项目,在UAP发展史上占有继往开来的重要地位,即便是在6系列出现很久后,很多老的客开顾问依然对5x怀有浓厚的感情。
第一阶段:2.x时代(2001-2004)
3.x时代的关键版本包括:
6.x时代,UAP的UE团队已经达到前所未有的规模,他们对人机接口进行了全方位的优化。6.x登录界面风格和系统菜单如下所示:
第二阶段:3.x时代(2004-2006)
十五年,弹指一挥间。剑指,再回首沧海桑田。早期UAP开发的峥嵘岁月还历历在目,每个平台、产品都离不开奠基者付出的辛勤汗水。
封闭团队根据事先分工,对中间件、基础控件、模板、系统管理、查询报表、流程、数据交换、持久化、安全、升级等等部件进行设计、开发和封装,所选择的开发工具是当时比较流行的VisualAge for Java。2.x早期,平台还没有配备专业的UE人员,因此很多界面的布局、着色等方案是直接由技术人员确定的。从下图可以看到,2.x时期的开发工具IDE以及典型功能节点的样式风格。
与此同时,6.0也多了一种软件建模的“语言”,那就是元数据。这是UAP贯彻MDD设计的关键步骤,由此UAP得以支持完整的编程模型,建立基于元数据的实体开发框架和操作/服务开发框架。随着大量开发插件的出现,开发工具IDE也已从Eclipse为UAP-STUDIO,从下面这张STUDIO的MDP透视图中,可以看到开发人员进行业务模型和业务组件设计的过程。
同样,UAP也没有满足于5.x系列所取得的成功,经过五年磨一剑,又推出了业内的6.0版本。6.0实现了技术和业务的完全分离,成为全面支持多集团、多组织、多时区应用和动态建模的首个版本,提供产业链级分层开发,支撑高性能云计算和异构系统的应用集成。代码层次方面,经历了从3.x的代码组件化到5.x的服务端代码规范化,6.x终于梳理完成了前、后端代码的一致规范化。
当智人已经远远领先于其它地球生物的时候,他并没有停止进化。随着语言的形成与完善,人类的智力、技能又上升了一个台阶,终于进化成为世界的“现代人”。
超人,既能超越,又能超越别人。
除代码架构的优化之外,UAP5.0还支持了商业中间件IBMWebsphere,并成立专门团队进行UE改进和portal集成,使得产品在可靠性和效率、易用性上有了很大提升。UAP专门为客开伙伴提供了集成二次开发平台,基于SPRING推出UI工厂框架,支持代码版本管理,优化了外部数据交换平台,平台产业链特性得到增强,成为用友基于J2EE的多产品开发平台。
在3.x时代中期,开发人员沿用的开发工具Visual Age for Java由于无法替换更高版本的JDK,已经难以适应开发的要求。经过选型,全体开发改为使用ECLIPSE作为IDE。这个过程是略带痛苦的,很多程序员已经习惯了VA基于可视化工具的开发模式,但经过努力终于还是完成了这个转变。以下是3.x典型开发的截图。
.getInstance().lookup(nc.itf.train.IQuotationMaintain.class);
// 获取报价单全部结果数据
都有进化的过程。就拿人类来说,最早起源于森林古猿,从灵长类经过漫长的进化过程一步一步发展而来,其间经历了猿人、原始人、智人、现代人四个阶段。其间,人类陆续完成了直立行走、使用工具、大脑逐步发达、产生语言等标志性事件,最终成为了掌控世界的最高智能生物。
第四阶段:6.x时代(2011-今)
5.x时代的关键版本包括:
}
上述技术变革,带来了平台及产品在性能和稳定性的显著提升。我们将2.x到3.x的进化比喻为猿人到原始人的进化,也是因为平台在性能和易用性方面的提升,这就像原始人类开始直立行走一样,把双手解放出来,可以有更多的资源去做别的事情。
2009年04月,NC5.5发版,流程、模板极大完善;
2011年01月,NC5.7发版及上市,这也是堪称经典的5x时代最稳定版本。
Log.error(e);
平台支撑着NC无数业务的底层调用,服务组件的清晰化,以及服务端代码的规范化,无疑使得UAP的脑容量大增。不少程序员回忆说,做过5.0的开发,才算见识了什么叫真正的代码重构。