探索中国CIO人才现状 | 第四季调研报告
ERP中BOMDWS系统的设计研究
2014-02-18  作者:万方数据 

  引言


  企业资源计划(EnterpriseResourcePlanning,ERP)系统是在早期的物料需求(MaterialRequirementPlanning,MRP)和制造资源计划系统(MRPII)基础上发展而来的。企业资源计划系统是一种以生产经营、计划管理为主线,辅以CAD/CAM,Internet,GUI和EDI功能的当代企业管理方法,它代表了当代最先进的企业经营生产管理模式与技术。物料清单(BillofMaterial,BOM)是ERP系统的重要基础数据,它的组织是否有效直接关系到企业资源计划系统的性能。


  物料清单BOM是ERP系统的重要基础数据,它产生于产品设计部门,生命周期的各个形态贯穿于各个部门。BOM作用于计算机识别物料、接受客户定单、编制计划、配套(装配)和领料、加工过程跟踪、采购和外协、成本计算、报价参考、物料追溯、改进产品设计等等。它的组织是否有效直接关系到企业资源计划系统的性能。对BOM的数据、BOM的特性、BOM的结构研究和分析表明,ERP系统中BOM的有效管理是一项非常重要和困难的工作。现有的BOM管理方式,是在各业务部门的事务处理系统中进行管理和组织,且已有BOM管理体系基本都是基于事务性系统构建。这样做不利于解决上述BOM管理中的难点,主要存在以下缺陷和不足:


  首先,由于各项应用处理的分散性,存在着数据信息相互独立的缺陷和不足,从而易形成各个“信息孤岛”。很显然,这样的“信息孤岛”将导致企业数据无法有效地支持决策和统计分析,而且,会引起企业中BOM数据“不一致”的问题。其次,企业用户对原始业务数据库中的数据的抽取,如不加以控制,制定统一标准,只是按需抽取,将会使系统数据间形成错综复杂的网状结构——“蜘蛛网”问题。再者,从BOM数据的使用者角度考虑。在企业中,针对各级用户,BOM数据的综合程度要求不同。而传统的基于数据库组织的BOM数据,只是一些实时数据,即使有一些汇总数据也是未经过专门性统计和汇总的数据,当使用者需要或作计划时才进行加工处理。然而一个企业中日积月累的BOM数据量非常庞大,这样做,没有把分析型数据从事务操作中分离出来,将影响系统运行效率。


  数据仓库技术为在BOM系统中建立这种决策分析环境提供了一种有效的数据存储和组织方式。数据仓库概念的形成是被誉为数据仓库之父的w.H.Inmon在1993年于《建立数据仓库》(BuildingtheDataWarehouse)一书中正式提出的,他对数据仓库作了这样的定义:“数据仓库(DataWarehouse,DW)是90年代信息构架的新焦点,它提供集成化和历史化的数据;集成种类不同的应用系统;数据仓库从事物发展和历史的角度来组织和存储数据,以供信息化和分析处理之用,是面向主题的、集成的、稳定的、随时间变化的数据集合,用以支持管理决策的过程”。数据仓库不是数据的简单堆积,而是从大量的事务型数据库中抽取数据,并将其清理、检验、加工和重新组织为新的存储格式,以满足决策目标。用户可以按不同的决策主题对已有数据库进行分类、综合与存储,并采用数据挖掘(DM技术和联机分析(0LAP)技术对决策中所需的数据进行深层挖掘与分析,在已建立的各类数据库的基础上构造数据仓库。


  1BOM数据仓库的体系结构


  BOM数据仓库系统(BOMDataWarehouseSystem,BOMDWS)对原BOM管理系统的数据集成抽取,进行不同程度的综合,为OLAP提供支持。它可分为四层:基础数据层、当前详细数据层(全局数据仓库)、综合数据层(数据集市)、客户层。这四层相互作用,共同构成BOM管理系统的事务处理和决策分析处理。


  基础数据层该层主要是基于事务处理,即各原始的数据库,包含基础的物料数据和大量的产品设计BOM数据,是其他各层的数据来源。


  详细数据层包括当前详细数据和历史详细数据,数据从基础层的数据库中析取和集成后直接导人该层。该层主要进行采集、清理、转换、集成、装载等操作,使得原始操作型数据转变为集成的、一致的数据。该层存储的主要是大量的细节数据,支持数据的细节查询,是BOMDWS的核心数据层。


  综合数据层各业务部门可根据业务需求,在全局级DW的基础上,抽取适合自己所用的数据并进行综合处理后存人部门级数据仓库。该层数据用多维模型组织,以支持部门级多维分析。其数据是全局级数据仓库的汇总数据,面向各部门管理者,以支持决策。


  客户层该层提供用户接口,用户在这一层上进行OLAP操作,并生成各种报表。


  从BOM数据仓库体系结构可以看出,数据从基础层进入全局数据仓库,而后导入部门数据集市,解决了信息孤岛和蜘蛛网问题,更有效的维护了数据的一致性。由于在BOM全局数据仓库基础上建立了部门数据集市,因此使得有效的生成和管理BOM的多视图成为可能,本文在这方面做了初步的探索;由于部门数据集市采用多维模型组织数据,因此可以对部门级的数据进行多维分析,以支持决策。


  2数据仓库的生成接口


  数据仓库的生成所要做的工作主要是接口编程和数据的装入。


  2.1设计接口


  生成数据仓库的主要任务是向产品使用外购件、外协件、自制件的信息(product_use)和零部件的用量信息(part_use)这两个表里导人数据。遍历产品设计BOM的每个零部件节点,统计每个零部件的用量,一种零部件被该产品用到,useflag数据即为1,作为统计零部件被使用频率细节数据,汇总每个产品使用外购件、外协件、自制件的数量。通过编写触发器和存储过程实现数据的导人。


  2.2数据的装入


  运行接口程序,确定数据装载次序,先导入part_use数据,接着从part_use中进一步统计数据导入product_use。数据仓库的数据需要不断从原系统不断追加,下面是BOM数据仓库的数据追加策略:


  创建两个表hasimported和notimport,这两个表结构相同只有一个字段,记录产品编号(product_key)。


  运行数据导入接口程序时,读取notimport表里的记录,装载对应产品的数据,同时把产品的产品编号移人hasimported表中;若notimport里无记录,则表示没有产品数据需要追加。


  在原系统中执行保存产品的设计BOM时,查看该产品的产品编号是否存在于hasimported,若存在,表示不能修改产品的设计BOM,因为该产品的数据已经被导人数据仓库不能再被修改;若不存在,表示该产品的设计BOM还没有被导人数据仓库,可以修改并保存,保存的同时,把该产品的产品编号写入notimport表中。


  这样,在进行数据仓库的数据追加时,只需要读取notimport表中的记录,导入对应的产品数据即可。


  3BOM数据仓库管理系统的实现


  3.1BOM数据仓库管理系统的开发环境


  系统的开发平台是Jbuitder9.0,数据库服务器采用Oracle9i,应用服务器采用Weblogie8.1。系统采用Java语言实现,系统中大量的Applet,JSP,Servlet还有JavaBean,EJB,均在Jbuilder上开发完成。Oracle9i数据库服务器强有力的支持Java,Java通过JDBC连接Oracle,比连接SQLServer表现出来的性能要好,而且Oracle支持对象类型,这给数据表的建立提供了更多的选择,在系统的标设计中就用到了嵌入表,在存储过程的设计中,也用到了自定义对象类型和对象数组。另外,为了辅助开发,借助PLSQLDeveloper和jfreechart。PLSQLDeveloper是用来开发PL/SQL程序,它不仅可以编辑PL/SQL代码,还可以进行语法检查和跟踪调试,大大弥补了Oracle在这方面的缺点,而且PLSQLDeveloper还可以作为Oracle客户端工具使用;jfreechart是一个开源项目,它可以方便地加人Jbuilder开发环境,运行在应用服务器上,方便地生成柱状图和饼图等多种报表。


  3.2BOM数据仓库管理系统的设计实现


  采用J2EE三层模型设计BOM数据仓库管理系统总体结构可以简化应用程序的开发,自由选择J2EE应用服务器,开发代价低,易管理,而且可移植可跨平台,不限于特定的操作系统和特定的应用服务器。这是其他体系结构无法比拟的。系统的详细设计主要包括数据库中表和函数、存储过程、触发器的设计、服务器端组件的设计,还有浏览器端Applet的设计实现。数据库端的设计主要是表的设计、存储过程和触发器的开发。存储过程和触发器直接在数据库服务器上运算,减少服务端与客户端的交互,效率更高,可以充分发挥大型数据库的优势,尤其在基于Web的应用系统中,更应把和数据密切的操作封装在数据库服务器端,减少和服务器端的交互不仅可以提高效率,更能提高安全性,也遵循了低耦合高内聚的设计原则;在针对数据库编程时,很多复杂的对数据记录的操作被封装在存储过程里,也大大简化了编程的复杂度,易于开发和维护。在系统的实现中,对BOM的遍历以及零部件的统计都在存储过程和函数里完成,数据库端用到了三个存储过程和一个自定义函数,还用到了两个触发器,用来对数据进行自动分类。


  服务器端的设计主要是JavaBean,Servlet,EJB,JSP的设计。


  服务器端有两个JavaBean,DBConnection负责取得连接数据库的数据源DataSource的一个实例,ChartBean里调用jfreechart组件从外部取得数据集生成报表图片并输出图片的文件名。


  在服务器端开发了很多Servlet,结构和功能都相同,向上和Applet交换数据,向下和数据库交换数据。


  JSP主要用来实现对数据的统计分析,并把统计的数据传给ChartBean,在浏览器里先是ChartBean生成的报表图片,另外也实现对物料数据的查询。


  浏览器端的设计主要是Ajax和Applet的设计。通过Ajax在浏览器和Web服务器之间使用异步数据传输,Applet可以提供复杂的交互功能,它和Servlet的数据交互是关键技术,和Servlet的设计类似,也包括发送和接收数据。


  3.3BOM数据仓库管理系统的主要实现结果


  本系统完全基于Web运行,部署简单,易于维护,而且可以跨平台;同时易于操作,有很强的交互功能。


  系统运行于浏览器中,除了在客户的机器上需要安装JAVA虚拟机外,几乎不需要做任何配置,因此系统的运行环境简单易于维护,界面的设计采用卡片式页面,充分利用显示空间,也易于切换,和Windows风格保持一致,BOM结构的展示采用JTree类实现,形象地展示了BOM的树形结构,而且在树形结构上可以直接对BOM进行编辑。


  多维分析的结果以柱状图和饼图显示,jfreechart组件在应用服务器端接受多维分析结果,转换成图片,传到客户的浏览器上。


  4结语


  数据仓库是数据库技术的发展,采用传统的数据组织方式组织管理BOM数据不利于对BOM数据进行分析统计和多维度观察。针对这些问题,提出了用数据仓库的理论和思想集成转换原始BOM数据,构建BOM数据仓库。BOM数据仓库的建立解决了数据不一致和“蜘蛛网”等问题,同时为企业的决策分析提供了完整、一致、不同粒度的综合数据,使得用户能够对集成后的数据进行分析统计和多维考察。系统基于J2EE架构实现,具有可跨平台、可移植、易于管理等优点。本文在数据仓库的基础上对BOM的研究也只是针对某些方面的问题,下一步的方向是需要进一步研究多BOM的映射机制,使得BOM的各种视图为对应的部门提供更为准确详尽的信息,以及考虑在数据仓库基础上对BOM数据进行挖掘(DataMining,DM),发现产品及零部件之间的关联规则,以支持产品和零部件的设计。