基于ESB的集成式PLM系统实现
扫描二维码
随时随地手机看文章
摘要:随着企业中越来越多的信息软件和管理软件的应用,如何将这些软件有效地集成起来,使整个企业管理交流系统化、流程化成了许多企业面临的困惑。在研究面向服务的架构以及企业服务总线的实现方法的基础上,提出了一种PLM系统的实现方式。采用此种方法,可以节约企业在企业管理软件上的投资,有效利用原有软件资源,实现原有多种管理信息软件向PLM系统的转变,完成企业信息平台的整合集成。
关键词:面向服务架构;企业服务总线;产品生命周期;集成式PLM系统
0 引言
面向服务架构(SOA)是一种组件模型,它通过应用程序功能单元(称之为服务)之间定义完善的接口和契约,来联系应用程序中的不同服务。一般对SOA比较一致的认同观点是:服务应当通过明确的、与实现无关的接口来定义;服务可以被松散绑定,并且可以通过强调位置透明性和互操作性的通信协议进行调用;服务封装了可重用的业务功能。SOA依赖于将应用程序发布为服务,这些服务可被外部各方调用。其核心本质是实现服务和技术的完全分离,从而最大限度上实现服务的集成和重组。换句话说,SOA可以将所有的软件都改造成一个一个的服务,各个软件之间的联系都采用服务来完成。有了这个架构,每个软件的开发团队只需要关注自己负责的软件就可以了,使得当前软件的维护和后续软件的开发就变得简单多了。
企业服务总线(ESB)是从消息中间件的基础上发展而来的。ESB采用“总线”的模式来管理和简化应用之间的集成拓扑结构,以更加开放的标准为基础来支持应用之间在消息、事件和服务的级别上动态的互联互通。ESB是一种在松散耦合的服务和应用之间标准的集成方式。主要可以应用在以下三个方面:1)面向服务的架构:分布式的应用由可重用的服务组成;2)面向消息的架构:应用之间通过ESB发送和接受消息;3)事件驱动的架构:应用之间异步地产生和接收消息。ESB就是在SOA架构中实现服务间智能化集成与管理的中介。如图1,常见总线方式的SOA架构模型。
产品生命周期管理PLM(Product Life—cycle Management)自20世纪末提出以来,便迅速成为制造业关注的焦点。PLM结合电子商务技术与协同技术,将产品的开发流程与SCM、CRM、ERP等系统进行集成,将孤岛式流程管理转变为集成化的一体管理,实现从概念设计、产品设计、产品生产、产品维护到管理信息的全面数字化;实现企业知识价值的提升与知识共享管理,产品开发和业务流程的优化,从而全面提升企业生产效率,降低产品生命周期管理的成本,以提升企业的市场竞争力。
1 集成式PLM系统的思路
随着越来越多的企业部署了OA、ERP、CRM等系统软件,来加强整个企业信息流程的管理和业务信息的交流,如何成功的将各个系统的数据信息集成到一起成为企业关注的焦点。将不同数据库不同结构的系统紧密而合理的集成起来,以完成企业内部甚至与外部企业和用户的业务交流,成为了各企业用户最为普遍的想法,也成为软件开发行业的热点。集成式PLM系统可以将0A、ERP、CRM等系统软件成功整合在一起,实现企业信息的完美整合,以及企业业务流程的控制。图2是一种集成式PLM系统模型:
随着技术的不断发展,Web Services、JMS等的不断出现,一种实现SOA系统架构的方案出现了:ESB,即开发出一个转化、处理的综合性平台,实现各个软件之间数据的“黑盒”联系。不论采用何种技术方式向“总线”提交请求,“总线”都能成功地应答并返回相应的数据。对现存的企业应用软件进行ESB系统架构改造时,可以将各个软件与其他软件进行数据关联的地方进行必要的、不改变技术手段的改造,使之连接到ESB中。这种改造的改动非常小,因此成本也很低,就使得SOA系统架构的实现成为可能。ESB需要实现对于消息的控制、传送、分派、解析。
图3是一个常见的对现有系统进行改造的ESB系统架构。
图3常见的对现有系统进行改造的ESB系统架构在这个架构中,每个组成部分称之为一个服务。不同的相关服务的组合,就形成一个相对完整的系统。这种系统结构的优点在于服务的组合、发布、重用,具有依赖性低;能够同时运行不同的软件版本;相对独立,便于团队的开发和理解;与原系统集成的成本低廉。集成式PLM系统就是要在企业原有的管理和信息软件基础上,根据实际的需要,将各类企业软件系统封装成一个个服务并通过ESB集成的方式,整合到一个平台下,这样可以有效地利用原有资源,也可以在此基础上进行后续开发。
2 集成式PLM系统实现
通常公司或企业里最常用的莫过于资源管理系统(ERP)和客户管理系统(CRM),下面就以这两种系统的集成为示例,介绍一下基于ESB解决方案的集成式PLM系统的部分实现。这两个系统的功能在某些方面是重合的,但是侧重点和系统开发商不同。如果没有一个统一的理念来管理这两个系统或更多的系统,想结合起来使用,难度很大。如果再加上公司的其他系统,那么整个系统简直就是一团乱麻。
对CRM和IERP系统的整合内容主要包括:客户管理、产品管理、工作流管理、工作人员管理、营销管理、销售管理、客户服务和支持、订单管理、信息交流、决策支持等。如果要新增加一个客户或者一个产品,需要保持两个系统里面的数据的一致性。如果软件不是来自同一个厂商,两者不能在数据库层面集成,可以使用下面的方法解决此类问题。
2.1 建立ESB系统总线
利用ESB总线的思想,采用JMS平台进行消息传递,可以实现对系统的整合,ESB总线传递的是消息,需要实现消息(信息)的转换、订阅、发布、传送、分派、事件解析、事件通知、事件注册、事件储存等功能,如图4所示。
信息转换和时间订阅/发布等,需要写代码完成,本例中外部全部使用Web Services,可以不进行信息转换的工作。事件的存储、注册、订阅、发布等,在JMS中有比较完整的实现,由于篇幅的限制,在此不再赘述。
2.2 设计接口
ERP系统和CRM自身都是一套完整的管理系统,为了实现相互之间的数据传递,根据需要传递的数据设计一系列的接口,当有数据变化的时候,可以通过接口将数据传递到ESB,由ESB执行数据的分发,这里以客户管理为例来说明接口设计:
当CRM系统中有数据改变时,需要将CRM系统里的客户信息填充到这个接口。反之,当ERP系统中有客户信息变化时也需要用数据填充这个接口。其他的模块,例如工作流管理、产品管理等按照同样的原理设计接口。
2.3 根据接口加强ESB功能
当客户信息变化的时候,CRM系统不能将信息直接发送到ERP系统,而是应该发送到ESB系统总线,反之依然。由系统总线实现消息和数据的传递,同样以client信息为例,ESB总线需要添加下面的接口:
OnClientChangeEvent(sender,IClient);
//客户信息修改事件
RegisterCl ientChangeEvent(sender);
//系统向ESB注册Client事件
其他的接口也需要添加类似的接口。
2.4 封装管理系统,向系统添加适配器
由于ERP和CRM都是独立的管理系统,用户往往没有代码,不能直接提供上面提到的服务,即使有代码,要修改这些代码也是需要花费大量的时间。为了将系统挂到ESB总线,也需要实现上面的接口,可以专门写一个适配器,分别将CRM和ERP系统封装,在适配器里面实现上面的接口。然后将适配器和ESB总线挂起来。例如:修改客户的时候,CRM适配器(如图5所示)会接收到客户信息修改的通知,适配器将修改的信息转换成接口的信息,将信息发送到ESB总线,ESB总线会检测哪些系统注册了这个事件,再将这个信息发送到ERP的适配器里面,最后ERP的适配器将自己的系统更新,实现了数据的同步。
将上面提到的Client的函数封装成一个服务,由适配器保留这个服务给ESB总线。其他的接口按照同样的原理实现。
2.5 将组件挂接到ESB总线上适配器完成后,只需要将系统挂到ESB总线上,并且注册相应的事件,就可以实现数据的同步更新和消息的传递。如图6所示。
利用ESB系统总线,将CRM和ERP系统都看作是挂到总线上的组件,ESB中实现消息的通知、分派、集合。在系统挂到总线的时候,注册自己相应的事件,当CRM系统中增加用户的时候,发送XML消息到系统总线,系统总线检查哪些系统注册了这些信息,将信息分派到注册的系统中。每个系统将消息转换成自己认识的数据并且保存到数据库,完成数据的同步。
2.6根据上述原理和方法,可以将企业原有的以及后来添加的业务软件包装成一个个服务,通过适配器将其挂接到ESB总线上,最终实现向集成式PLM系统的转向。
3 结语
本文简单介绍了集成式PLM系统整合的一种方法,通过面向服务的组件,将所有的系统挂接到一个ESB总线上面,实现了对系统中消息的管理、削除企业内部信息孤岛,使各个系统之间可以自由通信。同时,通过CRM系统和ERP系统的整合为例,提出应该如何设计接口实现整合的方法以及对相应的集成式PLM系统的实现方法。