首页> 中国专利> 一种基于SSH架构的代码生成器及方法

一种基于SSH架构的代码生成器及方法

摘要

本发明涉及一种基于SSH架构的代码生成器,包括用于将流程图导入代码生成器的流程图导入模块(11);用于读取流程图定义的业务规则的流程图读取模块(12);用于存储预先确定的引擎规则模板,并由代码生成模块进行调用的规则模板存储模块(13);用于按流程图角色的定义结合相应引擎规则模板生成相关代码的代码生成模块(14)。本发明还涉及一种基于SSH架构的代码生成方法。本发明无论在操作性还是在代码质量及效率上都得到了很大程度的提高。

著录项

  • 公开/公告号CN102591654A

    专利类型发明专利

  • 公开/公告日2012-07-18

    原文格式PDF

  • 申请/专利权人 方正国际软件有限公司;

    申请/专利号CN201110446617.2

  • 发明设计人 任海瑞;

    申请日2011-12-28

  • 分类号G06F9/44(20060101);

  • 代理机构北京天悦专利代理事务所(普通合伙);

  • 代理人田明;任晓航

  • 地址 215123 江苏省苏州市工业园区星湖街328号创意产业园方正国际大厦

  • 入库时间 2023-12-18 06:12:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-09-23

    授权

    授权

  • 2012-09-19

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20111228

    实质审查的生效

  • 2012-07-18

    公开

    公开

说明书

技术领域

本发明属于代码自动生成技术领域,具体涉及一种基于SSH架构的代码 生成器及方法。

背景技术

在实际项目开发中,经常会遇到因为工期与成本的因素造成项目预算的 超支。这其中有一部分原因是在开发业务代码的同时可能还会存在一些辅助 的功能模块的开发,并且在业务模块代码的开发工作量也占用了较大的比重, 而目前市场上的一些代码生成工具往往存在众多缺点,如不适用各个公司的 框架、业务代码无法生成等等,所以在代码生成插件的功能拓展上也是势在 必行的。

从目前的每个公司项目情况来看,系统开发的辅助功能在项目的开发中 也占用了开发人员很大一部分时间。而在业务代码模块的开发上占用了更大 的比重,并且由于项目时间进度上的压力,项目组开发人员更多注重程序的 编码速度,却忽略其实用性与维护性,加上程序多人共同参与开发,组内成 员都有各自的编码风格,容易造成因差异性带来的阅读困难,随着系统规模 越来越大,这将造成系统完成后在测试及维护上沉重的负担。对系统的可用 性、可靠性、安全性、及其质量方面造成严重影响。

根据市场调查,在实际的项目中,专注于业务逻辑处理的时间占用了工 时的40%,而有50%的时间用来处理一些针对业务逻辑的辅助功能如查询、新 增等功能的开发。而剩下的10%作为处理BUG,但在这10%的BUG处理中近 7成是在辅助功能上的bug处理(如查询条件查不出数据、基本查询条件验 证脚本出错等)。以上数据也在客观上表示在系统开发的过程中,人力资源 成本的浪费往往是浪费在因代码不规范的因素上面。

那么,将开发人员的精力抽离到在规范的业务及代码模板上进行开发与 处理是目前势在必行的任务,因而以工厂模式的软件开发模式应融入到系统 平台。将业务模块与基础查询等功能模块抽象为模板式的开发更能提高开发 人员的工作效率。采用工厂模式的生成,利用有针对性的代码生成插件处理 这些功能,生成代码开发的模板,降低代码的出错率,减少开发人员在实际 开发中复制、粘贴带来的错误,这在系统的复用性也得到了大幅度的提高。

目前市场上流行的SSH(Secure Shell)框架代码生成工具大多可生成基 本的增删改查等内容,而无法针对业务代码的生成。而且在代码生成的操作 性上也比较复杂。在针对于业务逻辑变更后的代码修改,往往需要手工更改 业务代码。在现有的解决方案中,有部分公司采用规则引擎进行业务变更的 控制。但是,现有市场上的规则引擎往往配置与学习起来比较复杂。

现有的代码生成插件的缺点是无法针对业务代码的生成,只能处理简单 的辅助功能的代码进行生成,并且在操作简便性及效率上存在严重的不足。

发明内容

针对现有技术中存在的缺陷,本发明所要解决的技术问题是提供一种效 率高的基于SSH架构的代码生成器及方法。

为解决上述技术问题,本发明采用的技术方案如下:

一种基于SSH架构的代码生成器,其特征在于:包括用于将流程图导入 代码生成器的流程图导入模块;

用于读取流程图定义的业务规则的流程图读取模块;

用于存储预先确定的引擎规则模板,并由代码生成模块进行调用的规则 模板存储模块;

用于按流程图角色的定义结合相应引擎规则模板生成相关代码的代码生 成模块。

如上所述的代码生成器,优选的,还包括用于验证流程图是否正确的验 证模块。

如上所述的代码生成器,优选的,还包括用于对流程图的节点角色的处 理权限和处理内容进行配置的节点角色配置模块。

一种基于SSH架构的代码生成方法,包括以下步骤:

(1)流程图导入模块将预先定义的流程图导入到代码生成器;

(2)流程图读取模块读取流程图定义的业务规则;

(3)规则模板存储模块存储预先确定的引擎规则模板;

(4)代码生成模块按照流程图角色的定义,并结合相应引擎规则模板生 成相关代码。

如上所述的代码生成方法,优选的,还包括对流程图的节点角色的处理 权限和处理内容进行配置的步骤。

如上所述的代码生成方法,优选的,在将流程图导入代码生成器后还包 括验证该流程图是否正确的步骤。

如上所述的代码生成方法,优选的,所述验证流程图的方法包括以下步 骤:

①将流程图对应的xml模板导入代码生成器;

②验证模块对应读取该流程并验证该流程定义文件,通过xml读取,获 取所有流程定义节点,读入缓存;

③验证针对流程文件获取开始节点和结束节点,确定该流程为完整流程, 根据任务节点获取该流程定义4个节点参与流程的处理,根据decision节点 确定流程存在分支条件;

④根据以上初步确定该流程参与者与对应节点数量,根据不同节点验证 节点中对应的属性及属性值,获取节点的完整定义,并同时找到本节点下的 流程令牌Token的指向transition,根据to属性找到Token应传递的节点。

如上所述的代码生成方法,优选的,步骤(4)的具体实现方法如下:

①根据预先定义的引擎规则生成页面代码;

②通过读取缓存将验证通过的流程规则读取,首先处理start节点下的流 程令牌Token的指向transition的to属性,根据to属性值找到对应的name 属性相同的任务节点,生成对应的后台处理方法,写入对应的方法内;

③通过步骤①和②生成流程的启动方法的后台程序与页面文件,该方法 将继续读取缓存中的流程规则,找到对应Token指向,根据db对应字段修 改、读取模板,生成对应第2个任务处理的Model、Control与View层文件;

④循环获取任务节点及对应指向下个节点并生成文件,直至遇到结束节 点,流程读取与代码生成处理完毕;如遇到任务存在流程分支时,读取第一 个分支并处理完毕后回到该任务继续处理下个流程分支。

本发明的优点在于:无论在操作性还是在代码质量及效率上都得到了很 大程度的提高,并且在针对业务逻辑代码生成方面实现了创新,开发人员只 需要在一个界面进行相关的配置,画相关业务流程图,数据库配置,读取内 容,生成代码格式进行相应的提示操作进行配置,直接生成符合相关业务逻 辑的代码。在生成效率上采用模板引擎模式,并且所有代码的生成都基于模 板,开发人员可根据每个公司的不同规范进行模板的配置,配置完模板后便 可实现根据模板进行生成。

附图说明

图1是具体实施方式中代码生成器的结构框图;

图2是具体实施方式中生成代码的方法流程图;

图3是具体实施方式中所举实例的流程图。

具体实施方式

本发明的构思来源于在实际项目开发中,往往将精力集中于下列2个方 面:一是业务流程模块的编码,一个是编码后的BUG处理与变更后的修改。 在实际项目中,需求的变更是不可规避的,所以在需求变更后需要对代码进 行相应的修改,而重新编码后产生的BUG及测试又要占用一部分时间,所 以本发明针对以上实际中遇到的问题进行了代码生成及规范的处理。在简单 的代码生成方面采用基于模板引擎模式,用户可根据不同的公司架构进行相 应的模板引擎设计。针对于模板引擎并行读取元数据,生成单表与多表的增 删改查。而本发明所述代码生成器不同于其他同类产品的另一特色是对业务 流程代码生成的处理,在业务流程代码生成方面,用户首先需根据业务流程 画流程图,采用jbpm4.4的工作流引擎,用户只需额外学习jbpm流程图的定 义方法。根据定义好的流程图,导入到代码生成器,代码生成器按流程图读 取业务规则,完全按流程图角色的定义生成相关代码,每个角色的代码根据 流程的定义可生成对应的回退与处理操作。下面结合附图对本发明的具体实 施方式进行详细描述。

如图1所示,本实施方式中基于SSH架构的代码生成器包括流程图导入 模块11、验证模块12、节点角色配置模块13、流程图读取模块14、规则模 板存储模块15和代码生成模块16。

流程图导入模块11用于将流程图导入代码生成器。验证模块12用于验 证流程图是否正确。节点角色配置模块13用于对流程图的节点角色的处理权 限和处理内容进行配置。流程图读取模块14用于读取流程图定义的业务规 则。规则模板存储模块15用于存储预先确定的引擎规则模板,并由代码生成 模块进行调用。代码生成模块16用于按流程图角色的定义结合相应引擎规则 模板生成相关代码。

如图2所示,采用上述代码生成器自动生成代码的方法包括以下步骤:

(1)流程图导入模块11将预先定义的流程图导入到代码生成器。

流程图定义可以采用第三方工作流产品定义,通过JBPM4.4定义流程, 产生对应的xml流程定义文件。

例如,如图3所示的流程对应的流程配置文件如下:

在流程图定义过程中,节点角色配置模块13可以对流程图的节点角色的 处理权限和处理内容进行配置。

优选的,导入流程图后,验证模块对该流程图进行验证,具体验证方法 包括以下步骤:

①将本流程对应如上的xml模板导入生成器。

②生成器对应读取该流程并验证此流程定义文件,通过xml读取,获取 所有流程定义节点,读入缓存。

③验证针对流程文件获取start与end节点。确定流程为完整流程,根据 task节点获取该流程定义4个节点参与流程的处理,根据decision节点确定 流程存在分支条件。

④根据以上初步确定该流程参与者与对应节点数量,根据不同节点验证 节点中对应的属性及属性值,获取节点的完整定义,并同时找到本节点下的 流程令牌Token的指向transition,根据to属性找到Token应传递的节点。

⑤通过以上方法,验证流程定义的完整性与正确性,验证通过后该方法 将自动转到下个根据规则引擎模块。

通过以上方法,实现了完整流程定义的读取与验证,验证通过后该流程 定义规则将缓存至该生成器中。

(2)流程图读取模块读取流程图定义的业务规则。

(3)规则模板存储模块存储预先确定的引擎规则模板。

(4)代码生成模块按照流程图角色的定义,并结合相应引擎规则模板生 成相关代码。

代码生成器读取预先定义好的引擎规则,根据流程图角色的定义并结合 相应的引擎规则模板生成相关代码,具体实现过程如下:

①该引擎规则为预先定义,主要用于生成页面代码,采用velocity或 FreeMarker定义页面生成引擎,通过读取数据库该流程对应业务表及字段生 成struts的form及对应hibernate的实体类与对应配置文件,采用io形式动 态修改模板引擎所需模板,根据用户选择的字段,由freeMarker处理对应所 选字段生成对应页面。

②通过读取缓存将验证通过的流程规则读取,首先处理start节点下的流 程令牌Token的指向transition的to属性,根据to属性值找到对应的name 属性相同的task节点。生成对应的后台处理方法,根据jbpm的内置接口写 入对应的方法内。(流程启动,节点跳转为jbpm的内置方法)

③通过步骤①和②生成流程的启动方法的后台程序与页面文件,该方法 将继续读取缓存中的流程规则,同步骤②方法,找到对应Token的指向,根 据db对应字段修改、读取模板,生成对应第2个task处理的Model、Control 与View层文件。

④循环获取task节点及对应指向下个节点并生成文件,直至遇到end节 点,流程读取与代码生成处理完毕。如遇到task存在分支transition时(即流 程分支),读取第一个分支并处理完毕后回到该task继续下个分支。

本实施方式的思路主要来源于工作中对xml文件的处理,而通常工作流 引擎在流程定义后都会存在一个流程定义文件。针对此流程定义的文件进行 分析处理,可以方便的针对该流程定义文件进行解析并生成对应业务流程处 理代码。

例如,银行业务处理,在开银行卡时,实际在计算机中银行人员录入的 信息都是以字节流的形式进行传输,该数据发往银行主机后主机将数据按规 则进行解析处理并将不同的内容存入不同的数据库表中。而该代码生成器原 理类似。该工具面向的为开发人员,将图形界面面向开发人员,开发人员将 数据按要求填写录入,由该工具方法处理解析数据,并将数据生成、保存成 实际需要的数据。

该工具方法的核心为对流程数据解析处理的过程(相当于银行数据发送 到服务器主机解析处理)。首先读取流程定义的头与尾,如果验证通过则进 行下一步解析,读取任务节点(task)并找到该任务要流向下个节点是什么 然后生成该节点对应的代码,根据下个节点在找到下个节点如遇到任务节点 在生成代码。

本实施方式所述代码生成器可以采用目前较流行的基于常见的开发工具 eclipse的插件形式进行安装部署,用户只需要把插件复制到对应开发工具的 目录,重启开发工具即可,在对应的项目中选中进行代码的辅助生成,方便 用户的操作。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本 发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要 求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号