第29卷VO1.29 第21期 NO.2l 计算机工程与设计 Computer Engineering and Design 2008年11月 NOV.2008 基于模型驱动的ERP平台二次开发的设计与实现 郭芳周 , 申永军 , 孙素静 (1.兰州大学信息科学与工程学院,甘肃兰州730000; 2.石家庄铁道学院计算机与信息工程分院,河北石家庄050043) 摘要:当今ERP软件发展的新方向有两个,一是ERP系统如何进行快速高效地开发,二是具备良好的扩展能力。根据新方 向发展要求,提出了平台化的ERP系统与基于模型驱动二次开发的设计思想,并结合实际案例给出了具体实现技术。基于 模型的设计快速实现了ERP系统的开发,真正增强了系统的可扩展性,为企业解决ERP软件的高效扩展开发和成功实施提 供了一种新的方法。 关键词:ERP平台;模型驱动;二次开发;ERP系统;表单模型 中图法分类号:TP31 文献标识码:A 文章编号:1000—7024(2008)21—5490—04 Design and implementation of second development based on model driven and ERP platform GUO Fang—zhou ,SHEN Yong-jun ,SUN Su-jing (1.School ofInformation Science and Engineering,Lanzhou University,Lanzhou 730000,China; 2.Department ofCornputer and Information Engineering,Shijiazhuang Railway Institute,Shijiazhuang 050043,China) Abstract:How does the ERP system carry on effective development and have a good capacity for expansion,is the new direction of ERP software.According to the request,second development technologies based on ERP platform and receipt model driven are presented, furthermore,the design and implementation in detail that used in a enterprise application are expatiated.This design lead to rapid de— velopment and enhance the scalability of system,to provide people a different solution for deploying ERP system successfully. Key words:ERP platform;model driven;second development;ERP-system;receipt model O 引 言 ERP(enterprise resource planning)系统的发展过程中面临 缓解ERP系统与用户个性化需求之间的矛盾,保障系统的成 功实施。 了很多严峻的挑战,譬如ERP软件的开发总在进行大量的重 复劳动,如何通过一种模式使软件开发如同制造业一样,其成 果可以被大量复用,成为提高软件开发效率的难题;同时,ERP 软件提供的功能总是不能满足用户多样的不断变化的要求, 1 ERP系统平台化设计 1.1 ERP平台设计 将ERP系统平台化的设计,即根据用户需求提供相应的 应用功能,并通过在平台上对ERP系统进行灵活的参数配置、 致使系统实施困难,可维护性差,如何不通过修改代码而满足 用户的需求是一直以来ERP开发技术的基本要求。在这样的 情形下,ERP软件如何进行快速高效地开发并具备良好的扩 展能力显得至关重要。高效的开发模式的选择,以及基于现 有系统扩展出更多的用户功能,可从根本上提高ERP软件的 开发效率与实施成功率。 针对以上现状,我们采用基于模型驱动的设计和ERP系 统平台化的设 ’,把现有通用ERP软件与用户个性化需求的 开发相分离。选择基于模型的二次开发模式,扩展现有ERP 功能模块定义组装,来自由组合成适用丁各类企业复杂业务 的ERP软件去实施。基于ERP平台,合作伙伴(包括行业软件 开发商、增值开发商等)能够有效地获得ERP系统的开发技 术,更容易地利用二次开发技术开发出新的行业产品,或利用 ERP平台开发配置出完整的企业解决方案。 ERP平台的设计首先是作为ERP系统的应用平台,需要 集成基本设计时框架的开发环境,同时作为系统的统一架构 平台提供基本运行时框架,把系统各层运行所必需的基本组 件进行封装,可为基于平台的二次开发提供技术支撑。设计 的ERP平台所有应用功能全部都是基于元数据驱动的,使得 系统的功能,使用户在细分市场的前提下得到深层应用,同时 收稿日期:2007—11—08 E-marl:guofzhO5@lzu.cn 作者简介:郭芳周(198O一),女,甘肃民勤人,硕士研究生,研究方向为计算机网络、信息管理系统: 申永军(1958一),男,陕西西安人,博 士,副教授,研究方向为计算机网络与信息安全、信息管理系统; 孙素静(1978一),女,辽宁铁岭人,硕士研究生,助教,研究方向为信息安全。 ・——5490—— 系统具备足够灵活的配置功能和二次开发功能。这样,通过 基于元数据驱动的客户化配置与二次开发技术,就能使ERP 系统具备柔性开发的特征,且二次开发的功能模块可完全独 立于系统平台,符合ERP系统安全升级的原则。ERP平台设 l模型设计器l I布局设计器l 计的元数据驱动架构,如图1所示。 ERPIDE ERP Application 【/—— /—————、. 、、———————l报表运行时I 【——— /L_J\ \面 一/ /L— r_1/ 世L—/ — l过滤运行时l=== 、—【—数据查询设计I ——] 霪围 I查=询运行时l== l ==…== 二 I l :== L— — \ 二===图1基于元数据驱动设计的ERP平台 1.2 ERP平台二次开发的模型分析 ERP系统的二次开发领域中绝大多数业务逻辑都是围绕 着表单来展开的。表单是ERP系统中最为常用的业务对象, 如供应链的销售管理模块中的销售订单、发货单等。ERP系 统中大部分功能模块的管理也都是围绕表单及表单的处理流 程这一核心主线展开的 。表单既用来保存某业务流程中某 个业务阶段所产生的数据,又用来体现各个业务流程的业务 模块之间的逻辑关系。因此,我们根据所设计的平台化的ERP 系统的二次开发领域中业务逻辑的这一明显的规律性,抽象 出基于表单驱动开发的表单模型。 2模型设计 模型驱动技术是继面向对象之后的一种新的面向模型的 软件开发模式。即Ⅲ为了实现系统的目标,将系统划分为若干 层级,在每一个层级上对相关对象进行建模并建立各层模型 之间的映射关系,采用人工或计算机软件按照映射规则完成 信息从一个层级向另一个层级之间的变换,最终获得系统的 目标结果。由于模型及模型之间的映射关系都是以元数据的 形式描述的,因此它们之间的映射关系发生变化时,不需要修 改程序代码,只需要修改元数据就行了。而元数据的修改是 通过各种可视化建模工具完成的。其实,模型就是用户需求 和系统需求的描述。模型驱动技术使得系统具有很大的灵活 性和可扩展性。由于ERP平台上二次开发领域的业务逻辑大 都围绕表单展开,所以我们采取基于表单模型驱动的开发模 式来进行ERP平台的二次开发。 2.1 ERP平台的表单模型设计 ERP平台的表单模型设计完全基于元数据驱动模式,采 用了表单建模与布局设计分离的模式。表单的uI层即表现 层是基于MVC的设计,本文后面实现的ERP平台二次开发案 例就是基于MVC设计的uI层的API实现。表单的服务层是 基于facade的设计模式,ERP平台表单模型各层设计的总体 架构如图2所示。 2.2表单模型驱动二次开发的设计目标与系统架构 采取表单模型驱动的ERP平台二次开发,旨在能够支持 软件合作伙伴的行业开发或增值开发,实现快速定制一二次 J参照设计器} 『… l 二二二 l元数据库lL ————— 图2 ERP平台的表单模型设计 开发一动态配置一自由组合一易于实施等具有产业链特性的 需求目标。基于表单模型的设计能够使代码量更少、更稳定, 并能开发具有行业特色的行业插件。另外一个重要的设计目 标是为了能够支持客户高度的自定义功能,譬如增加新表单、 修改系统原有表单及现有表单的业务转换规则等。基于表单 模型的ERP平台二次开发的系统结构由客户端、应用服务器 和数据服务器三层构成。其中ERP平台的客户端包括设计时 框架与运行时框架两部分,如图3所示。 Client App Server Data 设计 运行 Server I模板设计器l l UI l l Bizfacade I I过滤设计器l Business I二次开发组件l l元数据l 『 … l Controner lI数据查询引擎l fj二次开发l接口配置f l二次开lf发组件f l『表单持久化I … l l业务数据J 图3基于表单模型的ERP平台二次开发系统架构 基于表单模型的ERP平台二次开发的总体设计对于系统 开发商和行业开发商等来说较易实现,可以在ERP系统平台 基本运行时框架中实现少量二次开发,将编译后的二次开发 组件在平台设计时框架中的相应接口配置处进行定义,该组 件完全独立于ERP系统本身,便于系统的安全升级。 3基于表单模型驱动的ERP平台二次开发的 应用案例 因为通用的标准ERP系统软件无法完全适用于各个企 业,具有鲜明行业特色的深层的应用,是通用ERP软件本身所 不具备的功能,尽管ERP平台提供了大量企业管理信息系统 所需要的表单,但也存在一些无法满足企业业务需求、或功能 较为单一的表单,甚至没有提供部分企业业务所必需的表单, 如具备计量数据的实时查询、管理、统计等功能的表单。例如 供应链的销售管理模块中的综合性业务表单——装箱单,就 属于这样的业务逻辑表单,因此系统开发人员或合作伙伴必 须通过一定的二次开发技术来灵活地开发生成企业所需的装 箱单,以弥补ERP平台供应链中销售模块的关键性业务管理 一5491— 的缺陷与不足。 在广东省某服装行业的ERP系统设计中采用了本文实现 的基于表单模型驱动与平台化的ERP系统的二次开发技术, 该系统现已投入商用生产。 3.1案例需求分析 该企业案例基于表单模型驱动进行ERP平台的二次开 发,案例需求分析如图4所示。 图4应用案例需求分析 应用案例业务需求为不录入数据、根据系统已有n张表 单(发货单)灵活生成功能完整、复杂的综合性业务表单(装箱 单)。要求能根据n张发货单中同一客户、存货名称、发货地址 等来进行装箱,同时实现分解装箱,并且装箱单中各级子表所 对应业务数据的显示实现联动、实时统计。 由于要求不能通过手工录入数据生成表单(装箱单),而且 生成表单的灵活度较高、且功能复杂(从n张表单中汇总出实 现了实时统计的数据,并可以进行判断合并与点动显示),考 虑到ERP系统本身提供了表单——发货单列表(对应每张发 货单,系统都会将它的信息自动生成到发货单列表)。为此, 我们根据系统现有表单,利用基于表单模型驱动与平台化的 ERP系统的二次开发设计,开发实现案例所需的装箱单,来实 现该类用户的该层应用。 3.2基于表单模型驱动的二次开发的具体设计与实现 3.2.1表单模型驱动二次开发的设计 该案例表单模型驱动的二次开发的设计包括在ERP平台 设计时和运行时两部分的设计。 设计时部分的主要任务是在新增表单中进行装箱单模板 一 设计,及表单业务数据与各元数据项的建立(如表单编号、存 货编码等)。由于业务关系,ERP平台的二次开发中表单的数 据组织结构比较复杂,不只包含简单形式的表头和表体,其主 表(表头)下的表体一般都由多级子表结构构成,很多表体具有 3 ̄4级子表结构,这就使表单在运行时部分进行的二次开发变 得较为复杂。而我们采用的基于表单模型的元数据项驱动的 开发模式,便可使各表单之间、及其多级子表之间的数据映射 与交互变得简单、业务逻辑明晰,易于操作实现,降低了二次 开发的难度。 运行时部分的任务主要是根据图5所示的表单模型驱动 的二次开发的具体设计,在ERP平台基本运行时框架中实现 少量二次编码。 3.2.2表单模型驱动二次开发的具体实现 首先利用平台化的ERP系统提供的功能在装箱单表单的 界面上增加系统功能按钮,通过ERP平台的二次开发来实现 uI层的API调用系统原有表单(发货单列表),然后进行客户 化选择(根据多张发货单同一存货、客户、发货地址,参照选择 -——5492-—— 发货单 发货单 列表 装箱单 主表(表头) 主表(表头) 2级子表l存货列表 存货列表 4级子表1 图5表单模型驱动的二次开发的具体设计 出信息)后,再进行综合性装箱,同时按每箱数量分解装箱。根 据应用案例业务需求,编码实现点击装箱单中某一条存货记 录(所属第2子表),它所隶属的发货单编号(所属第3予表)与 这条存货的明细信息(所属第4子表)随之显示并实时统计。 各个表单的主子表关系如图5所示。分解装箱业务则由客户 输入每箱数量后,点击实现已编码的分箱明细显示。 综合性业务表单装箱单从ERP平台自动生成的表单(发 货单列表)中选择获取同一存货(或客户、发货地址等)的备选 信息后,基于表单模型进行了以下步骤的二次开发业务逻辑: (1)目标表单(装箱单,下同)根据获取的表单编号向n张 源表单(发货单,下同)读取其2级子表(存货列表)的信息,并 返回存货的明细信息、判断并添加至目标表单的2级子表中 (存货列表); (2)目标表单根据获取的存货信息中的存货编码去读取相 应源表单的主表(表头)及3级子表(存货子表)的信息,返回信 息至目标表单的3级子表(发货单)、添加并显示 目标表单的 4级子表(发货单明细); (3)目标表单内实现发货单一装箱单的3级子表(装箱合 计)的实时统计、数据显示与4级予表(装箱明细)的点动显示。 应用案例经设计开发、调试后成功应用于广东省该服装 行业,获取了较好的处理复杂业务的ERP平台扩展功能。该 案例基于.NetFrameWork2.0与SqlServer2000数据库系统,使用 VS 2005 C≠}.Net开发实现。 4结束语 随着平台化的ERP系统与基于模型的软件开发技术的各 自发展与不断完善,基于模型驱动的ERP平台二次开发技术 将会得到广泛的深层应用。本文介绍的表单驱动的ERP系统 平台二次开发的具体设计与实现技术,灵活扩展了通用ERP 系统的标准功能,较好缓解了现有ERP软件与用户个性化需 求之间的矛盾,从而提高ERP系统实施的成功率,并具有高效 开发的特征。 参考文献: 【1】 罗鸿,王忠民.ERP原理・设计・实施[M】.2版.北京:电子工业 出版社,2003. 【2] 万建成,卢雷揿件体系结构的原理、组成与应用 ]一E京:科学 出版社,2002. [3】 王玉平,魏永峰,李昭原.ERP系统中审批构件的设计与实现[J]. 计算机工程与设计,2007,28(10):2429—2431. [4】 彭玉琼,张祖平.基于单据驱动的物流管理系统的设计与实现 [J].计算机工程与应用,2005,41(12):180—182. [5】 周传生,刘杰.ERP系统中基于模型的业务Agent的研究与设 计[J】_计算机工程,2006,32(24):263.265. [6] A1一Mashari M.A process of change.oriented model for ERP ap— plication[J].International Journa1 of Human-Computer Interac— tion,2003,16(1):39—55. [7]David S Franke1.Applying MDA to enterprise computing[M】. 北京:人民邮电出版社,2003. [8】OMG.MDA guide version 1.0.1[EB/OL].http://www.omg.org/ docs/omg/03—06—01.pdf,2003. (上接第5475页) 移位寄存器 图2对数运算硬件结构 是m。将m查表和运算后的符号位填充前16位,与e相加,最 后结果得到31位Q15,为保持一定精度同时将数值大小控制在 一定范围内,只取31位中的b20 ̄b5,舍弃前10位和后5位,结 果为16位Q10,因为log2(x)最大值log2(32767)=15,整数部分和 符号位用6bits表示就已足够,后面10bits为小数,相当于保留 十进制数小数点后3位,精度已经可以满足整个系统需要。 2.6 DCT MFCC参数计算中的DCT是一维DCT,其硬件结构的设 计相对简单,如图3所示,有一个乘累加器MAC,一个ROM保 存余弦值(16位定点数QI5),一个DPRAM保存每阶MFCC的 乘累加和,两个计数器用来产生ROM和RAM的地址,一个计 算MFCC阶数,一个计算滤波器个数。 竺 DPRAM3 (12x32) 当前滤波器输出 取对数后的值一 图3 DCT硬件结构 3整体设计及优化 由于采用了基于帧的流程决策,将每帧FFT的结果保存 在FIFO中,此FIFO读时钟频率大于写时钟。如果前一帧的 MFCC参数计算完成并且FIFO中等待处理的数据个数大于 64,就将数据读出并保存在大小为64字节的DPRAM中,发出 信号表示新的一帧计算开始,等计算结束再将该信号清除。为 了避免流水堵塞,本文将取对数和DCT两个操作设计成流水 线,FPGA的并行能力得到充分应用。如图4所示。 时间 图4流水线 4结束语 本文用FPGA实现MFCC参数计算时,用了多时钟、状态 机、模块复用、IP核和多级流水等技术,充分利用FPGA的并 行处理能力,大大提高了算法的运行速度和效率。用本文设 计的硬件结构计算一秒语音的MFCC参数仅需8.5 ms,比在 奔腾4 3.0的PC机上用Matlab计算的时间快了近50倍。取 小数点后3位,该方法计算出来的数值与Matlab浮点计算出 来的数值误差在1%以内,在VQ和HMM的Viterbi算法识别 后,不会影响整个系统的识别率,完全可以满足嵌入式实时系 统的要求。 参考文献: [1] 陈杰,张玲华.说话人识别中语音特征参数的研究[J】.信息技术, 2006(11):88—89. [2]Hung Jeih—weih.Optimization of filter-bank to improve the ex・ traction of MFCC features in speech recognition【C].Procee- dings oflntemational Symposium on Intelligent Multimedia,Vi・ deo and Speech Processing,2004:675・678. [3】 丁爱明.作为说话人识别特征参量的MFCC的提取过程[J】.电 子工程师,2006,32(1):51-53. [4] Wei HAN,Cheong・Fat CHAN,Chiu—Sing CHOY,et a1.An efif— cient MFCC extraction method in speech recognition[C].Pro— ceedings oflEEE International Symposium on Circuits and Sys- tems,2006:408—412. 【5] 甄斌,吴玺宏,刘志敏,等.语音识别和说话人识别中各倒谱分量 的相对重要性[J1.北京大学学报(自然科学版),2001,37(3): 371.378. [6] 门爱东,杨波,全子一.数字信号处理【M].北京:人民邮电出版社, 2003:95—98. 【7] 陈伯胜,廖海洋.一种在单片机上提取语音特征参数MFCC的 快速算法[J】.现代电子技术,2007(2):47—48. [8】 许开宇,祝忠明,卢亚玲.数字信号处理[MI.北京:电子工业出版 社.2005:90. ・——5493・——