一种通过分类配置自动生成代码的方法及系统的制作方法

文档序号:6370345阅读:262来源:国知局
专利名称:一种通过分类配置自动生成代码的方法及系统的制作方法
技术领域
本发明属于计算机程序开发技术领域,涉及一种自动生成代码的方法,尤其涉及一种通过分类配置自动生成代码的方法;同时,本发明还涉及一种通过分类配置自动生成代码的系统。
背景技术
在传统软件开发方法中,开发一套信息管理系统,需要通过标准的软件开发生命周期,如典型的瀑布式开发分为以下几个阶段需求调研、概要设计、详细设计、程序开发、单元测试、集成测试、系统测试等过程才能完成整个信息管理系统的开发。这其中由于项目规模的大小不同,而每个阶段的工作量比重略有不同;一般来说详细设计、程序开发和单元测试的总工作量超过整个生命周期工作量的60%。但是实际所有基于数据库开发的信息管理系统,80%的界面操作、用户需求都有着 高度的类同点。常见程序都采用MVC结构,MVC是由Model (模型)层、View (视图)、Controller(控制器)层组成。Model (模型)放置业务实体,表示操作数据;View (视图)放置Π模板文件,负责展示输出结果!Controller (控制器)放置Controller类,处理URL请求。但是由于View和Controller层次的实现的复杂性和不确定性,难以实现根据配置自动生成,生成的代码也难以被组合和扩展。有鉴于此,如今迫切需要设计一种可以有效降低在完成“详细设计、程序开发、单元测试”等阶段工作量的方法。

发明内容
本发明所要解决的技术问题是提供一种通过分类配置自动生成代码的方法,可根据配置记录自动生成程序代码,实现整个软件开发流程基本无需详细设计、程序开发和单元测试,大幅减少整个软件开发周期的工作量和开发时间,同时也大幅提高目标系统的质量。此外,本发明还提供一种通过分类配置自动生成代码的系统,可统一生成所有相关实现代码,生成的代码可集成统一的权限控制框架和其它业务逻辑,并且每个模块支持预设的常见操作功能。为解决上述技术问题,本发明采用如下技术方案一种通过分类配置自动生成代码的方法,所述方法包括如下步骤配置信息定义步骤将系统菜单、模块、每个模块的功能、每个模块的界面内容定义分类记录在配置信息中;内容分离步骤MVC三层结构包括视图View层、模型Model层、控制器ControlIer层,通过将整个系统程序结构中MVC三层结构中的View层和Model层的内容都分离为可以和每个数据库表相对应的文件;
信息自动同步步骤设定数据绑定机制,让View层的表现内容和Model层的数据根据配置信息实现自动同步;逻辑操作信息获取步骤通过View层和Model层的同步机制,Controller层通过配置信息获取当前模块的各类逻辑操作的必要信息,从而完成公共操作的实现,并且这些Controller被扩展来实现类似逻辑;程序自动生成步骤让自动生成程序根据配置信息生成目标系统文件,同时生成的程序文件可以被组合应用在各种业务应用场景下。作为本发明的一种优选方案,内容分离步骤中,将View层和Model层的内容都分离为可以和每个数据库表相对应的文件的流程具体包括
将View层的涉及的每个数据库表生成对应的页面,包括查询字段部分页面文件、只读列表部分页面文件、弹出窗口查询字段部分页面文件、弹出窗口只读列表部分页面文件、可编辑列表部分页面文件、可编辑表单部分页面文件、只读表单部分页面文件;所述数据库表包括主表,或者还包括一级或多级子表;为该模块生成若干个总的操作页面,包括整个模块的列表页面、整个模块的可编辑页面、整个模块的弹出窗口列表页面;整个模块的列表页面引用主表的查询字段部分页面文件和只读列表部分页面文件;整个模块的可编辑页面引用主表的可编辑表单部分页面文件和所有直接子表的可编辑列表部分页面文件;整个模块的弹出窗口列表页面引用主表的弹出窗口查询字段部分页面文件和弹出窗口只读列表部分页面文件;如果该模块只有主表,没有子表,则无需生成子表相关的内容;再为该模块的所有子表生成若干可编辑页面,引用该子表的可编辑表单部分页面文件和该子表所有直接子表的可编辑列表部分页面文件;此外还为每个页面引用到的所有字段名称可以生成对应的资源文件,用于多语言的切换;将Model层的内容分离为文件的过程采用ORMapping框架实现;数据库外键统一分为两种主从表关系,非主从表的代码名称对应关系;外键关系通过ORMapping框架的对象关联来实现。作为本发明的一种优选方案,所述信息自动同步步骤中设定数据绑定机制的流程包括每个页面对应一个当前页面的Page对象,该对象当中可保存所有相关的页面信息、相关数据库对象;在系统后台逻辑执行完毕后,系统可将该Page对象序列化为一个byte数组,再通过base64编码和zip压缩成一个字符串后放在页面的一个隐含字段中;当页面提交时候,后台代码可在请求中获取该隐含字段的值,通过反序列化获取该页面提交前的Page对象,再将页面提交的新值和变化附加到该Page对象中,从而在后台代码中始终能够获得页面的所有相关信息,然后可以实现将当前模块相关的数据对象始终保留在Page对象中,并且可以让该数据对象和页面最新内容保持同步;将页面提交的值附加到Page对象中的对应,通过读取该模块的配置来确定哪些信息需要附加,如何对应附加;而页面显示时候,让页面每个字段显示Page对象内的对应的对象值,可通过自定义代码直接读取Page对象或者统一将Page对象中的属性值放置在请求request的属性attribute中,从而可以利用已有的第三方类库;此外在发生异常回滚时候,可以利用原Page对象而返回到页面原始情况;从而实现在任意页面转向中保持界面元素和数据对象的自动无缝绑定。作为本发明的一种优选方案,所述逻辑操作信息获取步骤中,Controller层通过配置信息获取当前模块的各类逻辑操作的必要信息包括如下步骤在所有页面提交中包含以下变量当前页面的路径、页面对象的序列化字符串、当前菜单编号、当前菜单类型、当前模块的编号、当前主表的表名加主键字段名、当前主表的主键值、当前子表的表名加主键字段名、当前子表的主键值原、查询条件对象的序列化字符串;根据页面表单提交的当前模块编号定义字段的值来从配置中获得当前模块对应 的数据库对象,从而在查询操作中可动态拼接数据库SQL语句,在保存操作中,通过当前模块的字段定义配置,动态的将页面表单内容附加到数据库对象中,完成数据库操作;数据库事务控制可通过程序运行容器、第三方类库或者数据库自身提供的机制实现。作为本发明的一种优选方案,所述逻辑操作信息获取步骤中,Controller被扩展来实现类似逻辑的流程包括如下步骤在Controller层次,使用面向切面编程AOP来实现对每个Controller的拦截来附加商业逻辑;或者,所有Controller继承祖先类,在祖先类中实现Controller自身逻辑实现的拦截;或者,通过组合ContiOller的不同数据库对象的新增、删除、修改、查询的逻辑,来实现需要的扩展的业务逻辑;在View层次,大部分扩展逻辑可在页面逻辑扩展目录下的页面中增加,或者直接修改生成页面目录下面的页面;权限系统采用权限、角色、角色所属权限、用户、用户所属角色表结构;系统菜单使用典型的顶部下拉式菜单,或者采用右侧可收缩树形菜单,或者采用图标导航方式;权限系统和系统菜单都属于一次性代码,可重复使用;权限控制通过Filter或面向切面编程AOP来实现,并且利用每个模块的当前模块菜单编号传参来判断;系统菜单通过将每个具体模块放置在内置页面容器,如iframe中来实现和每个具体模块集成使用。作为本发明的一种优选方案,所述程序自动生成步骤中,自动生成程序根据配置信息生成目标系统文件的流程包括通过配置信息定义步骤设定的配置信息,按照如下顺序,为每个模块逐步生成下列文件每个模块对应的数据库表结构;每个模块的数据库对象配置;每个模块的数据库对象;每个模块的所有操作功能对应的Controller代码;每个模块的每张表对应的只读列表内容,可编辑列表内容,搜索条件表单内容,可编辑表单内容,只读表单内容页面;每个模块的每张表的特殊逻辑附加页面;每个模块的每张表的字段验证代码页面;
每个模块的列表页面;每个模块的编辑页面;每个模块的弹出窗口用的列表页面。作为本发明的一种优选方案,所述公共操作包括搜索、新增、修改、保存、删除、批量删除中的一种或多种。一种通过分类配置自动生成代码的系统,所述系统包括配置信息定义单元,用以将系统菜单、模块、每个模块的功能、每个模块的界面内容定义分类记录在配置信息中;
内容分离单元,MVC三层结构包括视图View层、模型Model层、控制器Controller层,所述内容分离模块通过将整个系统程序结构中MVC三层结构中的View层和Model层的内容都分离为可以和每个数据库表向对应的文件;信息自动同步单元,用以设定特别的数据绑定机制,让View层的表现内容和Model层的数据根据配置信息实现自动同步;逻辑操作信息获取单元,用以通过View层和Model层的同步机制,Controller层通过配置信息获取当前模块的各类逻辑操作的必要信息,从而完成公共操作的实现,并且这些Controller被扩展来实现类似逻辑;程序自动生成单元,用以根据配置信息生成目标系统文件,同时生成的程序文件可被组合应用在各种业务应用场景下。作为本发明的一种优选方案,所述公共操作包括搜索、新增、修改、保存、删除、批量删除中的一种或多种。本发明的有益效果在于本发明提出的通过分类配置自动生成代码的方法及系统,通过分类记录各用户的需求,通过将用户需求形成规范的配置记录,再通过配置记录,利用统一的程序生成可运行的、满足用户需求的信息管理系统和相关可扩展程序代码,从而实现整个软件开发流程基本无需详细设计、程序开发和单元测试,大幅减少整个软件开发周期的工作量和开发时间,同时也大幅提高目标系统的质量。


图I为本发明通过分类配置自动生成代码方法的流程图。
具体实施例方式下面结合附图详细说明本发明的优选实施例。实施例一本发明提供一种通过分类配置自动生成代码的方法及系统,帮助软件开发人员摆脱重复劳动,将80%的典型逻辑交给工具生成的代码处理,而将有限的时间精力集中20%真正特别的商业逻辑中。本实施例以使用J2EE技术实现B/S结构的信息管理系统为例介绍本发明方法。技术环境如下使用spring作为MVC框架;使用hibernate作为数据库ORMapping工具;数据库可以任意选择hibernate支持的数据库即可。请参阅图1,本发明揭示了一种通过分类配置自动生成代码的方法,所述方法包括如下步骤配置信息定义步骤将系统菜单、模块、每个模块的功能、每个模块的界面内容定义分类记录在配置信息中。该步骤通过配置信息定义单元实现。配置信息具体内容可包括I.定义目标系统的菜单结构2.定义目标系统的每个菜单对应的模块3.定义每个模块的可操作功能,如常见操作功能有搜索、新增、修改、保存、删除、批量删除、导入、导出 4.定义每个模块的界面类型和操作风格(具体界面类型和操作风格分类见“具体实施方式
”中的说明)5.定义每个模块的界面内容A.包含数据项分类,对应数据库表、每个表的唯一约束定义B.每个数据项的具体属性 输入字段名称 类型 长度 精度 输入形式(普通输入、radiobox、checkbox、下拉框、弹出选择窗口) 默认值 是否必填 字段在不同界面中的排序顺序 字段在不同界面中的排列方式 是否需要作为查询条件 是否外键关联字段;如果是外键关联字段,需要标志关联的模块、表、字段、显示字段信息 是否是主键内容分离步骤MVC三层结构包括视图View层、模型Model层、控制器Controller层,通过将整个系统程序结构中MVC三层结构中的View层和Model层的内容都分离为可以和每个数据库表相对应的文件。该步骤通过内容分离单元实现。内容分离步骤具体包括(I)将View层的涉及的每个数据库表生成对应的如下页面V查询字段部分页面文件V只读列表部分页面文件V弹出窗口查询字段部分页面文件V弹出窗口只读列表部分页面文件V可编辑列表部分页面文件V可编辑表单部分页面文件V只读表单部分页面文件
(2)为该模块生成几个总的操作页面如下V整个模块的列表页面(引用前面步骤中的主表的查询字段部分页面文件和只读列表部分页面文件)V整个模块的可编辑页面(引用前面步骤中的主表的可编辑表单部分页面文件和所有直接子表的可编辑列表部分页面文件)V整个模块的弹出窗口列表页面(引用前面步骤中的主表的弹出窗口查询字段部分页面文件和弹出窗口只读列表部分页面文件)(3)再为该模块的所有子表生成可编辑页面。(引用前面步骤中的该子表的可编辑表单部分页面文件和该子表所有直接子表的可编辑列表部分页面文件)(4)此外还为每个页面引用到的所有字段名称可以生成对应的资源文件,用于多语目的切换。如果该模块只有主表,没有子表(即从表),则无需生成子表相关的内容。具体每个表对应的列表和表单页面的代码实现逻辑参见“数据绑定机制”。以下以具有两个表的一个主从表模块作为例子,具体包含的页面如表I、表2所
/Jn ο
权利要求
1.一种通过分类配置自动生成代码的方法,其特征在于,所述方法包括如下步骤 配置信息定义步骤将系统菜单、模块、每个模块的功能、每个模块的界面内容定义分类记录在配置信息中; 内容分离步骤MVC三层结构包括视图View层、模型Model层、控制器Controller层,通过将整个系统程序结构中MVC三层结构中的View层和Model层的内容都分离为可以和每个数据库表相对应的文件; 信息自动同步步骤设定数据绑定机制,让View层的表现内容和Model层的数据根据配置信息实现自动同步; 逻辑操作信息获取步骤通过View层和Model层的同步机制,Controller层通过配置信息获取当前模块的各类逻辑操作的必要信息,从而完成公共操作的实现,并且这些Controller被扩展来实现类似逻辑; 程序自动生成步骤让自动生成程序根据配置信息生成目标系统文件,同时生成的程序文件可以被组合应用在各种业务应用场景下。
2.根据权利要求I所述的通过分类配置自动生成代码的方法,其特征在于 内容分离步骤中,将View层和Model层的内容都分离为可以和每个数据库表相对应的文件的流程具体包括 将View层的涉及的每个数据库表生成对应的页面,包括查询字段部分页面文件、只读列表部分页面文件、弹出窗口查询字段部分页面文件、弹出窗口只读列表部分页面文件、可编辑列表部分页面文件、可编辑表单部分页面文件、只读表单部分页面文件;所述数据库表包括主表,或者还包括一级或多级子表; 为该模块生成若干个总的操作页面,包括整个模块的列表页面、整个模块的可编辑页面、整个模块的弹出窗口列表页面;整个模块的列表页面引用主表的查询字段部分页面文件和只读列表部分页面文件;整个模块的可编辑页面引用主表的可编辑表单部分页面文件和所有直接子表的可编辑列表部分页面文件;整个模块的弹出窗口列表页面引用主表的弹出窗口查询字段部分页面文件和弹出窗口只读列表部分页面文件;如果该模块只有主表,没有子表,则无需生成子表相关的内容; 再为该模块的所有子表生成若干可编辑页面,引用该子表的可编辑表单部分页面文件和该子表所有直接子表的可编辑列表部分页面文件; 此外还为每个页面引用到的所有字段名称可以生成对应的资源文件,用于多语言的切换; 将Model层的内容分离为文件的过程采用ORMapping框架实现; 数据库外键统一分为两种主从表关系,非主从表的代码名称对应关系;外键关系通过ORMapping框架的对象关联来实现。
3.根据权利要求I所述的通过分类配置自动生成代码的方法,其特征在于 所述信息自动同步步骤中设定数据绑定机制的流程包括 每个页面对应一个当前页面的Page对象,该对象当中可保存所有相关的页面信息、相关数据库对象; 在系统后台逻辑执行完毕后,系统可将该Page对象序列化为一个byte数组,再通过base64编码和zip压缩成一个字符串后放在页面的一个隐含字段中;当页面提交时候,后台代码可在请求中获取该隐含字段的值,通过反序列化获取该页面提交前的Page对象,再将页面提交的新值和变化附加到该Page对象中,从而在后台代码中始终能够获得页面的所有相关信息,然后可以实现将当前模块相关的数据对象始终保留在Page对象中,并且可以让该数据对象和页面最新内容保持同步; 将页面提交的值附加到Page对象中的对应,通过读取该模块的配置来确定哪些信息需要附加,如何对应附加; 而页面显示时候,让页面每个字段显示Page对象内的对应的对象值,可通过自定义代码直接读取Page对象或者统一将Page对象中的属性值放置在请求request的属性attribute中,从而可以利用已有的第三方类库; 此外在发生异常回滚时候,可以利用原Page对象而返回到页面原始情况;从而实现在任意页面转向中保持界面元素和数据对象的自动无缝绑定。
4.根据权利要求I所述的通过分类配置自动生成代码的方法,其特征在于 所述逻辑操作信息获取步骤中,Controller层通过配置信息获取当前模块的各类逻辑操作的必要信息包括如下步骤 在所有页面提交中包含以下变量当前页面的路径、页面对象的序列化字符串、当前菜单编号、当前菜单类型、当前模块的编号、当前主表的表名加主键字段名、当前主表的主键值、当前子表的表名加主键字段名、当前子表的主键值原、查询条件对象的序列化字符串;根据页面表单提交的当前模块编号定义字段的值来从配置中获得当前模块对应的数据库对象,从而在查询操作中可动态拼接数据库SQL语句,在保存操作中,通过当前模块的字段定义配置,动态的将页面表单内容附加到数据库对象中,完成数据库操作;数据库事务控制可通过程序运行容器、第三方类库或者数据库自身提供的机制实现。
5.根据权利要求I所述的通过分类配置自动生成代码的方法,其特征在于 所述逻辑操作信息获取步骤中,Controller被扩展来实现类似逻辑的流程包括如下步骤 在Controller层次,使用面向切面编程AOP来实现对每个Controller的拦截来附加商业逻辑;或者通过所有Controller继承祖先类,在祖先类中实现Controller自身逻辑实现的拦截;或者,通过组合Controller的不同数据库对象的新增、删除、修改、查询的逻辑,来实现需要的扩展的业务逻辑; 在View层次,大部分扩展逻辑可在页面逻辑扩展目录下的页面中增加,或者直接修改生成页面目录下面的页面; 权限系统采用权限、角色、角色所属权限、用户、用户所属角色表结构; 系统菜单使用典型的顶部下拉式菜单,或者采用右侧可收缩树形菜单,或者采用图标导航方式; 权限系统和系统菜单都属于一次性代码,可重复使用;权限控制通过Filter或面向切面编程AOP来实现,并且利用每个模块的当前模块菜单编号传参来判断;系统菜单通过将每个具体模块放置在内置页面容器中来实现和每个具体模块集成使用。
6.根据权利要求I所述的通过分类配置自动生成代码的方法,其特征在于 所述程序自动生成步骤中,自动生成程序根据配置信息生成目标系统文件的流程包括通过配置信息定义步骤设定的配置信息,按照如下顺序,为每个模块逐步生成下列文件 每个模块对应的数据库表结构; 每个模块的数据库对象配置; 每个模块的数据库对象; 每个模块的所有操作功能对应的Controller代码; 每个模块的每张表对应的只读列表内容,可编辑列表内容,搜索条件表单内容,可编辑表单内容,只读表单内容页面; 每个模块的每张表的特殊逻辑附加页面; 每个模块的每张表的字段验证代码页面; 每个模块的列表页面; 每个模块的编辑页面; 每个模块的弹出窗口用的列表页面。
7.根据权利要求I所述的通过分类配置自动生成代码的方法,其特征在于 所述公共操作包括搜索、新增、修改、保存、删除、批量删除中的一种或多种。
8.—种通过分类配置自动生成代码的系统,其特征在于,所述系统包括 配置信息定义单元,用以将系统菜单、模块、每个模块的功能、每个模块的界面内容定义分类记录在配置信息中; 内容分离单元,MVC三层结构包括视图View层、模型Model层、控制器Controller层,所述内容分离模块通过将整个系统程序结构中MVC三层结构中的View层和Model层的内容都分离为可以和每个数据库表向对应的文件; 信息自动同步单元,用以设定特别的数据绑定机制,让View层的表现内容和Model层的数据根据配置信息实现自动同步; 逻辑操作信息获取单元,用以通过View层和Model层的同步机制,Controller层通过配置信息获取当前模块的各类逻辑操作的必要信息,从而完成公共操作的实现,并且这些Controller被扩展来实现类似逻辑; 程序自动生成单元,用以根据配置信息生成目标系统文件,同时生成的程序文件可被组合应用在各种业务应用场景下。
9.根据权利要求8所述的通过分类配置自动生成代码的系统,其特征在于 所述公共操作包括搜索、新增、修改、保存、删除、批量删除中的一种或多种。
全文摘要
本发明揭示了一种通过分类配置自动生成代码的方法及系统,所述方法包括如下步骤将系统菜单、模块、每个模块的功能、每个模块的界面内容定义分类记录在配置信息中。通过将整个系统程序结构中MVC三层结构中的View层和Model层的内容都分离为可以和每个数据库表向对应的文件。设定特别的数据绑定机制,让View层的表现内容和Model层的数据根据配置信息实现自动同步。通过View层和Model层的同步机制,Controller层通过配置信息获取当前模块的各类逻辑操作的必要信息,从而完成公共操作的实现,并且这些Controller被扩展来实现类似逻辑。本发明可根据配置记录自动生成程序代码,大幅减少整个软件开发周期的工作量和开发时间,同时也大幅提高目标系统的质量。
文档编号G06F9/44GK102722372SQ20121016890
公开日2012年10月10日 申请日期2012年5月25日 优先权日2012年5月25日
发明者鲍伟伟 申请人:上海学智科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1