一种定制化业务系统的快速开发方法转让专利

申请号 : CN202010612461.X

文献号 : CN111796816A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 叶丁辉陈波龚致肖建

申请人 : 四川长虹电器股份有限公司

摘要 :

本发明公开了一种定制化业务系统的快速开发方法,具体包括以下步骤:(1)构建通用业务模块自动完成组件;(2)自动完成业务模块代码;(3)通过组件将通用业务模块导出为通用业务模块;(4)开发新的定制化软件时,通过组件复用通用业务模块。其采用自动完成组件来自动完成通用业务模块代码,并输出为独立的通用业务模块的方法,解决软件定制化开发中的通用业务模块的人工的重复的开发和无法复用所导致的开发缓慢的问题,以达到快速开发目的。

权利要求 :

1.一种定制化业务系统的快速开发方法,其特征在于,包括以下步骤:(1)构建通用业务模块自动完成组件;其包括两个子组件,分别为代码自动生成组件和通用业务管理模块组件;

(2)通过自动完成组件自动完成业务模块代码;

(3)通过自动完成组件将通用业务模块导出为通用业务模块;

(4)开发新的定制化软件时,通过组件复用通用业务模块。

2.根据权利要求1所述的定制化业务系统的快速开发方法,其特征在于,所述步骤(1)中代码自动生产组件能够将代码按照MVC三层架构维度和业务模块维度进行分割,然后生成相互独立的代码模块。

3.根据权利要求1所述的定制化业务系统的快速开发方法,其特征在于,所述步骤(1)中通用业务模块管理组件包含一个通用业务模块的存储池,称为模块池,模块池用于存储通用业务模块;通用业务模块管理组件通过对模块池进行管理,自动完成模块的复用,当代码生成组件构建出通用业务模块后,该模块管理组件会将通用业务模块存储进模块池;当新的定制化软件开发需要使用通用业务模块时,该模块管理组件会将通用业务模块注册进软件。

4.根据权利要求1所述的定制化业务系统的快速开发方法,其特征在于,所述步骤(2)具体包括以下步骤:(a)在组件配置文件中配置当前定制化软件开发的项目的信息;

(b)运行自动完成组件的代码自动生产组件,代码自动生产组件将按照(a)中配置信息进行代码生成,代码生成后会按照MVC三层架构维度和模块维度独立存放到组件的临时目录;

(c)代码自动生产组件执行完成后,将发送消息到通用业务管理模块组件。

5.根据权利要求4所述的定制化业务系统的快速开发方法,其特征在于,所述步骤(a)中项目的信息包括:项目地址、数据库、项目开发者、模块名称。

6.根据权利要求1所述的定制化业务系统的快速开发方法,其特征在于,所述步骤(3)包括以下步骤:(a)通用业务管理模块组件收到代码生成组件发送的消息后,将代码从临时目录中取出,打包为通用业务模块jar包,然后将通用业务模块信息注册到模块池的注册表中,以及将jar包存入模块池。

(b)通用业务管理模块组件存储通用业务模块完成后,再按照步骤2的(a)中的配置信息将该模块配置到当前软件的开发项目中。

7.根据权利要求1所述的定制化业务系统的快速开发方法,其特征在于,所述步骤(4)包括以下步骤:(a)在组件配置文件中配置当前定制化软件开发的项目中信息;

(b)执行通用业务管理模块组件,组件将按照(a)中的配置信息将该模块配置到当前软件的开发项目中,完成模块复用。

8.根据权利要求7所述的定制化业务系统的快速开发方法,其特征在于,所述步骤(a)中项目中信息具体为项目地址、通用业务模块注册信息。

说明书 :

一种定制化业务系统的快速开发方法

技术领域

[0001] 本发明涉及软件开发技术领域,具体涉及一种定制化业务系统的快速开发方法。

背景技术

[0002] 随着公司业务不断发展,在业务信息的管理方面随之而来的是大量的信息化相关的配套软件的应用的需求,而大多配套软件都是根据业务进行定制化开发的。众所周知,软件定制化开发是比较耗时耗力的,当软件开发需求随着公司业务发展不断增长时,也不断增加了公司投入在软件定制化开发上的人力、物力,最终表现为增加了公司投入的时间和成本。
[0003] 通过对开发需求和产出的软件进行分析,发现公司的定制化软件都大同小异,其实只有小部分的功能模块需要深度定制化开发,而大部分的功能模块的业务相对简单,并且业务基本一致,如果每套软件的这部分功能模块都重复开发和人工编码,会造成时间和成本的浪费,从时间上说即无法做到快速开发。
[0004] 因此,需要一种方法来自动完成这些通用业务的功能模块和复用这些模块,以达到快速开发的目的,为定制软件开发节约开发时间。

发明内容

[0005] 为了解决上述技术问题,本发明提供了一种定制化业务系统的快速开发方法,该方法通过自动完成通用业务模块代码,并输出为独立的通用业务模块的方法,解决软件定制化开发中的通用业务模块的人工的重复的开发和无法复用所导致的开发缓慢的问题,以达到快速开发目的。
[0006] 为了达到上述技术效果,本发明采用了如下技术方案:
[0007] 一种定制化业务系统的快速开发方法,包括以下步骤:
[0008] (1)构建通用业务模块自动完成组件;其包括两个子组件,分别为代码自动生成组件和通用业务管理模块组件;
[0009] (2)通过自动完成组件自动完成业务模块代码;
[0010] (3)通过自动完成组件将通用业务模块导出为通用业务模块;
[0011] (4)开发新的定制化软件时,通过组件复用通用业务模块。
[0012] 进一步的技术方案为,所述步骤(1)中代码自动生产组件能够将代码按照MVC三层架构维度和业务模块维度进行分割,然后生成相互独立的代码模块。
[0013] 进一步的技术方案为,所述步骤(1)中通用业务模块管理组件包含一个通用业务模块的存储池,称为模块池,模块池用于存储通用业务模块;通用业务模块管理组件通过对模块池进行管理,自动完成模块的复用,当代码生成组件构建出通用业务模块后,该模块管理组件会将通用业务模块存储进模块池;当新的定制化软件开发需要使用通用业务模块时,该模块管理组件会将通用业务模块注册进软件。
[0014] 进一步的技术方案为,所述步骤(2)具体包括以下步骤:
[0015] (a)在组件配置文件中配置当前定制化软件开发的项目的信息;
[0016] (b)运行自动完成组件的代码自动生产组件,代码自动生产组件将按照(a)中配置信息进行代码生成,代码生成后会按照MVC三层架构维度和模块维度独立存放到组件的临时目录;
[0017] (c)代码自动生产组件执行完成后,将发送消息到通用业务管理模块组件。
[0018] 进一步的技术方案为,所述步骤(a)中项目的信息包括:项目地址、数据库、项目开发者、模块名称。
[0019] 进一步的技术方案为,所述步骤(3)包括以下步骤:
[0020] (a)通用业务管理模块组件收到代码生成组件发送的消息后,将代码从临时目录中取出,打包为通用业务模块jar包,然后将通用业务模块信息注册到模块池的注册表中,以及将jar包存入模块池。
[0021] (b)通用业务管理模块组件存储通用业务模块完成后,再按照步骤2的(a)中的配置信息将该模块配置到当前软件的开发项目中。
[0022] 进一步的技术方案为,所述步骤(4)包括以下步骤:
[0023] (a)在组件配置文件中配置当前定制化软件开发的项目中信息;
[0024] (b)执行通用业务管理模块组件,组件将按照(a)中的配置信息将该模块配置到当前软件的开发项目中,完成模块复用。
[0025] 进一步的技术方案为,所述步骤(a)中项目中信息具体为项目地址、通用业务模块注册信息。
[0026] 与现有技术相比,本发明具有如下有益效果:本发明的技术方案能够很好的解决软件定制化开发中的通用业务模块的人工的重复的开发和无法复用所导致的开发缓慢的问题,以达到快速开发目的。该方法将业务模块按照更多的维度进行细化分割,能增强模块的通用性和复用性,并且该方法操作符合开发习惯,不引入其他需要额外学习的内容,可以快速上手。

附图说明

[0027] 图1为组件自动完成通用业务模块代码构建和管理通用业务模块的示意图。

具体实施方式

[0028] 下面结合具体实施例对本发明进行进一步的解释和说明。
[0029] 实施例1
[0030] 一种定制化业务系统的快速开发的方法,具体包括以下步骤:
[0031] 1、构建组件的代码生成组件,该代码生成组件可以自行实现,也可以基于现有的技术工具完成,为了快速实现该方案,具体实施中利用已有的工具MybatisPlusGenerator(下称MPG)来实现代码生成组件。使用MPG前需要对其进行改造,并封装为代码生成组件,具体步骤如下:
[0032] (1)创建maven环境下的java项目,即组件的根项目,并在pom.xml中加入MPG的引用,具体为:groupId=com.baomidou,artifactId=mybatis-plus-generator。
[0033] (2)由于MPG原有的代码生成逻辑为将代码先按照业务模块维度进行分割,再生成相互独立的代码模块,现需要按照上述技术方案描述的代码生成逻辑,改进为按照MVC三层架构维度和业务模块维度进行分割,再生成相互独立的代码模块的方式。按照(1)引入MPG后,就可以对MPG进行改进,原MPG生成文件后会按照模块进行分割存放,现需要将文件按照entity、serive、seriveImpl、dao等4个维度分割,再按照模块维度分割存放,具体改造步骤如下:
[0034] a)新增4个维度的文件输出模板,即entity.java.ftl、mapper.xml.ftl、mapper.java.ftl、service.java.ftl、serviceImpl.java.ftl,主要更改package和import为改造后的路径,添加对应的分割名称。比如原MPG的entit.java.ftl的package为package${package.Entity}.${package.ModuleName},现更改为package${package.Entity}.entity.${package.ModuleName}。
[0035] b)将4个维度的文件输出模板添加到MPG中,具体过程为:创建FileOutConfig列表,再调用FileOutConfig列表的add方法将(1)中的4个维度对应的文件输出模板存入列表,即调用FileOutConfig.add(flt),最后调用MPG的setCfg方法将FileOutConfig设置到MPG中。
[0036] c)关闭原MPG的文件输出模板配置,具体为调用TemplateConfig的setMapper、setService、setServiceImpl、setEntity、setXml等方法,最后调用MPG的setTemplate方法。
[0037] (3)MPG改造完成,添加MPG的入口方法,即调用MPG的execute方法,最后通过命令mvn package将MGP打包,封装为代码生成组件。
[0038] 2、构建组件的模块管理组件
[0039] (1)模块管理组件由执行程序、配置文件、模块池注册表、模块池构成。
[0040] (2)执行程序为组件的主程序,即一系列可执行代码,用于控制模块管理组件的执行和处理通用业务模块的注册、管理和配置到定制化软件的开发项目中。主要方法为入口方法execute方法。
[0041] (3)配置文件为组件配置相关设置的存储文件,比如:/usr/local/mpgm/config.cfg。
[0042] (4)模块池的注册表为组件中配置的本地文件,比如:/usr/local/mpgm/pool/.reg。
[0043] (5)模块池为组件中配置的本地目录,比如:/usr/local/mpgm/pool。
[0044] 3、通过组件自动完成业务模块代码。
[0045] (1)在组件的配置文件/usr/local/mpgm/config.cfg中配置项目地址、数据库、项目开发者、模块等信息,有如下结构:
[0046] projDir=/usr/app
[0047] dbUrl=ip:port/db
[0048] dbUsernam=root
[0049] dbPassword=root
[0050] author=foo
[0051] moduleA=table_a,table_b
[0052] moduleB=table_c,table_d,table_e
[0053] assign=serviceModuleA,serviceImplModuleB
[0054] 其中:
[0055] *projDir为项目地址
[0056] *dbUrl为数据库地址
[0057] *dbUsernam为数据库用户名
[0058] *dbPassword为数据库密码
[0059] *author为项目开发者
[0060] *moduleX为模块对应的表名,X为模块名,值为多个表名
[0061] *assign为需要配置到当前定制化软件项目中的模块名
[0062] (2)执行模块管理组件的主程序的execute方法,主程序会调用代码生成组件的execute方法,然后继续调用MGP的execute方法,进入自动完成业务模块代码阶段。
[0063] (3)代码生成组件调用check方法,查询当前项目配置的数据库地址,即(1)中的dbUrl参数,再通过调用load方法获取数据库表结构。
[0064] (4)获取表结构后,代码生成组件调用MPG的generate方法将数据库表结构按照1的(2)中改造的ftl模板进行业务代码的生成,生成完毕后会MPG调用代码生成组件的toFile方法将代码文件保存到临时文件中,该文件名格式为:{uuid}_{{tableName}}_entity.mpg,{uuid}_{tableName}_mapper.mpg,{uuid}_{tableName}_mapper.mpg,{uuid}_{tableName}_service.mpg,{uuid}_{tableName}_serviceImpl.mpg,其中{uuid}为随机生成的不重复字符串,如b37844fb-ee13-4373-b0e8-d334a8f5e09e,{tableName}为表名,如table_a。
[0065] (5)临时文件创建完成后,代码生成组件调用sendMsg方法通知模块管理组件,并发送文件信息数据,并将模块管理组件的状态参数status由pause置为running。其中发送的通知包含的数据格式有如下结构:
[0066]
[0067] 4、通过组件将通用业务模块导出为通用业务模块。
[0068] (1)上述3的(5)中将模块管理组件状态status改为running后,模块管理组件将执行export方法进入到处通用业务模块阶段。
[0069] (2)模块管理组件的export方法调用find方法从临时文件中取出上述3中生成的.mpg文件,在通过readFile方法将所有文件读入内存,并对内存中的文件数据进行索引,格式如:
[0070] {moduleA_{uuid}_{tableName}_entit:{data},
[0071] moduleA_{uuid}_{tableName}_mapper:{data}}
[0072] 其中:{data}为存储在内存中的数据。
[0073] (3)文件读取完毕后,模块管理组件会执行genJavaFile方法,方法将按照上述3的(1)中的组件的配置文件配置的模块信息,将文件数据按照不同的文件目录输出到临时文件夹,目录结构有如下结构:
[0074]
[0075]
[0076] (4)文件生成后,模块管理组件会调用genJar方法,方法执行shell命令jar-c将上述(3)中的文件打包成jar包,打包完成后将jar包保存到临时目录/tmp/jar。
[0077] (5)jar包保存完成后,模块管理组件会调用install方法将jar包安装到maven环境中,方法将执行shell命令mvn install:install-file。
[0078] (6)模块管理组件通过上述2的(1)中的配置信息获取项目目录以及需要配置到项目中的模块,再找到项目目录下的pom.xml文件,执行assign方法将配置文件中设置的需要配置到项目中的模块配置到pom.xml文件中,完成该模块配置到当前软件的开发项目中,具体为:
[0079] groupId=project,artifactId=service-module-a;
[0080] groupId=project,artifactId=service-impl-module-b;
[0081] 5、开发新的定制化软件时,通过组件复用通用业务模块。
[0082] (1)新开发项目时,不需要再生成通用业务模块,仅需按照上述3的(1)中在组件的配置文件/usr/local/mpgm/config.cfg中配置项目地址、模块等信息,有如下结构:
[0083] projDir=/usr/app
[0084] assign=serviceModuleA,serviceImplModuleA,daoModuleA
[0085] (2)执行上述3的(2)中的组件的模块管理组件的execute方法,模块管理组件将按照上述4的(6)中所述将通用业务模块配置到当前定制化项目的当前项目中,配置完成后具体为:
[0086] groupId=project,artifactId=service-module-a;
[0087] groupId=project,artifactId=service-impl-module-a;
[0088] groupId=project,artifactId=dao-module-a;
[0089] 尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。