【IT168 信息化】
对于大型企业集团来说,企业信息流复杂、信息量大、生产制造部门众多,不同部门所采用的MES系统不尽相同,具有各自生产部门的特点,同时所需要的总厂PDM信息也不完全相同。在这种情况下,为了实现系统间信息的共享和信息的及时反馈,提高企业的敏捷性,应用信息集成化技术,更好地集成各生产制造部门的MES与PDM系统,实现对复杂的项目型生产的管理,已成为集团化生产企业信息化建设发展的一种必然选择。对某飞机工业集团的调研报告指出,由于不同生产制造部门MES系统的数据库结构不完全相同,造成了MES系统与PDM系统间数据流动不顺畅,因此实现异构数据库的信息集成异常重要。异构数据库的信息集成方案有很多,总结起来大致可以分为以下几种:共享数据库、专用接口、中间数据库、XML数据流以及中间件等。共享数据库虽然简单、快速,但要求PDM与MES数据结构一致;专用接口要求PDM与MES必须了解双方数据结构,因此需要在两系统间公开各自的数据模型。这样才能将PDM的数据转换成MES能够识别的数据;中间数据库要求非常专业的人士对产品数据进行描述,否则容易出错;采用XML能够使不同数据库的数据通过统一的XML数据流进行集成,摒弃了平台和数据间的差异;中间件处于应用软件与系统软件之间,是一种以自己的复杂换取企业应用简单化的可复用的基础软件。针对各生产制造部门异构MES系统,本文拟采用适用于任何需要进行网络通信的系统的消息中间件,负责建立网络通信的通道,进行数据或文件传送。消息中间件的一个重要作用是可以实现跨平台操作,为不同系统上的应用软件集成提供服务。
1 MES与PDM的集成内容
MES作为车间执行系统与CAPP、ERP、PDM、SCM、SSM等信息系统相互联系、相互依存。PDM作为一个集成平台,MES不仅需要从PDM获取BOM结构、工艺规程、设计图纸等信息,MES本身也需要向PDM提供诸如生产进度等信息。二者之间的集成方式主要分为基于XML中间文件的集成和基于企业服务总线的集成,本文将对这2种集成方式进行描述。
在PDM系统与MES系统的集成过程中,PDM系统负责维护产品数据,是产品数据的惟一来源。MES系统作为产品数据的使用者,其产品数据由PDM系统提供。集成主要包括3个方面的内容:从MES系统发给PDM系统的产品数据请求;PDM系统反馈给MES系统的产品数据;PDM系统定期对MES系统中产品数据进行同步处理,以保证产品数据版本最新和2个系统产品数据的一致性。PDM与MES的主要集成数据包括:产品结构信息即BOM、产品工艺信息和产品物料信息。
本文以某飞机工业集团的复合材料公司MES系统为例。MES系统与PDM集成平台进行BOM信息集成应实现以下功能:
MES系统需要导入该部门产品结构关系所需要的物料清单,即BOM结构,这需要对数据惟一性、字段长度与类型进行验证。BOM导入功能可以从设计部门给出的PBOM按照实际需求,快速得到所需要的MBOM。在MES系统中,BOM表结构采用父子型数据结构,通过零部件的装配关系与被装配关系来描述,主要字段有父物料号、子物料号和装配数量,如图1所示,父子型的数据结构能降低BOM的数据冗余性,提高了BOM数据的一致性。
图1 BOM表结构
2 基于XML的集成方案
2.1 总体框图
XML可以实现异构数据之间的数据转换,由于XML是一种元标记语言,它可以应用于任何平台之上,XML的这种特性为异构数据的交互提供了一种数据交换的标准。它是一种公共的交互平台,一种数据源只要能将它的数据转换成XML格式就能够被另外一种数据源有效地识别,这为数据的迁移以及整合提供了很好的工具。图2是MES与PDM系统集成框架图。
图2 基于XML的集成框图
2.2 MES中MBOM结构的导入
在MES系统中,MBOM是对复合材料产品进行计划编制、物料需求、产品配套、项目跟踪的基础。如果没有有效的集成,靠系统维护人员手工录入大量数据,容易造成各种各样的错误,因此选择一种简单易行、准确的方式实现MBOM结构的集成就显得异常重要,本文利用XML作为数据交换格式,建立规范模板,解决不同数据模型、不同数据格式转换传递的集成问题,实现异构数据间的数据转换。
在XML文档库中,XML通常是分成2个区域来描述MBOM:控制区和数据区,如图3所示。
图3 XML文档结构
要验证XML文档对象结构正确与否还需要通过DTD文档进行结构验证,在此略去DTD文档内容。当上述XML文档上传到Web服务器时,便需要修改Change.xml文档中的内容,以表示该BOM信息出现数据变化。
xml_share/bom</directory>
bom</file>
</changexml>
MES客户端则需定时监视Web服务器的文件目录,即定时下载Change.xml文档,然后将change.xml的内容读取到xmlDOM对象中,DOM定义了一组分析元可以显示的标准指令集,通过程序存取HTML或XML的内容,然后通过程序中的对象集合将其显示出来,可以通过创建Document对象,使得应用程序得到对XML文档进行操作的入口,读取节点change.xml中directory信息和file信息,如果信息不为空,则说明有更新文件需要下载,再利用xmlDOM的get方法获得更新文件的内容以及DTD文档的内容,最后一定要将Change.xml文档内容删除,用put方法再上传到Web服务器中,以便下次PDM系统有新的信息进行更新。
当用XML解析器也就是利用DOM方法提取XML文档中的各个节点后,接着就是把真正需要的节点数据信息存入数据库,更新基础数据。
3 基于ESB的集成方案
在大型的企业中,随着应用系统的不断增加,对信息共享、系统的互操作和软件重用提出了更高的要求,而独立的XML中间文档库已经不能充分满足业务不断拓展的需求,因为不同生产制造部门的MES系统需要从PDM系统获取不同的数据信息,这时便需要PDM系统同各个MES系统进行两两互连,而两两互连势必形成网状拓扑结构。随着MES系统的增加,网状拓扑结构会变得越来越复杂并难以维护。在这种背景下,一种面向服务的企业架构(SOA)出现了,SOA指的是企业的应用系统都以服务方式接入企业服务总线(ESB)。企业服务总线类的中间件其实就是一类星型结构的中间件,由于星型结构的中心节点控制着全部的数据传递,因此可以集中进行消息格式转换,将来自源系统的消息格式主动转换成目标系统能够识别的格式。本文将采用Websphere Message Broker(MB)和Websphere Message Queue(MQ)在应用系统之间通过基于消息的异步方式集成各应用系统。
3.1 集成的总体框图
MB处于系统的中心,起到一个总线的作用,所有应用都直接连接到MB,而不是应用之间直接互联,这样做的好处是可以极大地降低应用之间的耦合性。由此引出MB的2大核心功能:消息路由和数据转换,因为各个应用都插入到MB上,所以应用系统只需把消息丢给MB,MB自动根据消息字段以及业务逻辑,判断要把消息交给谁,有点像路由器,根据数据包的头把包路由到相应地址。MB是由一些组件构成的,代理、路由、转换和补充当前信息,Message Brokers Toolkit是WMB的集成开发环境,在该工具中可以开发消息流、消息集、消息映射、ESQL代码、消息格式(XML)、转换模式(XSL)、Java代码等。开发工具将开发完成的成果打包归档部署到运行环境中,在运行环境中生效。
图4 基于MB的集成架构
3.2 集成过程
消息传送有2种方式:消息从一个应用程序直接发送到另一个应用程序,这称为点到点消息传递;另一种消息传递方式称为发布颀订。发布应用程序将关于一个主题的消息发送到代理,代理将发布的消息传递到已注册的对特定主题感兴趣的应用程序,发布者和订户都不知道对方的存在。基于MB的集成属于发布/预订方式。
MB提供了3种方式与应用系统互相连接:MQ、文件和Web Service。
MQ方式利用MQ将MB与应用互联;文件方式则是指定某个目录,MB会自动监视那个文件目录,一旦文件有改变则认为是新的消息到来,MB自动读取指定文件的内容,利用Web Service进行通讯。MB支持这些互联方式也是为了最大化兼容性,特别是对于那些遗留系统或是不支持主流通讯方式的系统。
在应用企业中,不仅复合材料厂的MES系统需要PDM系统上的信息,其他生产制造部门,即其他相关制造部门的MES系统也需要PDM上的信息,因此PDM系统将其BOM主题信息发送到代理,代理将发布的消息传递到注册了该主题的订户。对于MES系统,具体过程为:PDM系统将其BOM主题信息放入队列BOM_PUBLICATION或者Real-timebomln队列中,其中BOM_PUBLICATION为PDM系统中的E-BOM,当工程更改或版次发生变化时,将更改的信息放入Real-timebomln队列中,根据产品图号条件进行过滤,选择不同的订阅方进行发布。经过过滤后,若订阅方需要对BOM信息进行修改,可用Compute节点通过ESQL代码实现对消息的处理和数据表的操作,再发送到订阅方。Publication节点是按代理订阅表发布消息,过滤和消息处理后可用该节点进行消息发布,图5所示为详细的消息流设计。
图5 消息流的设计
当部署启动时,会编译和封装消息流,并将其发送到配置管理器,配置管理器会解包消息流并做记录,然后将它们路由到相应的代理,在代理中消息流经过消息映射、消息过滤等步骤,将BOM信息转换成MES需要的BOM信息进行发布,在MES系统收到后就可以更新其数据库。
例:PDM系统将所有的BOM信息以XML文档形式放入BOM PUBLICATION队列中,文档结构是如图3所示的结构,而MES系统如果需要产品图号为DD-090514-1-B1的BOM结构,则需要在Filteron productid节点进行如下的ESQL编程:
CREATE FILTER MODULE productid Filter
CREATE FUNCTION Main () RETURNS BOOLEAN
BEGIN
IF Dataarea.productid=‘DD-090514-1-B1’THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;END;
END MODULE;
Publication则将处理后的消息按照订阅表发给MES系统,MES系统便可以更新数据库。在消息过滤后,如需要对BOM信息进行合并或修改,则在compute节点进行ESQL编程,首先遍历各个节点,对物料和层次都相同的物料数量进行合并,形成新的XML节点树,这样便可以得到我们所需要的MBOM。
4 结束语
MES在企业中起着承上启下的作用,在没有实施MES系统时,管理系统往往掌握不了生产层的实时现场数据,使得生产层和管理层脱节,而MES的实施便能很好地解决这个问题。MES的实施需要产品的基础数据,这就需要企业的异构系统间实现信息集成,否则靠大量手工输入数据,容易造成错误,而且效率低下。本文介绍的2种集成方式,利用XML作为数据交换的中介,使BOM信息和MES信息的数据以统一的格式呈现在客户面前,简单通用,但当需要互连的应用有多个时,这种简单的方式会因为环境的复杂性而显得无所适从。而Websphere MB消息代理中间件,通过对消息流各个节点的ESQL编程,节点映射,数据库操作,最后进行归档和部署来实现异构系统间的集成,很好地解决了“一对多”的现象,从而为更高层次上的业务整合做好了准备。尽管实现系统间集成的中间件有很多,但IBM WebSphere MB以其强大的服务互通性,支持多种通信协议和多种数据格式实现了一系列的广泛需求,使得企业的解决方案更加灵活。