最近接触了一些关于SOA的相关理论,很是遗憾,没看出什么名堂来。最近为什么网络上比较流行SOA呢?个人认为这东西太悬乎了,凡是有什么好的软件思想或是方法都称之SOA,难怪架构师和软件企业那么热忠的去追捧它,似乎SOA万能,好多软件厂商都鼓吹自己的软件是面向SOA的,用SOA的热门词汇来攻关市场。几年前,一个简单的业务流程管理软件当作ERP,然后换成iERP,直至现在ERP变得很烂很臭,最终让企业谈E色变。金融危机来了,这一波过后能让ERP柳暗花明么?真希望SOA不要向现有的ERP或是OA,炒作向明星似的。面向SOA的软件系统能解决业务流程灵活变化的问题吗?由于现在我只是一个初级的程序员,接触的软件企业不多,感觉到很多软件厂商都只解决了一些常见的技术问题,没有真正意义上实现业务流程上的灵活变化。部分软件商做到的只是(X)OS,例如(BOS,EOS),说白了就是一些简的组件设置一下数据映射关系,然后形成人机交互接口,做出了一套面向用户的业务流程平台。对于这种做法,我很是怀疑,首先,软件的效率会不会受影响,比如一个订单信息,包括很多参照信息(客户、事业部门、负责人),这在系统底层设计时如果封装服务,单独访问各自的数据,硬件条件是否受到了限制。其实,这类系统平台几乎是基于模板的,基于模板的系统能适应灵活么!最后,类似的系统培训成本不高么?我试图用过几个相关的平台,自认为计算机应用软件操作得还是不错,看过相关演示,感觉还是不能解决实际工作中遇到实际的复杂业务流程的应用,用这类系统来生成一个流程管理软件,比重新学习一门语言或是自己写一个项目还难,最终明白了为什么大公司的软件开发工具包(VS.NET + Framework)的设计意图,越简单越能适应变化,发挥空间越大。那么,如果你是企业,你愿意授受一套通用系统还是一个量身定做的软件。如果你是开发商,你愿意做一些复杂的工作还是简单的工作,你是走通用产品道路还是二次开发项目的道路。
接下来,你遇到过没变化的系统么?你遇到软件系统的变化是怎么应对的。拿企业一个简单的业务流程来说吧!比如销售订单,在制定订单过程中,有些企业按合同严格执行,但有些企业不按合同执行。开发阶段,软件设计的架构是否能更快的适应软件业务流程的变更,良好的软件架构能很好的适应软件变更,很方便的进行后期维护。对于企业业务流程的变更,根据SOA的理论,将软件划分成一个单独的服务,然后根据实际情况组合服务。在服务结构定义上,采用最大原则,将服务所用到的数据抽象成接口或是一个单独的实体类,然后提供服务口访问的方法,从而达到服务的组合重用。上面的情况是没有改动本身的订单实体,如果在实体本身需要改变的时候,比如订单原来是不按合同就可以发货,在保存订单时需要保存合同信息,这种变化影响到软件结构的变化,这种变化可通过软件配置管理,形成新的版本,作为一套单独的系统来运行。实施阶段,作为一套系统,最好以不变来应对变化,比如客户要求不参照合同也能进行订单生成,像这种不影响数据小的改动,您可以要求他虚拟合同来完成订单申请,尽量去说服客户接受现有的版本。
总之,对于业务流程管理软件来说,软件开发本身不存在什么技术难度。如何提高软件的灵活性,一个良好的架构和业务的灵活变通是业务流程软件发展的方向。用一套复杂通用的软件系统替代一个流程软件,来实现一套管理方法是很难做到的。一个良好的管理系统应该能充分体现一个企业的业务流程管理思路,形成企业的核心竞争力,管理思路的改变意味着软件的改变,软件架构的灵活意味着业务的灵活。