一种程序生成方法及装置与流程

文档序号:16996730发布日期:2019-03-02 01:25阅读:135来源:国知局
一种程序生成方法及装置与流程
本发明涉及计算机
技术领域
,更具体的说,涉及一种程序生成方法及装置。
背景技术
:目前,很多工具都可以根据输入信息生成一些代码片段,例如,eclipse工具可以自动生成getter/setter,tostring,equals等代码,mybatisgenerator工具可以生成mybatis数据库访问代码。但是,现有的工具并不具有形成完整系统交易的功能,因此,无法将这些代码片段形成完整的业务。现有采用人工干预方法将这些代码片段形成完整的系统交易流程。由于系统交易流程复杂,考虑因素多,设计、编码和测试的工作量大,因此人工编写代码片段容易因疏漏而形成漏洞bug,且容易存在编码不规范的问题。技术实现要素:有鉴于此,本发明公开一种程序生成方法及装置,以实现代码自动生成,简化代码开发流程,提高代码质量和可读性,减少工作量,有效避免编码不规范的问题。一种程序生成方法,包括:通过代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板;由所述代码生成引擎基于所述程序模板,对所述交易需求描述信息、所述交易技术参数和所述关系型数据库按照代码生成流程进行处理,生成标准代码;将所述标准代码作为目标代码进行输出。可选的,所述程序模板分为:标准程序模板和用户自定制程序模板。可选的,所述交易需求描述信息为:将用户输入的初始需求描述信息转换成预设标准格式后,生成的预设标准格式的交易需求描述信息。可选的,所述将所述标准代码作为目标代码进行输出,具体包括:获取预设补充条件;将所述预设补充条件添加至所述标准代码,形成目标代码;输出所述目标代码。可选的,所述交易技术参数包括:通信协议、报文格式、命名规则,类型选项、技术限制、名称转换表、默认值和错误码。一种程序生成装置,包括:获取单元,用于通过代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板;代码生成单元,用于由所述代码生成引擎基于所述程序模板,对所述交易需求描述信息、所述交易技术参数和所述关系型数据库按照代码生成流程进行处理,生成标准代码;输出单元,用于将所述标准代码作为目标代码进行输出。可选的,所述程序模板分为:标准程序模板和用户自定制程序模板。可选的,所述交易需求描述信息为:将用户输入的初始需求描述信息转换成预设标准格式后,生成的预设标准格式的交易需求描述信息。可选的,所述输出单元具体包括:获取子单元,用于获取预设补充条件;添加子单元,用于将所述预设补充条件添加至所述标准代码,形成目标代码;输出子单元,用于输出所述目标代码。可选的,所述交易技术参数包括:通信协议、报文格式、命名规则,类型选项、技术限制、名称转换表、默认值和错误码。从上述的技术方案可知,本发明公开了一种程序生成方法及装置,由代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板,然后代码生成引擎基于程序生成模板,对交易需求描述信息、交易技术参数和关系型数据库进行处理,生成标准代码。本发明采用代码生成引擎、程序模板和参数化配置功能,实现了对交易需求描述信息、交易技术参数和关系型数据库的自动整合处理,从而支持代码自动生成。相对于传统方案采用人工编写代码片段而言,本发明简化了代码开发流程,提高了代码质量和可读性,减少了工作量。并且,采用统一的程序生成方法可以提高系统升级改造的效率,增强程序的扩展性,并有效避免了编码不规范的问题。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。图1为本发明实施例公开的一种程序生成方法流程图;图2为本发明实施例公开的另一种程序生成方法流程图;图3为本发明实施例公开的一种程序生成装置的结构示意图;图4为本发明实施例公开的另一种程序生成装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例公开了一种程序生成方法及装置,由代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板,然后代码生成引擎基于程序生成模板,对交易需求描述信息、交易技术参数和关系型数据库进行处理,生成标准代码。本发明采用代码生成引擎、程序模板和参数化配置功能,实现了对交易需求描述信息、交易技术参数和关系型数据库的自动整合处理,从而支持代码自动生成。相对于传统方案采用人工编写代码片段而言,本发明简化了代码开发流程,提高了代码质量和可读性,减少了工作量。并且,采用统一的程序生成方法可以提高系统升级改造的效率,增强程序的扩展性,并有效避免了编码不规范的问题。参见图1,本发明一实施例公开的一种程序生成方法流程图,该方法包括步骤:步骤s101、通过代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板;其中,交易需求描述信息可以包括:界面字段、接口字段、取值说明、检查条件、更新数据表、字段清单、交易码、交易类型、交易名称、代码类型、输入内容、输出内容、访问表等等。可以理解,在实际应用中,不同的业务人员输入的交易需求描述信息的格式可能会不相同,为便于代码生成引擎对获取的交易需求描述信息进行处理,本实施例中,在获取到用户输入的初始交易需求描述信息之后,首先会将该初始交易需求描述信息转换成预设标准格式,然后,代码生成引擎获取预设标准格式的交易需求描述信息。也就是说,本步骤中,通过代码生成引擎获取交易需求描述信息实际为:通过代码生成引擎获取预设标准格式的交易需求描述信息。例如,业务人员提出的交易需求描述信息为:开立活期存款账户,交易自动生成账号,用户指定账号的所属客户号和利率。该信息转换为标准格式为:交易技术参数可以包括:通信协议、报文格式、命名规则,类型选项、技术限制、名称转换表、默认值和错误码等。其中,报文格式包括:定长、json、xml和8583等格式。名称转换表可以包括一种或多种,如字段名转换表、数据表名转换表、函数名转换表、条件名转换表等,名称转换表的内容可以随业务需要不断扩充丰富。在实际应用中,可以把需求的文字描述转换为程序代码的变量名、数据表名、函数名、条件表达式等,从而使需求描述可以更加人性化、直观容易理解和表述,其中,转换出的程序代码需要符合计算机编程语言的要求,符合编码规范要求。在实际实施时,可以提供下拉列表给需求编写人员挑选文字描述。举例说明交易技术参数的表示形式,具体如下:关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关系型数据库可以包括:表名、描述、业务含义、数据类型描述、字段清单、字段类型和取值条件。举例说明,请参见表1和表2,表1为表清单,表2为字段清单。表1表名描述业务含义account_info账户信息表存放账户资料customer_info客户信息表存放客户资料表2表名字段名字段类型字段说明取值条件customer_infocustomernochar(20)客户号不为空customer_infocustomernamechar(50)客户名不为空account_infoaccountnochar(20)账号不为空account_infocustomernochar(20)所属客户号不为空account_infointerestratefloat利率大于0在实际应用中,可以设计一种模板语言,来支持标签定义、替换、合成等功能,所设计的模板语言即是程序模板。本实施例中,程序模板包括:程序头部、可变占位符、替换规则、自动备注等功能。其中,替换规则包括:全部替换、单个替换、累加替换、条件替换、前增加、后增加和删除。需要特别说明的是,程序模板分为:标准程序模板和用户自定制程序模板,标准程序模板是公共的标准化通用模板,适用于常用程序。当所需的交易程序比较特殊时,用户可以在标准程序模板的基础上依据实际需要进行修改,得到用户自定制程序模板。为方便理解,现以标准程序模板中交易模板为例,说明标准程序模板的一种表示形式,交易模板的表示形式如下:readjson("需求")readjson("技术参数")connnect("数据库")geninterface("输入")geninterface("输出")gentran("输入","检查","数据读写","输出")在上述示出的交易模板的基础上,例如,当用户需要增加替换处理的特殊代码时,那么得到用户自定制程序模板可以为:readjson("需求")readjson("技术参数")connnect("数据库")geninterface("输入")geninterface("输出")gentran("输入","检查","数据读写","输出")replace("todogetseq","getaccountno()")可以理解,不同类别代码有不同的处理流程和功能,因此,在实际应用中,可以根据需要定制多种类别的程序模板。例如:查询类模板,包括:输入搜索条件、读取数据库,格式化显示等功能。维护类模板,包括:增删改查功能。金融交易模板,包括:账户余额更新、插入交易、会计账务处理、记录log、推送通知等功能。步骤s102、由所述代码生成引擎基于所述程序模板,对所述交易需求描述信息、所述交易技术参数和所述关系型数据库按照代码生成流程进行处理,生成标准代码;其中,标准代码可以包括:java的交易层代码、接口代码、服务层代码等。例如,标准代码可以表示成如下形式:src\deposit\tran1001.java交易层代码src\deposit\tran1001input.java输入接口代码src\deposit\tran1001output.java输出接口代码src\deposit\accountservice.java服务层代码生成的标准代码支持目录创建、文件创建、文件生成和替换、输入提示、错误处理、log记录、测试代码自动生成、文档自动生成等功能。还可以支持调用eclipse自动生成getter/setter,tostring,equals等插件,mybatisgenerator等工具。并且,还可以对代码片段进行集成调用,并将这些代码整合成完整的交易程序。本步骤中,根据交易需求描述信息可以自动生成需求文档、栏位信息说明和检查条件说明。根据交易技术参数可以自动生成接口文档和技术参考文档。根据关系型数据库可以自动生成sql(structuredquerylanguage,结构化查询语言)代码和ddl(datadefinitionlanguage,数据库模式定义语言)代码,数据字典文档。根据程序模板可以自动生成代码和数据字段文档。步骤s103、将所述标准代码作为目标代码进行输出。基于上述论述可知,本发明公开的程序生成方法实际可以看成代码生成工具,该代码生成功能可以按照交易码、接口格式和数据表,自动生成标准的程序流程。例如,目标为参数维护交易程序,采用本发明公开的方案可以自动读取参数表的字段,生成标准增删改查代码,开发人员只需要增加各字段特殊的有效性检查条件即可。本发明公开的程序生成方法可应用于交易程序的生成过程,交易程序可以包括:维护类交易程序、查询了交易程序、金融类交易程序和状态类交易程序,其中,状态类交易如冻结、解冻、挂失、解挂、签发、重空流转等。综上可知,本发明公开的程序生成方法,由代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板,然后代码生成引擎基于程序生成模板,对交易需求描述信息、交易技术参数和关系型数据库进行处理,生成标准代码。本发明采用代码生成引擎、程序模板和参数化配置功能,实现了对交易需求描述信息、交易技术参数和关系型数据库的自动整合处理,从而支持代码自动生成。相对于传统方案采用人工编写代码片段而言,本发明简化了代码开发流程,提高了代码质量和可读性,减少了工作量。并且,采用统一的程序生成方法可以提高系统升级改造的效率,增强程序的扩展性,并有效避免了编码不规范的问题。需要说明的是,当用户所需的程序为程序模板中没有包含的特殊内容时(例如特殊号码生成),在上述实施例步骤s102生成标准代码之后,还需要在标准代码的基础上补充一些特殊条件,从而满足特殊场景的需要。参见图2,本发明另一实施例公开的一种程序生成方法流程图,该方法包括步骤:步骤s201、通过代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板;步骤s202、由所述代码生成引擎基于所述程序模板,对所述交易需求描述信息、所述交易技术参数和所述关系型数据库按照代码生成流程进行处理,生成标准代码;需要特别说明的是,步骤s201和图1所示实施例中的步骤s101对应,步骤s202和图1所示实施例中的步骤s102对应,因此,步骤s201和步骤s202的具体工作原理请参见图1所示实施例,此处不再赘述。步骤s203、获取预设补充条件;本步骤中所述的预设补充条件为:为满足实际场景需求,需要在标准代码中增加的一些条件,比如:增加多字段关联检查,或是,客户类型为vip客户,利率优惠10%等。步骤s204、将所述预设补充条件添加至所述标准代码,形成目标代码;步骤s205、输出所述目标代码。综上可知,本发明公开的程序生成方法,由代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板,然后代码生成引擎基于程序生成模板,对交易需求描述信息、交易技术参数和关系型数据库进行处理,生成标准代码。本发明采用代码生成引擎、程序模板和参数化配置功能,实现了对交易需求描述信息、交易技术参数和关系型数据库的自动整合处理,从而支持代码自动生成。相对于传统方案采用人工编写代码片段而言,本发明简化了代码开发流程,提高了代码质量和可读性,减少了工作量。并且,采用统一的程序生成方法可以提高系统升级改造的效率,增强程序的扩展性,并有效避免了编码不规范的问题。为进一步优化上述实施例,还可以包括步骤:对目标代码的正确性进行测试,生成自动化测试代码。为及时发现程序是否存在问题,从而确保程序的正确性,本发明在生成目标代码后,还可以在预设场景条件下,对目标代码的正确性进行测试。测试过程可以为:(1)准备测试数据,并将测试数据写入关系型数据库;(2)填写输入接口;(3)调用交易功能;(4)检查输出接口信息的正确性,对返回信息进行比较和判断;(5)检查关系型数据库信息的正确性,读取关系型数据库中的更新数据,检查读取的更新数据是否更新正确。与上述方法实施例相对应,本发明还公开了一种程序生成装置。参见图3,本发明一实施例公开的一种程序生成装置的结构示意图,该装置包括:获取单元301,用于通过代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板;其中,交易需求描述信息可以包括:界面字段、接口字段、取值说明、检查条件、更新数据表、字段清单、交易码、交易类型、交易名称、代码类型、输入内容、输出内容、访问表等等。可以理解,在实际应用中,不同的业务人员输入的交易需求描述信息的格式可能会不相同,为便于代码生成引擎对获取的交易需求描述信息进行处理,本实施例中,在获取到用户输入的初始交易需求描述信息之后,首先会将该初始交易需求描述信息转换成预设标准格式,然后,代码生成引擎获取预设标准格式的交易需求描述信息。也就是说,通过代码生成引擎获取交易需求描述信息实际为:通过代码生成引擎获取预设标准格式的交易需求描述信息。交易技术参数可以包括:通信协议、报文格式、命名规则,类型选项、技术限制、名称转换表、默认值和错误码等。其中,报文格式包括:定长、json、xml和8583等格式。名称转换表可以包括一种或多种,如字段名转换表、数据表名转换表、函数名转换表、条件名转换表等,名称转换表的内容可以随业务需要不断扩充丰富。在实际应用中,可以把需求的文字描述转换为程序代码的变量名、数据表名、函数名、条件表达式等,从而使需求描述可以更加人性化、直观容易理解和表述,其中,转换出的程序代码需要符合计算机编程语言的要求,符合编码规范要求。在实际实施时,可以提供下拉列表给需求编写人员挑选文字描述。关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关系型数据库可以包括:表名、描述、业务含义、数据类型描述、字段清单、字段类型和取值条件。需要说明的是,交易需求描述信息、交易技术参数、关系型数据库和程序模板的表示形式可参见方法示例对应部分,此处不再赘述。在实际应用中,可以设计一种模板语言,来支持标签定义、替换、合成等功能,所设计的模板语言即是程序模板。本实施例中,程序模板包括:程序头部、可变占位符、替换规则、自动备注等功能。其中,替换规则包括:全部替换、单个替换、累加替换、条件替换、前增加、后增加和删除。需要特别说明的是,程序模板分为:标准程序模板和用户自定制程序模板,标准程序模板是公共的标准化通用模板,适用于常用程序。当所需的交易程序比较特殊时,用户可以在标准程序模板的基础上依据实际需要进行修改,得到用户自定制程序模板。可以理解,不同类别代码有不同的处理流程和功能,因此,在实际应用中,可以根据需要定制多种类别的程序模板。例如:查询类模板,包括:输入搜索条件、读取数据库,格式化显示等功能。维护类模板,包括:增删改查功能。金融交易模板,包括:账户余额更新、插入交易、会计账务处理、记录log、推送通知等功能。代码生成单元302,用于由所述代码生成引擎基于所述程序模板,对所述交易需求描述信息、所述交易技术参数和所述关系型数据库按照代码生成流程进行处理,生成标准代码;其中,标准代码可以包括:java的交易层代码、接口代码、服务层代码等。生成的标准代码支持目录创建、文件创建、文件生成和替换、输入提示、错误处理、log记录、测试代码自动生成、文档自动生成等功能。还可以支持调用eclipse自动生成getter/setter,tostring,equals等插件,mybatisgenerator等工具。并且,还可以对代码片段进行集成调用,并将这些代码整合成完整的交易程序。根据交易需求描述信息可以自动生成需求文档、栏位信息说明和检查条件说明。根据交易技术参数可以自动生成接口文档和技术参考文档。根据关系型数据库可以自动生成sql(structuredquerylanguage,结构化查询语言)代码和ddl(datadefinitionlanguage,数据库模式定义语言)代码,数据字典文档。根据程序模板可以自动生成代码和数据字段文档。输出单元303,用于将所述标准代码作为目标代码进行输出。基于上述论述可知,本发明公开的程序生成装置实际可以看成代码生成工具,该代码生成功能可以按照交易码、接口格式和数据表,自动生成标准的程序流程。例如,目标为参数维护交易程序,采用本发明公开的方案可以自动读取参数表的字段,生成标准增删改查代码,开发人员只需要增加各字段特殊的有效性检查条件即可。本发明公开的程序生成装置可应用于交易程序的生成过程,交易程序可以包括:维护类交易程序、查询了交易程序、金融类交易程序和状态类交易程序,其中,状态类交易如冻结、解冻、挂失、解挂、签发、重空流转等。综上可知,本发明公开的程序生成装置,由代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板,然后代码生成引擎基于程序生成模板,对交易需求描述信息、交易技术参数和关系型数据库进行处理,生成标准代码。本发明采用代码生成引擎、程序模板和参数化配置功能,实现了对交易需求描述信息、交易技术参数和关系型数据库的自动整合处理,从而支持代码自动生成。相对于传统方案采用人工编写代码片段而言,本发明简化了代码开发流程,提高了代码质量和可读性,减少了工作量。并且,采用统一的程序生成装置可以提高系统升级改造的效率,增强程序的扩展性,并有效避免了编码不规范的问题。需要说明的是,当用户所需的程序为程序模板中没有包含的特殊内容时(例如特殊号码生成),在上述实施例生成标准代码之后,还需要在标准代码的基础上补充一些特殊条件,从而满足特殊场景的需要。参见图4,本发明另一实施例公开的程序生成装置的结构示意图,该装置包括:获取单元401,用于通过代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板;代码生成单元402,用于由所述代码生成引擎基于所述程序模板,对所述交易需求描述信息、所述交易技术参数和所述关系型数据库按照代码生成流程进行处理,生成标准代码;获取子单元403,用于获取预设补充条件;预设补充条件为:为满足实际场景需求,需要在标准代码中增加的一些条件,比如:增加多字段关联检查,或是,客户类型为vip客户,利率优惠10%等。添加子单元404,用于将所述预设补充条件添加至所述标准代码,形成目标代码;输出子单元405,用于输出所述目标代码。综上可知,本发明公开的程序生成装置,由代码生成引擎获取交易需求描述信息、交易技术参数、关系型数据库和程序模板,然后代码生成引擎基于程序生成模板,对交易需求描述信息、交易技术参数和关系型数据库进行处理,生成标准代码。本发明采用代码生成引擎、程序模板和参数化配置功能,实现了对交易需求描述信息、交易技术参数和关系型数据库的自动整合处理,从而支持代码自动生成。相对于传统方案采用人工编写代码片段而言,本发明简化了代码开发流程,提高了代码质量和可读性,减少了工作量。并且,采用统一的程序生成方法可以提高系统升级改造的效率,增强程序的扩展性,并有效避免了编码不规范的问题。需要说明的是,本发明还可以对目标代码的正确性进行测试。生成自动化测试代码。为及时发现程序是否存在问题,从而确保程序的正确性,本发明在生成目标代码后,还可以在预设场景条件下,对目标代码的正确性进行测试。测试过程可以为:(1)准备测试数据,并将测试数据写入关系型数据库;(2)填写输入接口;(3)调用交易功能;(4)检查输出接口信息的正确性,对返回信息进行比较和判断;(5)检查关系型数据库信息的正确性,读取关系型数据库中的更新数据,检查读取的更新数据是否更新正确。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1