SOA在一个典型企业应用有什么?
SOA在一个典型企业应用有什么?
最近参与了一个典型的企业应用。整个项目主要分为3个部分:MES,EAI和BI。
MES:
MES 制造执行系统,英文意思是(Manufacturing Execution System)。 MES是美国管理界上世纪90年代提出的新概念,MESA(MES国际联合会)对MES的定义是:MES能通过信息传递对从订单下达到产品完成的整个生产过程进行优化管理。当工厂发生实时事件时,MES能对此及时作出反应、报告,并用当前的准确数据对它们进行指导和处理。
本项目中主要实施Camstar的InSite TAP系统,就像实施ERP一样,会有针对客户的一些定制开发。
这部分超出我的知识和技能,所以我不做过多评说。
EAI:
把原有系统ERP和MES集成起来,以及把MES和设备控制系统集成系统。MES和ERP主要进行业务上的集成,包括把ERP的订单转换成MES的工单,以及MES中的生产批次。而后,需要把MES的信息汇总成为ERP的某个业务数据。
本项目使用了数据集成的解决方案,提供了一个Stage Server作为两个系统的数据交换器。在Stage Server上独立定义一套Data Schema,不管是MES或者ERP都按照这套独立的Data Schema来Input ,Output数据。
我的建议是使用Biztalk之类的EAI工具,可保证数据映射的灵活性,又可保证业务执行的事务性。并且Biztalk提供了很好的基础框架,可以免去很多需要手工开发的地方。
同样MES和设备控制系统也采用了类似的方式来进行集成。
BI:
本项目需要把多个工厂的MES的ODS(Offline Data Store)和一套ERP集成的数据收集起来,进行查询分析,生成各类报表。
理论上需要把这些数据经过ETL过程,放入到Warehouse里,然后再根据主题构建DataMart,再使用相应的BI前端工具来进行数据的查询分析,以及报表的生成和递送。
本项目最终使用BI前端工具直接查询多个数据源的方式来实现初级的报表功能。这样的方式,如果企业需求变化了,且不是要重新开发一道报表?
SOA
对于这样一个典型的企业应用,我认为使用SOA可以很好的解决目前的需求,又可以为以后打下很好的扩展基矗
首先需要构建一个ESB,ESB的构建根据企业的行业类型,规模以及系统的分布程度可能会有不同的功能和性能要求。
针对各类系统提供SOA的服务接口,并接入到ESB中。ERP的服务一般来说由ERP供应商提供,MES的服务也同样需要由其供应商提供,其他系统也类似。但是需要满足一个统一的SOA标准。
实施工作就是需要把接入到ESB中的服务适配起来(挂接其他)。两个系统的服务经过挂接后,即可进行业务的协作。通过SOA,各类业务系统交换的不是独立的数据,而是服务之间的相互调用。
对于BI这样以数据为核心的应用来说,我认为也可以融入到整个SOA的体系中。首先可以把原有的ETL工具认为是一个独立的系统,他向整个SOA提供的服务即是ETL服务;Warehouse和DataMart也可以从一个数据源演变为能独立提供服务的系统。这样只需要把ETL、Warehouse和DataMart的服务接入到EBS中,BI前端工具就可以方便的从EBS中获取需要的服务,而无需考虑这些服务是由什么提供。甚至于目前没有Warehouse,DataMart之类,同样可以调用业务系统的服务来生成报表。以后根据需求发展,只需把服务替换掉就行了。
(PS:以上文字纯属一时兴起,夸夸而谈,也不够详细,请各位读者不要较真!)