随着中国加入WTO和世界经济一体化,企业所处商业环境正发生着深刻的变化,企业信息系统也正面临着前所未有的挑战。ERP(企业资源计划)由于能够有效地整合企业内部和外部资源,已经成为许多现代企业普遍采用的信息系统。ERP在中国推行多年,真正成功的案例却比较少。其中深层次的原因是国内外企业在管理理念和业务流程之间存在显著的差异。要解决这个问题不仅要求导入企业对内部管理和流程进行规范,更要求ERP软件能够保持充分的灵活性。一种有效的方法就是系统提供用户二次开发【http://www.wisedoo.com/h-col-120.html】的平台,即通过各种二次开发工具对ERP中的一些基本构件和通用模块进行重组或者扩充,从而实现自定义业务流程的功能。
![2b6bf6ff874ff8dec6689f274d09c117.png](https://i-blog.csdnimg.cn/blog_migrate/7aaae203192918d1ed142af459765f8d.jpeg)
1 纺织行业ERP应用现状及二次开发需求
纺织行业属于我国传统制造业,具有多工序、连续化、大量生产能力强和劳动密集程度高、市场流行期短等显著特点。当前,我国许多纺织企业都实施了ERP项目,并取得了一定的管理效益和经济效益。但仔细研究不难发现,目前实施ERP的大型纺织企业中,应用较多集中在进、销、存等企业经营管理的外围环节,而对于ERP核心部分的生产质量管理、工艺管理等子系统要么空白,要么难以推广。究其原因:一方面是由于开发人员对纺织行业的流程缺乏深入的理解;另一方面是由于当下的ERP软件缺乏动态扩展性,通用性太差。
对于纺织行业来讲,由于生产工序繁多,数据采集量异常庞大,生产质量控制、工艺管理一直是纺织行业ERP的重点和难点。FAM体系结构提出,纺织企业的数据采集点从上至下可以分为企业、工厂、分厂、单元、工作站和设备6个层次。除了设备级,每级都是若干个下级的集合。在此层次结构中,每一层都可以作为数据采集点,各层数据的属性不尽相同。如停台时间、棉结数等指标属于设备级,而温度、湿度、电能耗费率则属于单元级。由于采集层次较多,每道工序生产质量指标繁多并且处于不断扩充中,对于单个纺织企业来讲,各自关注的产品质量指标体系很可能不一致,这就造成了许多ERP软件通用性较差的现象。要解决这些问题,最有效的方法就是让用户方自行进行二次开发。这里的二次开发不仅是指软件界面风格、显示格式可由用户自行修改,而是指基本的数据项目、数据处理逻辑以及数据报表的内容均可由高级用户自行扩充或删减,从而实现真正意义上的“业务流程自定义”
实践证明,任何一种ERP软件要想获得成功,不提供二次开发的平台几乎是不可能的。具体来讲,二次开发对ERP的意义主要有以下几点:
(1)大大简化系统开发方的工作,使得开发方把大部分精力用于系统整体架构的建设、主流业务流程的研究以及模型库、中间件的不断完善,从根本上提升ERP软件的质量。
(2)开发方把一些非主流业务流程的定义和功能模块的开发工作放手给用户,提高了用户的业务理解能力和程序开发水平。另外,二次开发可以增加用户对系统建设的参与程度,激发用户的主动性,有利于以后的系统维护。
(3)最重要的一点是, 二次开发使得ERP软件在面对企业业务流程或组织结构的变化时能作出快速响应,提高了ERP软件的柔性程度。
2、二次开发的实质及适用条件
从信息系统的软件结构来看,信息系统是建立在公用数据库、子系统专用数据库、程序设计语言工具模型库基础之上的各种业务功能的总和。
在传统的信息系统中,只有第四层功能业务层是面向用户的。而数据如何进行处理以及报表内容如何组织由第三层模型库完成,对用户来讲是非透明的。二次开发实际就是向高级用户开放部分模型库和函数库,当企业的业务流程发生变化时由用户利用二次开发组件对功能业务层中的基础数据项、处理单据和报表进行修改来适应变化,也即把第三层和第二层的部分功能向用户开放。
值得注意的是,并非所有ERP模块都适合于二次开发。一般来讲,一个系统中子模块之间的连接方式有两种,即串联和并联。串联方式中高层构件表现为一系列低层构件的顺序处理, 输入为某低层构件的输入, 经过其他低层构件的串行处理, 输出为最后的构件的输出。而并联方式中高层构件对低层构件没有特别的处理, 仅仅是对低层模块功能的聚集。这时,构件的输入是所有低层模块的输入, 输出为所有低层模块输出的集合,如质量管理子系统。产品质量项目繁多,但各项质量数据具有趋同性,数据的采集和处理方式在本质上区别不大,均可以通过报表、直方图、折线图等相同方式显示给使用者。适合于二次开发的系统在连接方式上应为并联方式。
3、二次开发体系结构模型简介
本文所介绍的二次开发工具是由一系列基本组件构成。笔者在多年从事纺织行业ERP开发实践中,摸索出一套基于PB + SQL Server环境下的二次开发组件模型。根据管理信息系统的传统理论,任何业务流程都可抽象为几个功能模块的整合,而功能模块是由输入功能(单据)、处理功能(函数)和输出功能(查询或报表)组成。笔者开发了三类二次开发组件,即:自定义函数、自定义单据和自定义报表。它们之间构成层次关系。
3. 1自定义函数
该组件是二次开发的最基本组件。它直接同底层数据库相连接,主要是对处理逻辑的定义。理论上可以利用该工具取得数据库中的任何数据,应用于任何子系统,因而它属于软件结构中的公共模型库。自定义函数本身是一个附加功能,它不能独立成为一个功能模块,必须与自定义单据、自定义报表结合起来使用。自定义函数中处理过程的定义是核心步骤,可以采用两种形式:Select SQL语句和存储过程。由于自定义函数只能够返回一个值而不是一个数据集合,因而它经常被适用于自定义单据中某个数据项的计算公式或者自定义查询、报表中某项动态内容的生成。
3. 2自定义单据
自定义单据分散在生产质量管理、工艺管理等各个子系统中。分为项目定义和数据输入两个部分。前者实现了该子系统中各输入模块和处理逻辑的定义,真正实现了“业务流程自定义”,是二次开发的核心内容。该组件中主要进行构成业务流的每个输入数据项属性的定义,如名称、类型、统计方式、计算公式等。值得注意的是,此处的“计算公式”中不仅可使用本张输入单据中的数据项,更可以通过调用“自定义函数”的功能取得本系统其他模块中的任何一项数据,这是本组件与其他大多数信息系统相比的一大优势,大大扩展了组件的取数功能,提高了流程定义的灵活性。而后者根据前面的定义自动生成输入界面进行数据录入或采集。
3. 3自定义报表
该组件使用的好坏是二次开发的成果是否被管理层认可的关键,因为管理层往往是通过系统输出信息量的多少以及输出信息的格式来判断一个系统是否成功。本组件主要提供了以下两种形式的自定义报表 。