代码自动生成系统.doc_第1页
代码自动生成系统.doc_第2页
代码自动生成系统.doc_第3页
代码自动生成系统.doc_第4页
代码自动生成系统.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

本钢ERP代码自动生成系统的开发史洪波(本钢信息自动化公司软件开发事业部)摘 要:本钢ERP系统维护的工作量大,大部分的页面功能类似。在新增业务需求的情况下,可以利用本系统自动修改和生成JSP、Java、XML、SQL、Properties类型的全部代码,生成的代码可以提供新增、修改、删除、导入、树、打印、查询等基本功能。本系统原理是利用各种页面风格的JSP、Java、XML、SQL等文件作为模板,利用配置参数替换掉文件中可变部分,从而形成多种页面风格通用的代码生成系统。本文总结了本钢ERP中常用的6种页面样式,并用Java语言实现了其代码的自动生成过程,只需书写好DAO文件并在系统中填写少许的配置信息,然后点击按钮即可完成代码的产生,节省时间,提高工作效率。关键词:ERP Java 代码自动生成Benxi Steel ERP automatic code generation systemShi Hongbo(Benxi Steel Information & Automation Co.Ltd Software Development Department)ABSTRACT: There are a great deal maintain work in Benxi Iron and Steel Co. Ltd. ERP system, most of the page features are similar. In the case of needing new business, the system can automatically generate and modify all of the codes in many types, such as JSP, Java, Xml, SQL, Properties. Codes provide new, modify, delete, import, tree, print, query, and other basic functions and pride many different page styles by replacing the parameter of file. There are 6 common page styles are summarized in the Benxi Iron and Steel Co. Ltd. ERP, and use java language to achieve the automatic code generation process, just to write the file of DAO in the system and a little configuration information, then click the button to complete the code, saved a lot of time and improved the work efficiency.KEY WORD: ERP Java automatic-code-generation作者简介:史洪波,男,出生于1974年7月28日,1998年7月毕业于华东冶金学院工业分析专业,同年到本钢技术中心从事钢铁检验工作。2006年3月调至本钢信息自动化公司软件开发事业部从事软件开发工作。Email:1、引言本钢ERP系统有着良好的开发规范,命名规则有规律可循,因此在新增业务需求的情况下非常适合用代码自动生成系统来减少开发过程中的工作量,减少了开发人员的Ctrl+C/Ctrl+V操作,节省时间,提高工作效率。本系统原理是利用各种页面风格的JSP、Java、XML、SQL等文件作为模板,利用配置参数替换掉文件中可变部分,从而形成多种页面风格通用的代码生成系统。本系统采用J2SE中的Awt和Swing技术来绘制整个系统的图形界面,使系统界面整洁美观,使用xml文件作为本系统的配置文件,并对XML文件设定了DTD的格式校验,保证XML的格式良好。在系统界面中输入少量的条件即可产生和修改JSP、Java、XML、SQL、Properites等类型的文件,并对已经存在的文件先备份成Bak文件,生成的代码可具有新增、修改、删除、查询、导入、树、打印等功能。由于XML具有便于阅读和理解,可扩展等优点,而DAO文件格式的不规范性,系统中还提供了DAO文件与XML格式的相互转换,转换中使用了XLST技术,简化了转换操作。系统还提供了即时编辑DAO文件,并另存为DAO文件或XML文件。本系统生成的代码可以在测试环境中直接执行,开发人员可根据业务的需要适当的调整即可应用到ERP中,使开发人员的工作主要集中在数据库和业务逻辑的设计上。2、需求分析从整体架构上来分,本钢ERP分成了2种,一种是设备组的Struct+Hibernate架构,另外就是非设备的Structs+Jdbc方式。设备架构实现方式是在IPMS的基础上进行了全面的包装,由于采用了Hibernate,代码布局上已经与非设备系统完全不同,所以在本系统中生成代码时需要区分是否为设备系统,根据系统的不同应该生成不同架构的代码。本系统还需要适应多种多样的页面布局,同时也应该考虑对新增、修改、删除、查询、打印、导入、树等多种功能的定制,以适应不同的需求。3、系统结构设计为了减少程序开发人员维护的工作量,本人对ERP的架构进行了分析。ERP的架构分为设备和非设备架构,对常用的页面风格进行了总结,找出了常见的6种页面风格,并对其实现了代码的自动生成。6种页面风格见图1-图6:图 1单个页面无页签Fig: 1 single page without tab图 2 多页签(无树无查询)-各页签独立Fig: 2 Multi-tab (no tree no inquiries) - Every tab are independent图 3多页签(无树无查询)-其他页签均依赖第一页签Fig: 3 Multi-tab (no tree no inquiries) - Other tab are dependent on the first tab图 4多页签(有树无查询) -各页签均依赖树Fig: 4 Multi-tab (no inquiries) - Every tab are dependent on the tree图 5多页签(有查询无树)-各页签均依赖查询Fig: 5 Multi-tab (no tree) - Every tab are dependent on the inquiries图 6多页签(有查询有树) -各页签均依赖查询或树Fig: 6 Multi-tab (tree and inquiries) - Every tab are dependent on the inquiries or tree本系统还提供了一个配置参数为“是否为缺省模式”,缺省模式会生成新增、修改、删除、查询、打印、导入、树等多种功能,并可以对各页签名称、页签ID、自然主键、虚拟主键和FLD中Tab名称进行自动生成,如果选择非缺省模式则需手动填写下面的资料,其中的X代表第X个DAO文件:CULNAME_X=mxmxxpage-Tab页标题输出的变量名DESC_X=取mxmxxno对应的汉字名称-Tab页标题输出的汉字名IFRAME_X=mxmxx_List-FLD中Tab页嵌入的文件名NATUREPK_X=mxmxxno-自然主键(默认为mxmxxno)VIRTUALPK_X=mxmxxid-虚拟主键(默认为mxmxxid)FUNCTION_INS_X=true-定制新增功能FUNCTION_UPD_X=true-定制修改功能FUNCTION_PRTS_X=false-不定制打印功能FUNCTION_QRY_X=false-不定制查询功能FUNCTION_IMT_X=false-不定制导入功能4、详细设计与实现4.1参数设定4.1.1下面板参数见图7:图 7 下面板参数Fig: 7 the panel parameters at the bottom系统参数分为设备和非设备系统,ERP参数是指当前ERP开发环境的路径,点击红色按钮可以选择目录并设定成新的路径。输入参数是指自动生成代码生成的路径,点击红色按钮可以选择目录并设定成新的路径。ID和用户是在程序注释中的代码撰写者的ID和中文名,字体参数设定JSP页面编码为简体还是繁体,风格参数包括了6种页面布局风格,树层数参数是用来设定生成树状结构的层数,列数参数是表示在JSP中生成的每行栏位数,缺省参数表示是否去定制新增、修改、打印、查询、导入和设定页签ID和名称等功能。4.1.2右面板参数见图8:图 8 右面板参数Fig: 8 the panel parameters on the rightDAO数参数最大可以支持8个,也就说一个页面上最多可以使用8个表的数据。下面的参数则是DAO的名称和对应子系统的位数, 输入框中支持鼠标的复制和粘贴操作。增删子系统参数用来输入子系统名实现增加和删除子系统功能,最后列出了目前系统中的子系统名称4.1.3中间面板如图9:图 9中间面板Fig: 9 the panel parameters in the middle中间面板用来显示DAO文件的内容,本人在原有DAO文件的基础上增加了3列,用来表示在列表页面、新增页面、修改页面中字段是否显示在页面上,如果选择N则字段不需要在上述页面中显示。字段ID、字段概述、长度栏位可以手动输入和修改,数据类型、主键、存储格式、缺省、列表显示、新增显示、修改显示、显示类型栏位均可以点击鼠标可以选择。参数1-3作为保留栏位。4.2功能模块图本系统包括产生ERP代码、代码导入系统等16个子功能,功能模块图见图10:图 10功能模块图Fig:10 Function module4.3类关系图本系统的主要类之间关系图如图11所示。图 11类关系图Fig:11 Relation of the Classes (1)CodeAutoGenGUI类本系统程序入口类,实现主框架的建立和显示(2)CodeAutoGenFrame类主框架类,定义屏幕尺寸、窗口图标、背景颜色等,并把主面板添加到主框架中。(3)CodeGenTitlePanel类标题面板类,由主面板类调用,绘制系统标题面板,并添加到主面板中显示。(4)CodeGenMainPanel类主面板类,是系统的核心类,主面板分成标题面板、左面板、右面板、下面板以及中间编辑区。主面板类实现了系统图形界面绘制、布局、显示和相应按钮、鼠标动作,实现各种功能。它包括了2个主要方法,CodeGenMainPanel方法、actionPerformed方法。CodeGenMainPanel方法主要是用来初始化设置面板整体观感和布局、定义和初始化各个面板上控件所使用的变量、设置各面板控件的显示样式、并把各面板布局到主面板中,从而形成美观的图形界面。actionPerformed方法是用来对下面板、左面板和右面板上的按钮、下拉框及鼠标的动作做出相应,实现功能。右面板上的DAO文件名和子系统长度的TextField中支持鼠标的剪切、复制和粘贴操作。下面板上的ERP路径和输出路径的红色按钮可以弹出目录选择框选择选定的目录,并保存在TextField中显示。改变下面板的下拉列表框的值时,本方法会相应动作取得值并赋予变量中待用。actionPerformed方法还包括了左面板上16个按钮的动作相应,实现功能模块图图10中所示的子功能。左面板的功能分为系统配置文件的读取与保存、DAO文件与XML文件格式的相互转换、DAO文件的读取与保存、XML格式的DAO文件的读取与保存、清除系统配置信息和中部面板DAO内容、产生ERP代码、导入ERP代码到开发环境、导入SQL语句到数据库中、在系统配置文件中增加与删除子系统代码和退出系统。(5)ReadAndWriteXml、ReadAndWriteText类这2个类是用来读取和保存系统配置文件、DAO文件、XML格式DAO文件。其中ReadAndWriteXml类中采用dom4j技术实现XML节点的读取和保存。利用已经设计好的XLST模板,采用XLST技术实现了XML文件到文本文件的转换。(6)CreateAllDirectory类此类是根据设定的输出路径组合出待产生的ERP代码存放的目录,(7)CreateAllFile类此类是整个系统的核心类,是实现本钢ERP代码自动生成的关键。它根据系统的配置参数中的是否为设备系统、页面风格类型和是否缺省来定制需要产生的文件,调用相应的CreateBpJavaFile、CreateDaoVoFile、CreateHbmFile、CreateJspFile 、CreateScrCrlJavaFile、CreateSqlFile、CreateSrcJavaFile、CreateTreeJavaFile和ModifyFile类来产生和修改Jsp、XML、Java、SQL、Properties文件,这些文件的生成原理是在6种风格的模板中,利用“子系统别”、“程序别”、“代码长度”、“是否为设备系统”、是否为缺省参数、页面风格等配置参数替换文件中可以变化的部分,利用BufferedWriter类输出到指定的文件中,生成所需的所有文件。系统生成的主页面pageID命名规则为:2码系统别:第一个DAO文件的“系统别+JJ+代码别”3码系统别:第一个DAO文件的“系统别+J+代码别”在代码导入到开发环境中后在地址栏中输入“http:/localhost/erp/系统别/do?_pageId=主页面pageID”就可以看到系统生成的页面了。(8)CheckErrors此类是用来在读取DAO、产生ERP代码等操作时检测DAO文件格式、系统配置参数是否有误,并给出出错信息,提醒用户及时修改,以避免输入数据有误的情况下去执行生成代码的操作。(9)ConnectToDB此类是用来连接DB2数据库,在config.xml文件中读取数据库的信息后,使用DB2的Type2驱动来连接数据库,并递归搜索选定目录下所有SQL文件,读取SQL语句后到数据库中执行,生成所需要的表。(10)TestCodeAutoGenGUI此类是JUnit测试类,编写了缺省模式和非缺省模式下的测试用例对代码自动生成系统进行了测试,5、测试本系统使用JUnit作为测试工具,对缺省模式和非缺省模式进行了测试,取得了满意

温馨提示

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

评论

0/150

提交评论