(计算机软件与理论专业论文)lamp环境下php自动代码生成器的设计与实现.pdf_第1页
(计算机软件与理论专业论文)lamp环境下php自动代码生成器的设计与实现.pdf_第2页
(计算机软件与理论专业论文)lamp环境下php自动代码生成器的设计与实现.pdf_第3页
(计算机软件与理论专业论文)lamp环境下php自动代码生成器的设计与实现.pdf_第4页
(计算机软件与理论专业论文)lamp环境下php自动代码生成器的设计与实现.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机软件与理论专业论文)lamp环境下php自动代码生成器的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

rj ! 1 l lrlr l u r l r f lf f l , ! i l l l i , ! i irlllr l ! i i l l y 15 2 4 6 4 9 分类号 u dc : 密级 编号 l a m p 环境下p h p 自动代码生成器 的设计与实现 l a m pe n v i r o n m e n tp h pa u t o m a t i cc o d eg e n e r a t i o n d e s i g na n di m p l e m e n t a t i o n 学位授予单位及代码:量壹堡兰友堂i ! q ! ! 2 学科专业名称及代码:盐簋扭筮鲑皇堡迨( q g l ! 1 22 研究方向:塑堡匡丕蕴申请学位级别:亟 指导教师:壑丝副垫堡 研究生:韭 塞 论文起止时间:2 0 0 7 1 l 一2 0 0 8 1 2 摘要 针对目前在e r p 系统开发过程中开发速度比较缓慢的问题,本文提出了在开发e r p 过程中采用代码生成的方法,并提出了在开发e r p 系统时采用l a m p 环境。 本文通过对e r p 系统和工作流进行介绍,提出对于e r p 系统中的比较固定的业务 流程和常用的增删改查一样都可采用代码生成的方式实现,文中对自动化编程技术和 l a m p 技术进行了介绍,阐明了采用l a m p 环境设计p h p 代码生成器的可行性和l a m p 环 境的优势,并选取了具有共性的单表进行了代码生成器的设计和实现。代码生成器采 用了j a v as w t 实现,开发工具采用e c l i p s e 开发。 最后,本文指明了目前所做的p h p 代码生成系统需要完善的地方和进一步的发展 方向。 关键词:e r p 代码生成l a m p 代码生成器 a b s t r a c t i nv i e wo ft h ec u r r e n te r ps y s t e mi nt h ed e v e l o p m e n tp r o c e s si sr e l a t i v e l ys l o wp a c eo f d e v e l o p m e n t ,t h i sp a p e rp u tf o r w a r di nt h ed e v e l o p m e n t o fe r pi nt h ep r o c e s so fa d o p t i n g t h ec o d eg e n e r a t i o nm e t h o d s ,a n dp u tf o r w a r di nt h ed e v e l o p m e n to fe r ps y s t e m su s i n g l 久m pe n v i r o n m e n t b a s e do ne r ps y s t e m sa n dw o r kf l o w ,t h ep r o p o s e de r ps y s t e ma n dt h er e l a t i v e l y f i x e db u s i n e s sp r o c e s s e sc o m m o n l yu s e dt oc h e c kt h es a m ea d d i t i o n sa n dd e l e t i o n sc a nb e u s e dt og e n e r a t et h ec o d em e a n s ,i nt h et e x to ft h el a m pa n da u t o m a t e dp r o g r a m m i n g t e c h n o l o g y ,l a m pe n v i r o n m e n te x p o u n d su s i n gp h p c o d eg e n e r a t o rd e s i g no ft h ef e a s i b i l i t y a n da d v a n t a g e so ft h el a m pe n v i r o n m e n t ,a n ds e l e c tas i n g l et a b l ew i t hac o m m o nc o d e g e n e r a t o rf o rt h ed e s i g na n dr e a l i z a t i o n c o d eg e n e r a t o ru s e dt o a c h i e v ej a v as w t ,e c l i p s e d e v e l o p m e n tt o o l su s e dt od e v e l o p f i n a l l y , t h i sa r t i c l ep o i n t so u ti sd o i n gp h pc o d eg e n e r a t i o ns y s t e m n e e d sf u r t h e r i m p r o v e m e n t a n dd e v e l o p m e n t k e yw o r d s :e r p c o d eg e n e r a t i o nl a m p c o d eg e n e r a t o r 长春理工大学硕士学位论文原创性声明 本人郑重声明:所呈交的硕士学位论文,( ( l a m p 环境下p h p 自动代码生成器的设计 与实现是本人在指导教师的指导下,独立进行研究工作所取得的成果。除文中已经 注明引用的内容外,本论文不包含任何其他个人或集体己经发表或撰写过的作品成果。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意 识到本声明的法律结果由本人承担。 作者签名:趁益4 翻年扯月哗日 f 7 长春理工大学学位论文版权使用授权书 本学位论文作者及指导教师完全了解“长春理工大学硕士、博士学位论文版权使用 规定”,同意长春理工大学保留并向中国科学信息研究所、中国优秀博硕士学位论文全 文数据库和c n k i 系列数据库及其它国家有关部门或机构送交学位论文的复印件和电子 版,允许论文被查阅和借阅。本人授权长春理工大学可以将本学位论文的全部或部分 内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学 位论文。 作者签名:丝鱼! 刍年1 月耸日 燧矗一也蛎 1 1 课题来源 第一章绪论弟一早三百v 匕 本文的研究课题来源于某软件公司“自动化编程技术及实际应用( j 2 e e 方面) ”。 1 2 课题研究的目的和意义 代码生成,是一种用程序生成程序的技术。目前在计算机软件软件领域,自动化 编程水平仍不高。以目前的e r p 系统为例,大部分功能都是增删改查,如果采用单纯 手写的方式,这部分工作要花费大量的时间,显得非常枯燥;如果采用框架,则在一 定程度上节约了开发时间,但框架带来了学习上的困难,同时框架发展迅速,另外当 前大多数框架并没有减少太多代码量。代码生成器在此时便突出了其存在的价值,将 常用的增删改查代码采用代码生成器生成,程序员只需对生成的代码略作调整,通过 这种方式,就可节约大量的时间,程序员便可有大量时间研究系统的业务流程。 本文的研究目的主要是针对目前e r p 系统开发缓慢的问题,开发出一种p h p 代码 生成器【1 】,目前l a m p 作为一种新兴技术,其具有易于开发、更新速度快、成本低的特 点,1 i n u x 下的代码生成器不像w i n d o w s 下那样多【2 1 ,且不是太方便、太理想;在框架 技术流行的今天,我们要花大量时间学习框架,对于一般的增删改查和常用业务流程, 如可采用自动生成技术,就可为我们节约大量时间;如果我们开发出一种代码生成器, 不懂编程的人使用该工具也能辅助他完成一些工作,这样对信息化的普及具有重要意 义。 1 3 与课题相关内容的发展状况 1 3 1 国内外代码生成发展现状 早在7 0 年代末8 0 年代初,许多人就开始关注编译器其他部分的生成自动化1 3 1 ,这 其中就包括代码生成自动化。 当代,我国已有不少人从事代码自动生成方面的研究,不少公司也开始借助代码 生成工具提高软件开发效率。在这方面也有做的不错的,像c o d e m a t i c 、w i n t l e 的 c o d e p u l s 、李天平发布了一个类似的【4 1 ,还有一个叫伍华聪的也发布了几个等等,但经 过笔者使用研究,大都不是免费开源的,大都用起来不够方便,像伍华聪近来在网上 发布了一个可实现c # 代码生成的工具,因使用起来不方便,而受到网友指责,所以在 国内仍有许多地方需要在此领域突破。总的来说,笔者认为目前国内人气最旺的代码 生成工具为动软的c o d e m a t i c ,其具有如下功能:自动生成代码;多类型数据库集中管 理器:查询分析器;自动生成存储过程和s q l 脚本:自动生成数据库结构的文档:w e b 项目文件发布;代码批量生成自动导出功能等。 从国际上看,现代软件技术的发展已经进入到自动化、图形化开发阶段。用户通 过强大的系统级图形化软件开发工具对所开发的项目进行描述,建立整套系统的模型。 只要能够建立起正确的系统模型,好的图形化开发工具就可以根据该模型生成某语言 的源代码,提供完善的系统流程图、标准化的软件说明文档,甚至可对系统功能进行 模拟仿真。从而极大提高软件产品的开发效率。 国外比较前沿的代码生成工具,像c o d e s m i t h 、m y g e n e r a t i o n 、c o d u s ,它们都是不 错的,不少人在开发软件过程中甚至离不开这些工具了,其中最好的要当属c o d e s m i t h 了,c o d e s m i t h 可用于生成c # 、v b n e t 、t s q l 及其他任何语言代码,当然也包括p h p ; 它本身是可以编程的,这也是其非常灵活的地方,它提供了强大的s c h e m a e x p lo r e r 对 象,使数据库存储过程的生成非常容易;有了它,从一个项目到另一个项目,无需重 写许多代码,因为只需一套模版而己:其使用的语法是典型的a s p n e t 语法,并且, 可以像我们写a s p 那样将代码和静态内容混合编写。 总体来讲,目前国内最先进的代码生成工具,离国际先进工具还有差距,当然这 几年国内不少人开始研究这方面技术,相信我国不久也会达到或超越世界先进水平, 但代码生成作为一个研究领域需要我国很多优秀人才从事这方面研究。 自动化代码生成技术近几年来在国内外研究的人出现增长趋势,国内在此方面主 要是学习了国外的一些先进技术,不少人在工作业余时间,研究一些自动代码生成工 具,这些工具主要是针对某些代码重复性比较大的,像是j 2 e e 的g e t 、s e t :有的能力 强的人可将增删改查分页等功能通过生成工具实现;专注于数据库方面的工具相对较 多,这类工具可生成存储过程之类的代码;当然,还有一些简单的专门用于生成网页 代码的工具,这类是最多的,但这类工具不是属于大多数企业所重点研究的;因此, 目前国内主要研究的是针对n e t ,j 2 e e 及各种数据库的,通过制作代码生成器,减少编 程量。在p h p 方面,目前著名的代码生成器像是p h p g e n ,它是一款在线的p h p 代码生成 器,采用p h p 开发,它可以帮助我们在几分钟内完成一个功能完善的数据库后台管理 系统和前台展示,还有像l w p h p 、p h p m a k e r 的代码生成器也做的不错。 1 3 2e r p 系统发展现状 目前我国e r p 软件系统开发总的开发特点可以概括为:开发周期长、实施周期长【5 】。 当然也有做的比较好的,像是有市场竞争能力、市场优势比较强的用友和金蝶,另外 像是在e r p 专业应用方面比较深入的金思维和和佳。 在e r p 实施过程中,常遇到这种问题: 有熟练操作计算机的熟练技能,更有甚者, 2 由于大多数中小企业员工素质偏低不具 部分企业的有的员工几乎不会使用或根本 未接触过计算机,如果在e r p 实施过程中,软件开发公司未能给中小企业很好的培训, 问题就会更大:加上中小企业部分员工的工作积极性和责任心不强,势必会给实施过 程造成很大困难。这点笔者是有切身体会的,在x x 软件公司工作时,曾为x x 集团做 过e r p 系统,x x 集团底层不少员工计算机操作能力很差的。 国内不少企业在决定上不上e r p 系统的问题上,其决定权往往只在企业老板一个 人身上或只是少数企业高层身上,老板甚至不听懂技术的建议,自己决定是在c s 架 构还是在b s 架构中做出选择。这些企业老板中的大部分在决定上e r p 系统时,可能 并未真正搞清楚e r p 是什么、上了e r p 系统之后可为企业带来什么、为什么要上e r p 系统、企业具备什么条件才应上e r p 系统之类的问题。有时候就是一时的想法,或者 是同行有了e r p 系统,自己也要有。许多原因导致了企业老板对e r p 系统根本不重视 或者只重形式不重实质。而企业的中层或基层由于缺乏企业老板的推动和监督,也会 出现不拿e r p 系统当回事或者根本不爱上e r p 系统,这可能会表现在软件公司调研时 或在开发出e r p 系统后,对企业进行培训时,根本不配合软件公司,这样做也会给软 件公司造成开发上的困难,项目因此会反复修改,甚至最终造成项目的失败。 如果我们从企业管理的角度看问题,在实施e r p 系统之后,很可能会对其原有秩 序造成影响。企业原有的管理制度、原有的业务流程、原有的组织机构等极有可能暴 露出许多与e r p 软件不相符的问题,因为e r p 的业务流程是比较固定规范的东西。企 业实施e r p 软件可以说是对原有管理制度进行了变革。由于e r p 中都是相对规范的业 务流程、组织设置和管理观念,因此在实施e r p 后其与企业原有的习惯、制度、观念 等必定会有一个适应过程,这种适应尤其在企业刚实施e r p 后表现得特别明显。不少 企业在实施e r p 项目后,员工可能会感觉到工作效率还不如以前未实施的时候高,或 感觉到工作量、工作压力比之前大了。这反映了e r p 软件在实施后推动企业内部变革 的困难是不小的。在这当中,如果哪个企业用最短的时间、最少的成本顺利地度过了 磨合期,上线e r p 项目的成功率也就会大大地提高了。 从e r p 软件供应商的角度看,现在我国国内e r p 软件供应商相对较混乱,除了比 较大型的几家企业,像是美国的甲骨文、德国的s a p 、我国的用友、金蝶等,这几家企 业的软件设计相对成熟、服务相对规范,其余大部分软件提供商水平不高,无论从软 件的成熟程度、服务流程的规范化,还是实施顾问的专业能力,培训水平等方面,都 存在诸多不足的地方,这使得一个企业想借助e r p 系统给他们带来便利显得非常困难。 不少企业因此投入大量资金,其结果确未给他们带来真正的好处。 1 4 论文主要研究的内容 本文是针对现有e r p 系统开发缓慢的问题,提出在开发e r p 时采用代码生成的方 法,同时在开发过程中采用l a m p 环境 6 1 ,研究内容包括以下几个方面: 1 、分析研究工作流及其参考模型,文中对工作流的定义做了详细介绍,在工作流 3 的参考模型中对其五个基本组件和五个基本接口做了详细介绍,同时文中对工作流技 术在e r p 中的应用做了详细介绍,此部分主要为了阐述业务流程也可采用代码生成的 方式实现。 2 、已有的自动代码生成方式主要有整合式生成器、内联代码扩展器、混合代码生 成器、局部代码生成器、层生成器五种,根据已有的代码生成方式和解决方案,本文 提出了自己设计代码生成器的思路。 3 、根据文中对e r p 业务流程的分析发现,业务流程的代码生成方式同普通的增删 改查原理是类似的,因此本文选取了单表进行了代码生成器的设计和实现,这其中包 括基于此表的创建数据库和表、列表、增加、删除、修改、查询代码。 4 、代码生成器采用j a v as w t 开发【7 1 ,j a v au i 开发也是本文的研究内容之一,文 中主要采用在e c l i p s e 中安装插件的方式开发,这样节约了开发时间。 1 5 论文应解决的主要问题 本文提到的代码生成器,生成的代码是基于抽象的管理信息系统代码1 8 】1 9 1 ,抽象就 是说生成的代码具有大多数管理信息系统的共性,本文提到的信息系统是选取了企业 当中的e r p 系统进行抽象,对于e r p 系统来说,工作流是最难的地方,本文也试图找 到工作流的共性,并通过代码生成思想,设计出可生成工作流代码的代码生成器,除 了工作流外,e r p 系统主要剩下了权限控制和业务的增删改查,笔者也试图通过代码生 成器生成具有共性的权限控制和业务流程代码,但在经过了认真分析,发现不管是工 作流,还是权限控制、业务流程,其代码生成思想都是一致的,即同针对单表的代码 生成都是一致的,所以本文主要阐述代码生成的实现思想,并在此基础上,阐述了针 对单表的代码生成器实现过程。在设计代码生成器时主要应该解决的问题还有是对e r p 系统进行抽象,从中寻找其工作流的共性,以便于代码生成器的设计。 另外,论文要达到的要求还有:生成的代码应该不改动或经很小改动就可运行; 生成的代码应具有大多数e r p 系统的共性;生成的代码应便于在此基础上进行创新; 设计出的代码生成器应容易学习,即使不懂编程的人经过短时间学习也应很快学会; 设计出的代码生成器应是采用j a v as w t 编写的并可运行于li 1 1 u x 环境的1 1 0 j ,并且生成 的代码是p h p 代码,这就是论文要达到的技术要求。 1 6 论文的组织结构 本文由以下六章和参考文献组成: 第一章主要介绍课题来源,课题研究的目的和意义,国内外研究现状,论文研究 的主要内容; 第二章主要解释e r p 系统的含义,e r p 系统系统中的工作流技术及在e r p 系统中 4 采用代码生成的可行性: 第三章主要介绍自动化编程技术及l a m p 技术: 第四章主要写软件的需求分析、软件功能及流程设计、软件详细设计; 第五章主要写系统涉及的主要关键技术、关键程序段分析及系统测试: 第六章主要写本文总结及工作展望。 其中第三、四、五章是本文的核心,主要工作集中在第四、五两章。 5 2 1 e r p 系统 第二章e r p 系统与代码生成 e r p 是( e n t e r p r i s er e s o u r c ep l a n n i n g ,企业资源计划系统) 的概念,是美国 g a r t n e r g r o u p 公司于1 9 9 0 年提出的,其确切定义是:m r pi i ( 企业制造资源计划) 下 一代的制造业系统和资源计划软件,即新一代的集成化管理信息系统】。除了m r p i i 已 有的生产资源计划,制造、财务、销售、采购等功能外,还有质量管理,实验室管理, 业务流程管理,产品数据管理,存货、分销与运输管理,人力资源管理和定期报告系 统。 2 2e r p 系统中的工作流技术 2 2 1 工作流及参考模型 l 、工作流 工作流技术最早起源于二十世纪七十年代中期办公自动化领域的研究,由于当时 计算机尚未普及,网络技术水平还很低以及理论基础匮乏,这项新技术并未取得成功。 1 9 8 3 年到1 9 8 5 年间,在图像处理领域和电子邮件领域出现了早期的含有工作流特征的 商用系统。 进入九十年代之后,随着个人计算机、网络技术的推广和普及,以及信息化建设 的日益完善,使得工作流技术的研究与开发进入了一个新的热潮。1 9 9 3 年8 月,第一 个工作流技术标准化的工业组织一一工作流管理联盟( w o r k f l o wm a n a g e m e n t c o a l i t i o n ,简称w f m c ) 成立1 。1 9 9 4 年,工作流管理联盟发布了用于工作流管理系统 之间互操作的工作流参考模型,并相继制定了一系列工业标准。与此同时,关于工作 流技术的学术研究也十分活跃,许多原型系统在实验室里开发出来。进入二十一世纪 以来,工作流技术已被越来越多的人认可,与之相关的标准规范、工作流引擎及商用 产品也越来越多。人们在开发推广工作流产品的同时,更加注重工作流的理论研究, 以推动该项技术走向成熟。 在企业实际应用中,工作流的概念相对于物料流、信息流、资金流等概念要更抽 象些,但是却从更高的层次上提供了实现物料流、信息流、资金流及其涉及的相关过 程与应用的集成机制,从而能够使企业实现业务过程集成、业务过程自动化与业务过 程的管理。 根据w f m c 的定义,工作流( w o r kf 1 0 w ) 就是自动运作的业务过程部分或整体,表 6 现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。 简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。如果我们 可以将整个业务过程看作是一条河,其中流过的就是工作流。 g e o r g a k o p o u l o s 给出的工作流定义是:工作流是将一组任务o :a s k ) 组织起来竞成 某个经营过程。还有许多关于工作流的不同定义,但基本上都说明了这样一个问题, 即工作流是经营过程的一个计算机实现。在实际情况中可以更广泛地把凡是由计算机 软件系统控制其执行的过程都可以称为工作流。 工作流在大多数的实际应用中的情况可以这样来简单的描述:在网络、服务器和 多台计算机客户端的硬件平台上,业务过程按照预先设定的规则并借助应用程序和人 对相关数据的处理而完成。例如,某集团分公司底层员工写好材料后,会先将其交给 分公司领导审批,分公司领导通过后,会将将其交给集团领导进行进一步审批。这样, 可能会形成同一篇文档在多个人间的顺序或同时传递。对于这样的情况,我们可以使 用工作流技术来控制和管理文档在各个计算机之间自动传递。这就可称为工作流。 2 、工作流的参考模型 为了实现不同工作流产品问能够相互操作,工作流管理联盟( w o r k f l o wm a n a g e m e n t c o a l i t i o n ,简称w f m c ) 在工作流管理系统的相关术语、体系结构及应用编程接口( w a p i ) 等方面制定了一系列标准。工作流参考模型( w o r k f l o wr e f e r e n c em o d e l ) 是由工作流 管理联盟于1 9 9 5 年提出的工作流管理系统的体系结构模型,工作流参考模型来源于对 普通工作流程序结构的分析。 工作流参考模型标识了构成工作流管理系统的基本部件和这些基本部件交互使用 的接口。这些基本部件包括:工作流执行服务、工作流引擎、流程定义工具、客户端 应用、调用应用、管理监控工具;基本部件交互使用的接口包括:接口一、接口二、 接口三、接口四和接口五。 从图2 1 中我们可以看出,工作流参考模型包括五个基本组件和五个基本接口( 接 口在图中用双向箭头标出) 。 其中五个基本组件是: ( 1 ) 工作流执行服务。工作流执行服务为系统提供运行时服务,它包括一个或多 个工作流引擎,并以此来产生、管理以及运行工作流实例。其中的工作流引擎定义为, 工作流引擎是指作为w o r k f l o w 的一部分,并为之提供对各应用系统有决定作用的根据 角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。工作流引擎 是工作流执行服务的核心。 ( 2 ) 流程定义工具。流程定义工具主要负责分析、建模、描述业务过程以及对业 务过程的建档,这个组件会给出工作流程的定义,并以一定的数据格式提供给工作流 引擎解析。 7 图2 1 工作流参考模型 ( 3 ) 管理监控工具。管理监控工具负责监控工作流的执行,它可以查看和改变工 作流的执行状态。 ( 4 ) 工作流调用应用。执行者访问工作流的界面,活动参与者通过这样的应用程 序参加工作流活动,获得和执行自己的任务。 ( 5 ) 应用程序。可以被调用的应用都应该是提供了工作流引擎接口的应用程序, 应用程序可以是本地的应用,也可以是远程的调用。因此接口3 就可以是本地函数调 用接口和诸如r p c ,c o r b a ,r m i 之类的远程调用接口。 五个接口分别是: ( 1 ) 接口1 ,工作流执行服务和工作流流程定义工具间的接口,包括工作流模型的 解释和读写操作; ( 2 ) 接口2 ,工作流服务和客户应用之间的接口,这是最主要的接口规范,它约定 所有客户方应用与工作流服务之间的功能操作方式; ( 3 ) 接口3 ,工作流执行服务和直接调用的应用程序之间的直接接口; ( 4 ) 接口4 ,工作流管理系统之间的互操作接口; ( 5 ) 接口5 ,工作流执行服务和工作流管理工具之间的接口。 8 2 3 2e r p 与工作流整合 国内目前的一些e r p 产品实际上还属于管理信息系统| 1 3 i ,侧重于对企业业务数据 的增加、删除、修改、查询,即使有一些业务流程,也都是比较简单的、固定的流程, 无法满足企业业务流程和组织结构、人员的经常变更,更无法满足业务流程将来的扩 充和对其它业务系统的集成。就如同是一组固定的程序,我们须要按照它的规则去执 行,企业的特色和流程很难在其中得到体现。显然固定的业务流程不能满足先进的制 造系统要求企业迅速重组的要求,因此必然带来很多企业实施e r p 时以失败而告终。 e r p 实施的失败,其根源在于这些软件开发商还试图用信息技术的手段来优化和完 善工业时代下的企业管理形态。而忽视了企业管理形态正急剧向信息时代企业管理形 态演进。事实上,目前许多e r p 项目的确是试图规范和优化客户的精确管理,并希望 以此来提高工作效率,结果起了反作用,固化了客户企业原有的组织结构,束缚了企 业组织的演进。其实,管理形式的核心思想是以结构来规范流程,前提条件是业务流 程是稳定的和基本规范的。但是如果业务流程经常发生很大变动的话,e r p 就无法使用 了。这一点在国内外企业众多的实践中已经表现出来,那些变动剧烈的行业和组织变 化迅速的企业,e r p 的失败率往往比较高。作为企业管理的重要软件,目前的e r p 系统 必须做到以下几点: ( 1 ) 适应客户需求变化的特点:适应客户需求变化的特点是指管理软件应该能够 适应不同的情况,进行快速实施,能够快速、低成本的进行重组以满足企业管理模式、 组织结构和业务过程变化的需求。 ( 2 ) 重视企业中的知识:知识已经成为企业的重要资产,已经是企业获得利润的 最主要的“原材料 和关键资源,成为企业获得成功的重要因素。未来领先的企业应 该始终把创造知识、获得知识、管理知识和重用知识作为其重要的发展战略和日常管 理工作的核心问题。当然,管理软件应该成为企业知识管理的工具,必须提供环境促 进企业创造知识,帮助企业快速获得知识,支持隐性知识向显性知识的转化,以及提 供有效手段管理企业知识,提高企业的知识重用水平。 ( 3 ) 适应分布式的环境:企业正面临着分布的环境。一个企业的组织在地理上是 分布的,而且面临着跨组织的协作和集成,包括基于供应链管理的协作和电子商务等。 相应的管理软件也必须采用分布式的开放体系结构。 ( 4 ) 方便与其他软件集成:针对企业从市场开发、产品设计、生产、销售、到售 后服务,要实现纵向集成,针对基于供应链和电子商务的应用,要实现企业之间的横 向集成。这就要求管理软件必须能够方便地实现与其他软件的集成。显然,传统的e r p 在解决上述问题时都存在这样或那样的缺陷,比如固定的业务流程阻碍了企业低成本 业务重组的需求:非分布式的体系结构不能满足企业异地发展的需求等。建立开放的 软件体系结构是解决上述问题的一个关键。基于组件和面向对象的多种复用机制来构 9 建企业的业务功能模块,以工作流管理系统来管理模块的实现是一个能够很好解决上 述问题的方案。 综上所述,在e r p 中的具有流程特征的业务活动都可以应用工作流建模工具建模, 然后在工作流机驱动下自动按照事先定义的业务流程执行。这其中包括:在e r p 中实 现业务流程的管理和功能审批,使e r p 和办公自动化结合:实现产品数据管理与e r p 的集成;实现企业业务重组与e r p 的集成。 对于基于工作流来实现e r p 系统中的审批流,可以描述为:在应用之前,首先根 据企业对有些业务制定的规则,运用工作流定义工具进行定义。经过定义的业务流程 被保存在工作流服务器。所有业务流程中的业务都将在被处理以后送往工作流服务器, 工作流服务器就如同交警一样,按照预先定义好的业务流程来确定各业务的下一步走 向,各项业务任务会在准确的时间发往准确的执行人的业务桌面。 运用工作流,所有工作任务都将被自动发往每个业务人员的业务桌面,由于任务 由工作流服务器发送,因此不会发生发送错误任务的情况。业务人员只需按照业务桌 面的清单执行就可以。同时任务清单还提供任务的处理时间限制等要求,这样业务人 员可以有选择地优先处理时间紧迫的任务,从而可以避免传统手工处理过程中由于大 量业务堆积而造成的一些重要的或紧迫的任务因没有及时发现而造成耽误的现象。如 果系统支持基于邮件的离线处理,即使具有审批权限的领导因公在外出差,有关的文 件也可以及时地传递到该领导的电子信箱。领导只需用随身携带的笔记本电脑或掌上 电脑,连上互联网就可接收邮件,并对所有需要批阅的文件进行处理,批阅完毕的结 果被自动发给公司,并进入工作流服务器的处理队列继续进行后续流程的处理。这样 业务流程不会因为领导或相关人士出差而暂停,有效的缩短业务的处理周期并提高业 务处理的效率。1 1 4 1 2 3 在e r p 中采用代码生成技术 在上节中已做了介绍,e r p 中使用最多的还是增加、删除、修改、查询功能,对 于一个e r p 系统可以这样来理解,工作流技术加上一般的常用增删改查,而且这些增 删改查代码比较固定,这部分代码完全可以采用代码自动生成的方式实现,对于业务 流程,可以通过表与表之间建立关系实现,对于某一领域,这些关系往往比较固定, 因此完全可以采用代码生成的方式实现这部分代码。涉及到流程的代码的生成和常用 的增删改查代码的生成,在实现方式上是基本一致的,为了说明其中的原理,本文选 取了具有代表性的单表进行了代码生成器的设计与实现,在下面的三章,将分别对其 理论基础、设计与实现加以介绍。 1 0 2 4 本章小结 本章先介绍了e r p 系统的定义,后介绍了工作流及其参考模型,在此部分对工作流 的五个基本组件和五个基本接口做了详细介绍,接下来介绍了e r p 与工作流的整合, 在此部分阐明目前国内的e r p 系统实际上还是管理信息系统,并得出e r p 中的流程设 计也可采用代码生成的方式实现的结论,最后介绍了在e r p 系统中采用代码生成技术, 并阐述了按照笔者的设计思路,业务流程的代码生成思想和单表的代码生成思想是一 致的。 第三章自动代码生成技术研究和l a m p 技术 3 。1自动代码生成技术研究 3 1 1 问题的提出及引入 作为一种在上个世纪出现的软件开发技术,自动代码生成技术( c o d eg e n e r a t i o n t e c h n i q u e s ) 已经在一些领域获得了广泛的应用,比如在编译器的设计和实现方面。 随着计算机的普及,还有计算机网络的延伸,人们在享受计算机在工作中和生活 中带来的巨大便利的同时,也对计算机软件和硬件的开发提出了更多的要求。这些要 求具体表现在,e r p 系统的开发所要处理的环境变得越来越复杂,功能要求更加全面; 对系统的快速交付性、安全性、可靠性、稳定性的要求也越来越高;用户的需求在不 停的变化之中。 但另一方面,在软件工程高度发展的今天,多数的软件开发人员仍然使用手工编 写代码的方法。这种传统软件开发方式通常效率较低而且开发周期较长,并且其中存 在大量的重复劳动。在这种情况下,通常出现大型软件项目的延期、成本超出计划、 性能低于预期,甚至中途夭折等,这些问题迫使软件开发人员对于如何降低软件开发 和维护成本、提高开发效率、减少需求变更对系统的影响以及延长系统的生命周期进 行考虑。 然而在传统的开发途径中,这些问题总是很难完善的解决。这就需要一种可以避 免低水平重复开发、能够实现标准化生产的软件开发新方式,以帮助企业应对快速变 化的市场环境。自动代码生成技术在一定程度上帮助解决了这些问题1 1 5 1 。 3 。1 2 已有的自动代码生成实现方式 代码生成方式按照分类方式不同有许多种,本文主要通过输入输出方式不同进行 了分类,主要分为以下五种。 1 、整合式生成器 整合式生成器( c o d em u n g e r ) 的工作流程为:输入给定代码,代码生成器从中找出 重要的特征并输出一个或多个不同类型的文档。如图3 1 所示。生成器输入的源码文 档,很可能是使用正则表达式或一些简单的编码解析,然后以内置的模板或外部提供 的模版生成输出文档。 代码生成器可以用在许多方面,例如生成文档,从文档中读取常量或函数样本。 这方面的例子有:7 a v a d o c l l 引x d o c l e t l l 7 j 。 图3 1 整合式生成器输入输出流程框图 j a v a d o c 是s u n 公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注 释形成一个和源代码配套的a p i 帮助文档。也就是说,只要在编写程序时以一套特定 的标签作注释,在程序编写完成后,通过j a v a d o c 就可以同时形式程序的开发文档了。 j a v a d o c 标记是插入文档注释中的特殊标记,用于标识代码中的特殊引用。j a v a d o c 标记由“ ”及其后所跟的标记类型和专用注释引用构成。j a v a d o c 能帮开发者将j a v a 原始码转换产生网页格式的a p i 文件,可以减少程序设计9 币编写文档的时间,是一个 相当实用的工具。 x d o c l e t 是个开源的代码生成引擎,它使得针对j a v a 的面向属性编程成为可能。 简短来说,能通过添加元数据( 属性) 添加更多有意义的东函到代码中。元数据的添 加是通过j a v a d o c 标签来实现的。x d o c l e t 将分析这些源文件然后从中生成诸如x m l 、 源代码等文件。这些文件的生成是根据模板来的,模板中使用了源代码和j a v a d o c 标 签里的信息。 x d o c l e t 通过解析源文件,生成相关文件,其解析方式类似于j a v a d o c 引擎解析源 代码然后创建j a v a d o c 文档。事实上,x d o c l e t 早期的版本依赖于j a v a d o e 。x d o c l e t 和j a v a d o c 一样,不仅能够访问开发人员以j a v a d o c 标记形式添加到代码的那些额外 的元数据,还能够访问源代码的结构,即源代码的包、类、方法和字段等成员。随后, x d o c l e t 将数据的这一个层次的树结构运用到模版。使用整棵树和开发人员定义的一些 模版来生成相关支持文件【1 8 1 。 2 、内联代码扩展器 内联代码扩展器( i n li n e - c o d ee x p a n d e r ) ,内联代码扩展器的输入是带有特殊标 记的源代码,这些特殊标记经过扩展器的处理后将被替换为相关的代码从而产生最终 的生产源代码,内联代码扩展器的典型应用是将s q l 语句嵌入到源代码中,其主要特 点是使得底层结构和复杂的查询分开。其工作流程如图3 2 所示。 内联代码扩展器通常将s q l 代码嵌入源码文档,开发人员用可以区分的标记来注 释s o l 代码,这些标记设计成对增强器的注解。增强器读写代码,然后在其发现这些 注解的地方,插入实现s q l 。查询或命令的代码。这种想法旨在使代码不受对这些查询 进行管理的下层框架的影响。 1 3 利用一些特殊的注解来表示某个区域的代码,开发人员只需输入少量的注解文字, 就能产生大量的代码,另一方面来说以简御繁也增加了代码的可读性。相关的例子 有,e m b e d d e ds q linc 1 0 1 ,e m b e d d e ds o l 是将数据库语言s q l 嵌入到一个过程式 语言,显然,在e m b e d d e ds q li nc 的过程式语言采用的是c 这样的宿主语言。在下 面这个例子中,在c 的代码中加上了特殊的s q l 注解,用来表示s q l 所要表示的操作 命令。 i 输入带标记的源代码 上 i 内联代码扩展器 i , 输目标代码 上 编译器编译 图3 2 内联代码扩展器输入输出流程框图 v o i dm a i n ( i n ta r g c ,c h a r * a r g v ) p r e p a r e ( “s e l e c tn a m e ,s e x ,a d d rf r o ms t u d e n t ”) : s q l o u t p u t l = m a l l o c ( s i z e o f ( * s q l o u t p u t 1 ) * s t h 一 c o u n t0 ) : f o r ( 1 0 n gi n d e x = o :i n d e x c o u n t0 :i n d e x + + ) 数据处理部分 ) r e t u r n :) 这些特殊注解不但产生了s q l 的c 代码,也让代码看起来更显得简洁明了多了, 从中我们可以看出,内联代码扩展器和整合式生成器一样都符合线性的特征。 3 、混合代码生成器 混合代码生成器( m i x - c o d eg e n e r a t o r ) 使用代码作为输入,然后使用输入代码为 基础创建新代码,但是返回输出代码到输入的文件中。向导经常就作为混合代码生成 器来实现。代码中嵌入的特别的注释,来定义生成器添加新代码的范围。其工作流程 如图3 3 所示。混合代码生成器与内联代码生成器有所不同,因为混合代码生成器将 生成器生成的文档重新作为输入文档,这种生成器查找特别的格式的注释,然后用生 成代码所需要的一些新源码来填补这些注释区域。混合代码生成器用途广泛,一个常 见的是编码在对话框控件与其所代表的变量之间传递消息。代码中的注释说明了数据 元素和控件之间的映射,并且混合代码生成器增加了一个实现,以便将说明与注释进 行匹配。 来看下面的实例,从中可以看出内联代码扩展器和混合代码生成器的不同。 v o i dm a i n ( i n ta r g c ,c h a r * a r g v 口) s q l s e l e c t :s e l e c tn a m e ,s e x ,a d d rf r o ms t u d e n t开始时的注解 s q l s e l e c t e n d 结束时的注解 r e t u r n :) 产生原始码后可以明显看出程序是夹在一组注解当中,不同于内联代码扩展器, 用程序取代了特殊注解,透过这一组注解使得所产生的原始代码还可以经由混合代码 生成器再次重新产生,使用者可以修改注解外的程序,而混合代码生成器则会自动维 护注解里面的程序。 v o i dm a i n ( i n ta r g c ,c h a r * a r g v ) s q l s e e c t :s e l e c tn a m e ,s e x ,a d d rf r o ms t u d e n t开始时的注解 1 5 s t r u t c h a r * n a m e : c h a r * s e x : r i 生成可执行文件 图3 3 混合代码生成器输入输出流程框图 c h a r * a d d r : * s q l o u t p u t j : d b c o n n e c tio n * d b = g e t c o n n e c t io n0 : s q l s t a t e m e n t * s t h = d b 一 p r e p a r e ( “s e l e c tn a m e ,s e x ,a d d rf r o ms t u d e n t ”) 。t s t h 一 e x e c u t e0 : s q l o u t p u t l = m a l l o c ( s i z e o f ( * s q l o u t p u t 1 ) * s t h 一 c o u n t ( ) ) : f o r ( 1 0 n gi n d e x = o :i n d e x c o u n t0 :i n d e x + + ) 数据处理 ) ) s q l s e l e c t e n d结束时的注解 r e t u r n :) 4 、局部代码生成器 局部代码生成器( p a r t i a l c 】a s sg e n e r a t i o n ) 使用一个抽象的定义来作为输入, 然后创建输出代码,用户自己使用子类化来作扩展,以完整实现设计。其流程如图3 4 1 6 所示。 图3 4 局部类代码生成器输入输出流程框图 定义文档里包含产生类所需要的所有信息,将这些信息与所要产生类的模版文档 结合起来产生该类原始码,然后配合其它的类一同组成整个系统。 相应的例子有,产生e j b 中的实体b e a n 的工具,如e j bc r e a t o r 。如图3 5 所示。 m i c r o s o f tv i s u a ls t u d i o n e t 从2 0 0 5 版开始也实现这种功能。 实体b e a n 相当予数据库中数据表所对应的对象,所以利用数据表的相关模式 ( s c h e m a ) ,再加上实体b e a n 的模版格式文档,即产生实体b e a n ,但仍需要会话b e a n 才能形成完整的l i b ,由于实体b e a n 的功能主要是关于基本的数据存取,不包含复杂 的业务规贝0 ,因而可以通过生成器来生成代码。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论