企业管理软件,由于进入门坎低,各行各业各层次企业都需要,做面向企业应用比做面向个人应用要赚钱多,好销售,所以中国内地有相当大部分的程序员在从事着企业管理软件的开发。
尤其是接项目的软件公司,这类公司往往在中国当前软件行业占很多。3-4个或5-6个程序员,老板拉来什么项目就做什么项目,以进销存、费用报销、销售管理、客服维修工单、请假考勤管理等等为大部分单子内容。
有朋友留言:就10来万的单子,就1-2个程序员,从调研到设计到开发到测试到打包到实施安装到培训到推动上线到支持,全活儿,哪来的精力再去开发平台。再说了,都是10来万的单子,开发平台就大才小用了,什么设计模式,什么OO,什么界面和代码分离,什么代码重构,都扯淡,往界面拖控件,用ADO连数据库,OK。费那精神干嘛,把钱快速赚到才是真理。
其实,你发现没,你做的管理软件(叫它MIS也行,你爱戴高帽就叫它ERP)有一些东西都挺相似。我有个专门给小企业做网站的哥们,5天一个网站。他手里面从免费邮箱、BBS论坛、流量统计软件到网站新闻内容管理系统,全从网上找好源代码,各种图标图片素材库,机器上装好Dreamweaver、 PhotoShop、Flash。小企业老板来了,他把过去做的案例往出一拿,你挑吧。然后七凑八凑几天完工。
这是不是平台呢?
我们为什么需要平台?我们需要什么样的平台?平台应该包括哪些东西?一个完备的平台是怎样的?带着这些问题,我们一一揭秘。
拿我哥们刚才的例子剖析,我个人认为那就是一个平台。我们为什么需要平台?就是为了不每次都重新发明轮子,为了能快速的完成代码工作。快速完成,是平台的第一目标。但是快速三下五除二干完了,去客户那里一运行,BUG百出。倒霉,还得熬夜修改,长期出差回不了家。修改代码,痛苦,还不如推倒重新正式写代码。看来,平台的第二个目标必须是稳定。
既能快速开发,又能稳定,这是个好平台了吧。不,客户个性化需求来了,发现真难改。按照普通简单流程处理(增/删/改/查列表/明细),确实平台能给很大帮助,但是客户一个性化,平台就不灵了,个性化代码怎么都插不进去手。平台自成一套圈子,外围异常代码根本插不进去--- -这是现在很多号称“平台”的产品都共有的最大弊病。
好不容易遇到个好个性化定制的平台,平台性能不佳,老挂机,客户的电话吼的真想把电话线拔掉,甚至幻想全公司电话和互联网和自己的都坏了。
终于搞定以上的所有问题,给客户安装上,培训好,推动上线,终于可以闪人了。回到自己的床上,真舒服呀。没想到恶梦才刚刚开始。客户的电话来了:“发现报表不对呀,数对不上去,哪里出问题了?”O,My God。我刚回来,你就...。我又不能飞过去。好吧,好吧,你有QQ或PcAnyWhere吗,我们来连一下,我给查一下数据库。什么?不能上网?那我怎么办?
看来需要一个排错、可跟踪、可输出详细日志、可过滤日志的东西,就像SQL Server的查询跟踪器一样。
嗯,好不容易把问题搞定,修改完代码,需要给客户升级。什么,你们家没有网管,都是兼职的,根本不会SQL Server,脚本怎么执行,怎么备份,不知道?
算我倒霉,电话我告诉你一步步操作(长途电话费N多,老板冲你发火,你低头不语,心里念到这个猪头)。
什么?升级了也不好用?那你肯定没按我说的操作来。
什么?有的机器好用,有的机器不好用?你肯定没有把所有客户端都升级了。
哦,看来需要一个自动升级的模块。
软件卖的好好哦,可是,可是...。居然有家伙盗版使用我们的软件,看来我不加密不行了。加密,加KEY,加并发用户数,加正版判别,加使用期过期。嗯,终于天下太平了,抱得美人归。
从以上来看,我们似乎并不是为了平台而平台,为了市场宣传和销售便利而做平台噱头。我们确实在多如牛毛的小项目的水深火热战火纷飞中,我们渴望有这些东西将我们快速
解脱。如果我们是开发中大型系统的,我们的产品需要延续生命周期8-10年,需要部署给成千上万的客户,客户需要管理几亿的关键数据,有几千个客户并发,我们更需要平台。所以,不管做小项目的,或者做大项目的,我们都需要平台。那我们需要什么样的平台。其实上述的场景中已经把平台的关键特性都说了一遍,现在我总结一下:
1. 可以帮助开发人员快速开发
2. 稳定
3. 可以个性化定制
4. 可以跟踪日志排错
5. 可以自动升级
6. 软件版权保护
为了做到这些,国内软件精英不知有多少人前赴后继的的投入研究(甚至做OA的,做工作流的,也号称做平台)。让我们历数历数,看看各自的特点和优缺点,以对照一下我们需要的特性,他们的平台具备不?
大连雅奇,1995年我就知道它了。当时好像是Foxbase版本的。可以生成菜单、界面代码。其他的我现在忘了。
1. 报表打印:支持二维、交叉、套打、单据格式、多栏头、导出HTML、PDF、EXCEL、DBF肯定是必须的。计算公式有没有?变量有没有?代码调用 API有没有?嵌入图表有没有?小分组合计行不行?最底最右的总合计有没有?支持不支持主从?支持不支持链接钻取?
2. 图表:当然支持折线、直方、饼图。不知道EXCEL所能支持的图表,它是否都能支持,而且像EXCEL一样好看。漏斗图有没有,里程图有没有?做领导报表(可以起名为“管理驾驶舱”或“商业智能门户”)时非常需要。
3. 控件:可分组、可过滤、可定制查询、可定制列视图、可多排序、可导出、可预览、可小计的Grid控件有没有?可以权限管制行列数据,定制列视图的参照录入控件有没有?日历控件有没有?财务凭证控件有没有?
4. 企业内部即时通讯模块、邮件收发模块、预警提醒模块有没有呢?
其实,这是在企业应用中极为常见的一些公共功能。有一部份朋友给我留言,他说平台架构就是:中间件+Hibernate(ORM框架)+Structs (MVC框架)+Spring(AOP框架)+JSF控件(UI框架)+Log4j(日志框架)+JUnit(测试框架)+Ant(Build框架)+ JasperReports(报表框架)+JFreeChart(图表框架)+osWorkFlow(工作流框架)。我说对,这是平台架构,但不是企业管理软件的平台架构。企业管理软件的平台架构需要更上一层,能方便开发人员快速稳定的开发和修改。
大连雅奇能一直存活到如今,从各方面看虽已跟不上未来,但目前很多小软件公司和小企业还在进行着初步的,所以还是有很多的市场空间的。
讲完最老的大连雅奇,现在来看看在企业管理软件平台界比较有名的一家,数思维加速(现在改名“起步”)。起步从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平台。不过,明显的是,金蝶的平台架构思路比用友高一级。从业务实体自省到权限控制到日志到二次开发,金蝶颇有套路,思路清晰,抽象高度。而用友的平台,似乎还是看业务是业务,看菜单是菜单。
讲了这么多,几乎主流的平台厂商我都数了个遍,当然从事各细分行业管理软件的公司也都有自己的平台,只不过那类平台和本行业业务又结合的特别紧密,开发自己行业软件特别快速、稳定、易用,但不具有普遍意义。
补记
其实笔者原意也不是对国内平台上逐个品头论足。目的只是希望给大家普及平台架构,并且介绍国内主流的一些平台厂商。笔者也在近10年中搭建过两代产品线的平台架构,管理数据都在几亿条,涉及用户数也在几万,所以希望给没有架构思路的朋友们一些经验分享而已。大家如果想了解企业管理软件平台的更细节的架构和原理,可以去起步、金富瑞、浪潮楼上、普元、金蝶、用友的网站上去看他们详细的技术架构白皮书。看看他们是如何真实的实现一个企业管理软件业务平台。
更深层次的如何实现,架构的每个细节难点和实现思路,我想,应该不是我这篇小文能够承担的。
另外,看到留言说业务平台是为了适应企业变化无常的需求,其实这是个误区。业务平台并不能适应企业变化无常的需求,业务平台只是把公共的部分提取了出来,而变化无常的需求是由开发语言来完成的。如果一个业务平台无法容易的融入开发IDE编写的代码,这个业务平台基本不能用,只能算是一个简单的玩具,做些简单的增删改和确认的工作而已。
有些平台,为了满足个性化特殊处理,内嵌了很复杂的业务逻辑语句,甚至也和起步一样做了IDE,即使走到这一步,也不如程序员用IDE编写代码方便。
我们做平台,不是为了不用IDE,不用写代码,不是为了实施人员或业务人员拿去自己定义功能去吧,程序员没有用了,程序员只要维护好平台就OK了。这种认识是错误的。SAP作为全球最大的企业管理软件厂商也无法做到。