企业管理软件平台架构内幕揭秘

<script src="http://blog.csdn.net/count.aspx?ID=2277084&Type=Rank" type="text/javascript"></script>

我上一篇文章《用友 U9 SOA Ready》写完后,有朋友说里面的企业管理软件平台架构讲的非常好,可惜被用友的内容给遮盖了,希望我能独立成篇,真正把企业管理软件平台架构讲透。于是就成了这篇博文的动笔之因。

企业管理软件,由于进入门坎低,各行各业各层次企业都需要,做面向企业应用比做面向个人应用要赚钱多,好销售,所以中国内地有相当大部分的程序员在从事着企业管理软件的开发。

尤其是接项目的软件公司,这类公司往往在中国当前软件行业占很多。3-4个或5-6个程序员,老板拉来什么项目就做什么项目,进销存、费用报销、销售管理、客服维修工单、请假考勤管理等等为大部分单子内容。

有 朋友留言:就10来万的单子,就1-2个程序员,从调研到设计到开发到测试到打包到实施安装到培训到推动上线到支持,全活儿。哪来的精力再去开发平台。再 说了,都是10来万的单子,开发平台就大才小用了,什么设计模式,什么OO,什么界面和代码分离,什么代码重构,都扯淡,往界面拖控件,用ADO连数据 库,OK。费那精神干嘛,把钱快速赚到才是真理。

其实,你发现没,你做的管理软件(叫它MIS也行,你爱戴高帽就叫它ERP)有一些东西都 挺相似。我有个专门给小企业做网站的哥们,5天一个网站。他手里面从免费邮箱服务器、BBS论坛、流量统计软件、网站新闻内容管理系统全从网上找好源代 码,各种图标图片素材库,机器上装好Dreamweaver、PhotoShop、Flash。小企业老板来了,他把过去做的案例往出一拿,你挑吧。然后 七凑八凑几天完工。

这是不是平台呢?

我们为什么需要平台?我们需要什么样的平台?平台应该包括哪些东西?一个完备的平台是怎样的?

带着这些问题,我们一一揭秘。

拿我哥们刚才的例子剖析。我个人认为那就是一个平台。我们为什么需要平台?就是为了不每次都重新发明轮子,为了能快速的完成代码工作(可以多赚点钱或者可以多打会游戏或者瞌睡或者可以多时间去泡MM)。

快速完成,是平台的第一目标。但是快速三下五除二干完了,去客户那里一跑,BUG百出,倒霉,还得熬夜修改,长期出差回不了家。修改代码,痛苦,还不如推倒重新正式写代码。

看来,平台的第二个目标必须是稳定。

既能快速开发,又能稳定,这是个好平台了吧。

不, 客户个性化需求来了,发现真难改。按照普通简单流程处理(增/删/改/查 列表/明细),确实平台能给很大帮助,但是客户一个性化,平台就不灵了,个性化代码怎么都插不进去手。平台自成一套圈子,外围异常代码根本插不进去(这是 现在很多号称平台的产品都共有的最大弊病)。

好不容易遇到个好个性化定制的平台,平台性能不佳,老挂机,客户的电话吼的真想把电话线拔掉,甚至幻想全公司电话和互联网和自己的手机都坏了。

终于搞定以上的所有问题,给客户安装上,培训好,推动上线,终于可以闪人了。回到自己的床上,真舒服呀。

没想到恶梦才刚刚开始。客户的电话来了:我发现报表不对呀,数对不上去,你看哪里出问题了?

O,My God。我刚回来,你就...。 我又不能飞过去。好吧,好吧,你有QQ或PcAnyWhere吗,我们来连一下,我给查一下数据库。什么?服务器不容许上网?那我怎么办?

看来需要一个排错、可跟踪、可输出详细日志、可过滤日志的东西,就像SQLSERVER的查询跟踪器一样。

嗯,好不容易把问题搞定,修改完代码,需要给客户升级。

什么,你们家没有网管,都是兼职的,根本不会SQLSERVER,脚本怎么执行,怎么备份,不知道?

算我倒霉,电话我告诉你一步步操作。(长途电话费N多,老板冲你发火,你低头不语,心里念到这个猪头)

什么?升级了也不好用?那你肯定没按我说的操作来。

什么?有的机器好用,有的机器不好用?你肯定没有把所有客户端都升级了。

哦,看来需要一个自动升级的模块。

挖咔咔,软件卖的好好哦。咿呀咿呀咿。可是,可是...。居然有家伙盗版使用我们的软件,看来我不加密不行了。

加密,加KEY,加并发用户数,加正版判别,加使用期过期。

嗯,终于天下太平了,抱得美人归。

从 以上来看,我们似乎并不是为了平台而平台,为了市场宣传和销售便利而做平台噱头。我们确实在多如牛毛的小项目的水深火热战火纷飞中,我们渴望有这些东西将 我们快速解脱。如果我们是开发中大型系统的,我们的产品需要延续生命周期8-10年,需要部署给成千上万的客户,客户需要管理几亿的关键数据,有几千个客 户并发,我们更需要平台。

所以,不管做小项目的,或者做大项目的,我们都需要平台。

那我们需要什么样的平台。其实上述的场景中已经把平台的关键特性都说了一遍,现在我总结一下:

1可以帮助开发人员快速开发

2稳定

3可以个性化定制

4可以跟踪日志排错

5可以自动升级

6软件版权保护

为了做到这些,国内软件精英不知有多少人前赴后继的的投入研究(甚至做OA的,做工作流的,也号称做平台)。让我们历数历数,看看各自的特点和优缺点,以对照一下我们需要的特性,他们的平台具备不?

大连雅奇,95年我就知道它了。当时好像是Foxbase版本的。可以生成菜单、界面代码。其他的我现在忘了。不过去年CSDN还报道了一次大连雅奇

1报表打印,支持二维、交叉、套打、单据格式、多栏头、导出HTML、PDF、EXCEL、DBF肯定是必须的。计算公式有没有?变量有没有?代码调用API有没有?嵌入图表有没有?小分组合计行不行?最底最右的总合计有没有?支持不支持主从?支持不支持链接钻取?

2图表 当然支持折线、直方、饼图。不知道EXCEL所能支持的图表,它是否都能支持,而且像EXCEL一样好看。漏斗图有没有,里程图有没有?做领导报表(可以起名为管理驾驶舱或商业智能门户)时非常需要。

3控件 可分组、可过滤、可定制查询、可定制列视图、可多排序、可导出、可预览、可小计的Grid控件有没有?可以权限管制行列数据,定制列视图的参照录入控件有没有?日历控件有没有?财务凭证控件有没有?

4企业内部即时通讯模块、邮件收发模块、预警提醒模块有没有呢?

其 实,这是在企业应用中极为常见的一些公共功能。有一部份朋友给我QQ留言,他说平台架构就是:中间件+Hibernate(ORM框架)+structs (MVC框架)+spring(AOP框架)+JSF控件(UI框架)+Log4j(日志框架)+JUnit(测试框架)+Ant(Build框架)+ JasperReports(报表框架)+JFreeChart(图表框架)+osWorkFlow(工作流框架)。

我说对,这是平台架构,但不是企业管理软件的平台架构。企业管理软件的平台架构需要更上一层,能方便开发人员快速稳定的开发和修改。

大 连雅奇能一直存活到如今,从各方面看虽已跟不上未来,但目前很多小软件公司和小企业还在进行着初步的信息化,所以还是有很多的市场空间的。(我看到华军软 件里有人发布的所谓强大平台,一下载一看,原来是一个数据库维护软件,让人尴尬,但是还有大量的个人或2人工作室在不断奋斗制造着这类软件,我已经看到了 很多雷同的软件了,也有市场?可能)。

讲完最老的大连雅奇,在企业管理软件平台界,最有名的就数思维加速(现在改名起步)。起步从1999年开始起步,技术一直跟的很紧,做的也非常深入,我个人认为,起步是做企业管理软件平台最优秀的一个。

1 起步加入了工作流,非常适应时代

2加入了集团企业多组织结构,非常适应时代

3起步有数据库建模工具,有版本管理工具,有部署工具,报表、图表自不用说。居然还有甘特图和日历,还有即时通讯工具

4起步拥有自己研发的代码开发IDE。这是国内没有的。老宋为了解决常规平台自我封闭无法定制的诟病下了很大的气力,让简单开发和个性定制融合。

5能支持JAVA中间件,也能支持COM+,能WEB,也能C/S。这也是国内没有的。

IDE, 既是起步的杀手功能,也是起步的软肋(想起一句古龙的话:敌人的优点也就是他的缺点)。IDE这个东西,世界有三巨头:Eclipse、visual studio、Borland。大家都是干软件的,大部分都是选择这三类IDE,对这三类IDE很是习惯。但是现在要舍弃三巨头,用了起步的平台,就需要 用起步的IDE,而且IDE还没有三巨头做的好(要想做好,谈何容易。君不见Eclipse有IBM巨资推动,visual  studio更是微软的一个重要产品线,投入大量人力。如果起步也要做,那岂不是平台、IDE、工作流都要并进?要知道,这三块中的每一块,都是需要单独 一个公司,而且是相当实力的公司才能做好)。

于是,上海普元学乖了。IDE,我们就用Eclipse。

当然,还是老三套:控件+工作流+报表。

普 元的平台框架有组织结构管理(不知道是否支持区域管理组织和集团管理组织?)、部署工具、权限管理(这个非常重要,不知道能不能管理到业务实体的每一个操 作和数据行列可访问性?)、业务字典管理(这个没必要单提出来吧?运行参数的配置才是最重要的)。不过普元具备了日志、异常、定制任务。更难能可贵的是, 普元还提出了Cache机制(这个在企业管理软件领域中其实挺难。它不像咱们的通常论坛网站,如天涯,也并发量大需要Cache,但是天涯也仅仅是看,而 企业管理软件主要是频繁读写和业务计算处理,这怎么Cache,我也需要学习学习,过去一直主要依赖数据库设计和代码写法和功能设计来保证性能)。

普元做JAVA,金富瑞就做.NET。

三大件继续拿上来:控件+工作流+报表。

但很可贵的是,金富瑞提出了虚拟组织这一说法。这个确实老遇到。还有就是权限管理,从菜单到数据到列到行到按钮,控制的挺细,不过细就是多,多就会漏洞多,看来金富瑞需要深刻去思考一下数据库架构的设计。

这些都是专注做平台的。

但是,那些主要做管理软件的公司,也有自己的平台。甚至自己的平台还卖。如浪潮楼上(不过山东人的朴实与粗糙,尽在软件中)。

自己用的平台,东软也有,但没有对外宣传,也不卖。偷偷自己用,做了N多医保、税务局之类的项目。(我曾经剖析的时候,发掘设计的思想和金蝶K3的平台特别相似)

用 友、金蝶这两大企业管理软件公司当然也有自己的平台。用友有U8平台和NC平台,金蝶有K3和EAS平台。不过,明显的是,金蝶的平台架构思路比用友高一 级。从业务实体自省到权限控制到日志到二次开发,金蝶颇有套路,思路清晰抽象高度。而用友的平台,似乎还看业务是业务,看菜单是菜单。

讲了这么多,几乎主流的平台厂商我都数了个遍,当然从事各细分行业管理软件的公司也都有自己的平台,只不过那类平台和本行业业务又结合的特别紧密,开发自己行业软件特别快速稳定易用,但不具有普遍意义。

我把我在上一篇文章中写的企业管理软件平台架构内容再贴到最后,以使大家好总览:

1登陆用户口令验证、license许可验证、盗版验证、过期失效验证、版本差异验证

2主控台 用户功能树 管理主控台

3表单设计器、业务实体设计器、工作流设计器、报表设计器、功能菜单设计器、多语言设计器、多皮肤设计器、查询过滤定制器

4UI框架:Grid/Toob bar/Tree/TabSheet/Menubar/参照录入组件/Edit/Button/Combo之类

5单实体输入框架、主从List/Detail输入框架

6运行配置参数设置、单号计数器、业务预警设置

7异常框架、业务实体权限框架、业务实体存储引擎、业务实体查询引擎

8报表:套打、单据报表、普通二维查询统计报表、交叉报表、图表

9工作流引擎、消息引擎、自动任务引擎

10企业组织结构设计工具、权限分配工具、数据导入导出工具、数据备份恢复工具、升级更新工具、错误诊断跟踪工具、性能监测工具、日志查看工具

11OFFICE集成、BO集成、通信集成、邮件集成、短信集成、IM集成、搜索集成、电子商务集成、企业门户集成等等一切外围集成
 

 

后补记:

刚才看到有朋友留言,说到单据如何变化、单据字段如何变化、报表如何变化、数据库如何变化、业务流程如何变化。

刚才一看图,确实是忘了写单据设计器了。这个在各个平台上都有。不过现在单据设计器的主流都是在eclipse中做调整,然后再部署。

有了单据设计器,单据变化、单据字段变化就都能适应。

报表有报表设计器来适应。

数据库有业务实体设计器来适应。

业务流程有工作流来适应。如果是很特殊的业务流程变化,需要编写代码。一个完全不编写代码就靠配置实现企业业务的平台是不存在的,除非业务很简单。

其实笔者原意也不是对国内平台上逐个品头论足。目的只是希望给大家普及平台架构,并且介绍国内主流的一些平台厂商。笔者也在近10年中搭建过两代产品线的平台架构,管理数据都在几亿条,涉及用户数也在几万,所以希望给没有架构思路的朋友们一些经验分享而已。

大家如果想了解企业管理软件平台的更细节的架构和原理,可以去起步、金富瑞、浪潮楼上、普元、金蝶、用友的网站上去看他们详细的技术架构白皮书。看看他们是如何真实的实现一个企业管理软件业务平台。

更深层次的如何实现,架构的每个细节难点和实现思路,我想,应该不是我这篇博文能够承担的。

 另外,看到留言说业务平台是为了适应企业变化无常的需求
其 实这是个误区。业务平台并不能适应企业变化无常的需求,业务平台只是把公共的部分提取了出来,而变化无常的需求是由开发语言来完成的。如果一个业务平台无 法容易的融入开发IDE编写的代码,这个业务平台基本不能用,只能算是一个简单的玩具,做些简单的增删改和确认的工作而已。

有些平台,为了满足个性化特殊处理,内嵌了很复杂的业务逻辑语句,甚至也和起步一样做了IDE,即使走到这一步,也不如程序员用IDE编写代码方便。

我们做平台,不是为了不用IDE,不用写代码,不是为了实施人员或业务人员拿去自己定义功能去吧,程序员没有用了,程序员只要维护好平台就OK了。这种认识是错误的。SAP作为全球最大的企业管理软件厂商也无法做到。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值