陈小磊,吴健,张冠文
制造资源计划(Manufacturing Resource Planning,简称MRPⅡ)是由物料需求计划MRP发展起来的一种先进的企业现代化管理方法。它以MRP为核心,指导企业对物料、设备、人力、资金、信息五大资源进行全面的规划和控制,将产、供、销、人、财、物各种经营活动结合起来,形成一个有机的整体,最终构成一个人-机结合的闭环反馈控制系统。同时,它向企业提供信息,支持企业生产经营活动的运行、管理和决策,使企业在有限资源条件下,取得最大的经济效益[1]。MRPⅡ因其显著地效益,被当今世界制造业作为标准管理工具而广泛使用。
同时,目前大部分企业的IT构架都存在不宜扩展、不够灵活、应用开发周期较长以及利用率较低等问题[2],无法满足企业对业务敏捷性的要求,而SOA(Service-Oriented Architecture)作为一种软件体系结构风格通过复用性、灵活性和共享性从技术上支持企业的需求。本文以陕西某制造企业为背景开发了基于SOA的制造业MRPⅡ系统,对一般制造企业具有通用性。
SOA可以看成一种管理思想、设计方法。SOA的核心本质是实现服务和技术的完全分离,从而达到服务的可重用性[3]。它将企业应用看作由一些不同粒度、能跨越企业边界以及能实现特殊功能的服务集合所构成,并在这些服务之间通过定义良好的、独立于实现服务的硬件平台、操作系统和编程语言的接口进行联系,使此类系统可通过一种通用的方式进行交互。因此,采用SOA实现企业的IT架构能在更大范围上达到信息共享,实现高度的互操作性和可扩充性,同时使企业能够对变更进行快速有效的响应,取得竞争优势。
SOA结构中共有如图1所示的3种角色:服务提供者采用基于XML统一的Web服务描述语言(Web Service Definition Language, WSDL)来描述服务,在统一描述、发现和集成协议(Universal Description , Discovery and Integration, UDDI)注册中心注册发布自己的服务,并且对使用自身服务的请求进行响应;服务注册中心注册已经发布的服务提供者,对其进行分类,并提供搜索服务;服务请求者利用服务代理查找所需的服务,然后使用简单对象访问协议(Simple Object Access Protocol, SOAP)来执行服务调用。
Web服务是面向服务体系的一个最好实现,Web服务体系使用一系列标准和协议实现相关的功能,如使用WSDL描述服务,使用UDDI发布和查找服务,使用SOAP协议执行服务调用。它最大的特点是:是完全低耦合的,服务请求者只有在需要服务时才动态地绑定服务提供者,其次,Web服务是可组合和可重用的,再次,采用SOAP交互协议及XML作为消息格式具有跨平台特性。
图1 SOA的结构示意图
基于SOA的制造业MRPⅡ系统的架构如图2所示。各层的功能及联系如下:
(1)表示层:实现用户交互界面,例如Web浏览器、应用程序、PDA等,通过提供用户交互界面,接受用户交互,判断界面数据的有效性。
(2)服务发布层:将业务逻辑层中的各种细粒度服务封装成粒度较大的、易用的粗粒度服务,通过Web Service发布各种服务,接受上层表示层的调用。该层是面向服务的一层, 通过该层实现SOA架构的服务发布。主要提供四类服务:①基础数据服务,主要是实现企业组织机构管理、人力资源管理、供应商信息管理、物料编码和物料清单(Bill of Material ,BOM)管理等;②进销存服务,主要功能是负责对产品的合同、到货、库存、销售的管理等;填写进货单、采购单、销售单、销售订单,对库存信息、销售情况进行统计查询;③生产管理服务,主要功能是实现对订单,主生产计划(MPS),物料需求计划(MRP)的管理,接收从销售部门发来的产品需求计划,将需求计划按照产品汇总,根据产品BOM树,分别计算原料的需求量,输出最终的生产计划和采购计划;生产管理服务是整个MRP系统核心模块;④财务服务,主要功能是实现对应付款、应收款及员工工资等信息的管理,对企业的整个财务情况进行统计;⑤营销网络服务:对进销存模块中的供货商、销售商和企业的整个营销网络进行管理。
(3)业务逻辑层:将各种业务逻辑封装为相互独立的细粒度服务,以接受上层粗粒度服务的调用。例如,进销存服务共包括多个细粒度服务:合同管理、到货管理、库存管理等。该层被设计成无状态面向服务的模式,通过该层实现SOA的服务功能。
(4)数据访问层:数据访问逻辑组件从数据库中检索数据并把实体数据保存回数据库中。
图2 基于SOA的制造业MRPⅡ系统构架
生产管理模块是整个MRP系统的核心模块,其基本内容是编制原料的需求计划和采购计划,生产管理模块的基本流程如图3所示。首先获得从销售部门发来的产品主生产计划,然后根据物料清单,计算原料的毛需求,并将需求按照原料汇总,产生物料需求单,再进行能力需求计划进行反馈,调整,最后根据原物料库存情况、预计入库物料产生物料采购计划和生产计划。
图3 生产管理模块流程图
主要子模块包括:①物料主文件:用于维护公司的所有原材料及产品的技术参数指标信息,包括编号、名称、单位、规格型号、进货提前期、生产周期等等。②物料清单(BOM):是整个生产管理模块的基础,它是一张列表,包含着生产每单位产品所需要的所有部件、组件、零件与原材料等,如图4所示;它用于维护企业产品的物料清单,维护产品的原料或配件的结构;BOM是MRP计算的基础;在图4中,组装一个X需要B、C、D、E、F的数量:B--2,C--1,D--3*2=6,E--1*2+2*1+2*3*4=28;③主需求计划:用于暂存营销部门报送的缺货信息,需要生产的产品及数量等信息;④主生产计划:用于结合公司的日历制定生产目标,也即是将需求计划提上日程组织生产;⑤MRP计算:主要用于计算相关物料的需求量,计算的结果包括物料编号、年份、计划期、初期库存、毛需求、净需求。
图4 产品X的BOM
MRP计算是生产管理中最核心的一步,它能依据主生产计划、预计入库物料、BOM、现有库存等输入信息自动产生物料需求计划。物料需求计划不仅要计算各层物料的需求数量,更重要的是要得出它们的需求时间。时间阶段化是MRP的基本特点。MRP系统对每项物料的库存状态按时区做出分析,自动确定计划订货的数量和时间,并提醒人们不断调整。主生产计划产生最终产品的需求量(毛需求量),它来源于市场预测、客户订单的需求;中间件的毛需求量来自上属物料项目的需求。某时区的净需求量,可以通过该时区库存量的变化得到:
由上述公式计算出的某物料在各个时段的需求量如表1所示:
表1 某产品物料需求计划表
当库存可用量为负值时,意味着出现了净需求,其发生时间指出了即将发生的物料短缺,需要按其需求时间和数量进行能力平衡后制定生产或采购计划。预计入库量是指本时区之前各时区已下达的订货,预计可以在本时区之内入库的数量。在制造过程中,库存项目指一个惟一可识别的零件或部件。提前期指物料项目从完工或交付日期算起倒推到开始日期的这段时间。批量指一次加工或者订货的数量。如果要使系统真正起到计划与控制的作用,MRP模块中提前期和批量的数值设置,必须综合考虑产品的工艺过程和采购流程,车间的生产能力以及它们两者之间的相互作用等各方面的因素;安全库存量的设置是为了应付不确定性,比如,不合格品的出现、外购件交货延误、设备故障等。
在此MRPⅡ系统中, 充分地利用了SOA的设计理念,用面向服务的思想来对系统进行建模,使系统的各功能模块能够以服务的形式进行划分。在实现中采用了.NET技术, 这使得系统的实现更加方便、快捷, 并且, 系统的开发符合 SOA的软件架构模式, 从而使系统的软件架构具有SOA的松散耦合及可重用的特性。数据访问层主要负责数据及知识的访问和存储工作。在任何模块中都可能对数据库或知识库进行查询或更新等操作, 对于数据库而言, 有些模块可能同时访问不同的数据库, 这就必须为系统提供通用的数据访问组件, 满足系统不同用户访问不同数据库的需要。本系统支持 MSSQL Server、Oracle、MySQL、DB2等多种数据库系统。采用工厂模式实现支持多数据库系统。如图5所示, 即数据库访问的具体实现。
其中, IDataAccess为数据访问逻辑接口, 定义了每种数据库访问都必须实现的方法;OracleClass、SQLServerClass、MySQLClass和 DB2Class为专门针对SQL Oracle、SQLServer、MySQL和DB2而编写的数据访问逻辑,实现了IDataAccess 接口;DataAccessFactory为数据访问逻辑工厂, 由该工厂负责根据配置文件Web.config 动态创建系统所需的数据访问逻辑对象。外部方法访问工厂类DataAccessFactory,工厂通过读取配置文件Web.config,获取数据库类型,然后创建一个数据访问逻辑的实例, 并返回该实例的接口IDataAccess,外部方法通过调用该接口进行数据库操作, 从而不用关心具体操作的是哪种数据库系统。
系统中所有的应用逻辑都在业务逻辑层中, 业务逻辑就是根据具体业务需求来设计处理程序, 是整个系统的核心部分, 包括合同管理、到货管理等, 其通过调用数据访问层的访问接口来访问数据库, 并完成所需的业务规则。将业务数据和相关的业务操作封装成业务实体类, 业务实体的集合通过 Web服务层的接口包装, 为表示层提供服务。所有的逻辑功能单元模块以.net组件(DLL,EXE) 形式存在。Web服务层SOA是一个组件模型, 将应用程序的不同功能单元(称为服务)通过这些服务之间定义的良好的接口联系在一起。接口是采用中立的方式进行定义,应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务,可以以一种统一和通用的方式进行交互。在图2所示的集成框架中, 业务逻辑层中的应用是以 Web服务接口的方式挂接到平台中来。Web服务使用基于XML的消息处理作为基本的数据通讯方式, 削除使用不同组件模型、操作系统和编程语言的系统之间存在的差异, 使异类系统能够作为单个计算网络协同单元运行。因为接口在设计上采用Web服务的方式,因此, 无论单元应用本身是什么语言实现的, 它只需把接口开放出来并注册到UDDI注册中心, 其他应用在使用的时候, 首先去UDDI注册中心查询服务提供方的地址和相应函数参数及返回值, 然后使用Web服务的方式去调用, 就会得到接口提供方返回的数据。这种与平台无关的 SOA思想极大方便了MRPⅡ集成平台的实现。
表示层是系统对外提供服务的接口, 主要处理与用户的交互逻辑, 为用户提供灵活友好的使用界面。本系统中,用户使用浏览器或其他载体与系统交互, 表示层是基于ASP.NET的,在客户系统中使用Web服务, 一般需要以下几个步骤:
1) 创建Web服务代理类
2) 在客户系统代码中引用Web服务代理类
3) 创建Web服务代理类的对象
4) 调用代理类对象的方法与远程 Web服务通信 .NET 使用发布的WSDL文件创建代理对象,创建的代理对象模拟所调用的Web服务上的方法调用,使开发人员只需要与本地对象打交到。代理对象创建并格式化数据为SOAP消息发送给远程的Web服务。在.NET开发环境下支持两种创建代理类的方法,一是直接在开发环境中添加Web引用,就可以添加指定Web服务器上的Web服务;另一种是通过.NET自带的WSDL.EXE工具加载Web服务的WSDL文件来创建代理类,创建完成后,添加到工程中。
本文所设计的 MRPⅡ系统充分利用了面向服务的思想,在各个系统模块间通过Web Services 的消息总线进行通讯,较好地解决了各个部分之间的紧耦合问题,同时系统基于制造企业的共性考虑而设计,使其对制造生产行业具有一定地通用性。目前,系统已应用于陕西某制造企业生产管理,在实际应用中取得了良好的经济效益。MRPⅡ系统由于采用了面向服务的体系结构,促进了IT资源复用,使制造企业能够在激烈的市场竞争中具备良好的敏捷性,从而可以根据市场、商机、合作环境的变化快速创建新的业务并且能够快速调整现存业务。随着我国制造业的大力发展及现代化管理的要求,基于SOA的制造生产MRPⅡ系统将具有较好的应用前景。
[1] 刘红军.企业资源计划原理及应用[M] .电子工业出版社,2008.9.
[2] 喻坚,韩燕波.面向服务的计算:原理和应用.北京:清华大学出版社, 2006.12.
[3] NEWCOMER E, LOMOW G. Understanding SOA with Web service:中文版[M] .北京:电子工业出版社, 2006.7.
[4] 段俊勇,王守城,熊向阳等.面向MRPⅡ系统的BOM研究[J] .机械制造与自动化,2005,(3):58-60.