CN116185403A - 一种代码生成方法、装置及存储介质 - Google Patents

一种代码生成方法、装置及存储介质 Download PDF

Info

Publication number
CN116185403A
CN116185403A CN202211743239.9A CN202211743239A CN116185403A CN 116185403 A CN116185403 A CN 116185403A CN 202211743239 A CN202211743239 A CN 202211743239A CN 116185403 A CN116185403 A CN 116185403A
Authority
CN
China
Prior art keywords
code
page
control
image
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211743239.9A
Other languages
English (en)
Inventor
沈剑峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China United Network Communications Group Co Ltd
China Unicom Zhejiang Industrial Internet Co Ltd
Original Assignee
China United Network Communications Group Co Ltd
China Unicom Zhejiang Industrial Internet Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China United Network Communications Group Co Ltd, China Unicom Zhejiang Industrial Internet Co Ltd filed Critical China United Network Communications Group Co Ltd
Priority to CN202211743239.9A priority Critical patent/CN116185403A/zh
Publication of CN116185403A publication Critical patent/CN116185403A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Artificial Intelligence (AREA)
  • Multimedia (AREA)
  • Record Information Processing For Printing (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本申请提供一种代码生成方法、装置及存储介质,涉及计算机技术领域,用于解决通用的代码生成方法效率较低的技术问题。该代码生成方法包括:获取低代码开发平台的前端设计图像;基于图像识别技术对所述前端设计图像进行识别,以得到图像识别结果;所述图像识别结果包括:页面布局信息、页面控件信息和与所述页面控件信息对应的元数据信息;获取与所述页面控件信息对应的代码组件,并根据所述页面布局信息和所述代码组件,生成所述低代码开发平台的前端页面;根据页面控件信息和所述元数据信息,生成与所述前端页面对应的业务代码。

Description

一种代码生成方法、装置及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种代码生成方法、装置及存储介质。
背景技术
随着业务开发复杂度的不断提升,对业务代码的生成需求也越来越高。低代码是软件系统的一种快速开发工具,通过低代码平台可以很大程度上可以提高代码开发团队的代码开发效率,降低开发成本,开发规范与开发标准实现最大程度的统一。
通用的低代码平台开发过程中,首先需要获取低代码平台的设计原型图和功能需求,接着根据设计原型图和功能需求编写系统详细设计文档,然后再根据详细设计文档逐行编写软件代码,费时费力,效率较低。
发明内容
本申请提供一种代码生成方法、装置及存储介质,用于解决通用的代码生成方法效率较低的技术问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种代码生成方法,包括:
获取低代码开发平台的前端设计图像;
基于图像识别技术对前端设计图像进行识别,以得到图像识别结果;图像识别结果包括:页面布局信息、页面控件信息和与页面控件信息对应的元数据信息;
获取与页面控件信息对应的代码组件,并根据页面布局信息和代码组件,生成低代码开发平台的前端页面;
根据页面控件信息和元数据信息,生成与前端页面对应的业务代码。
可选的,页面布局信息包括:前端设计图像中的单元格数量、每个单元格的大小和位置;页面控件信息包括:前端设计图像中控件的控件内容;
根据页面布局信息和代码组件,生成低代码开发平台的前端页面,包括:
根据每个单元格的大小和位置,部署每个单元格对应的代码组件,以得到前端页面的页面布局结构;
将每个单元格对应的控件内容,添加到每个单元格对应的位置,以得到前端页面的页面内容;
基于页面布局结构和页面内容,生成前端页面。
可选的,页面控件信息还包括:前端设计图像中控件的控件类型;
根据页面控件信息和元数据信息,生成与前端页面对应的业务代码,包括:
确定与控件类型对应的数据库脚本;
根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成业务代码。
可选的,根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成业务代码,包括:
调用预先构建好的代码模板引擎,对每个控件对应的数据库脚本和每个控件对应的元数据信息进行代码生成处理,以得到业务代码;代码模板引擎的代码层架构为基于远程方法调用方式设计的代码层架构。
第二方面,提供一种代码生成装置,包括:获取单元和处理单元;
获取单元,用于获取低代码开发平台的前端设计图像;
处理单元,用于基于图像识别技术对前端设计图像进行识别,以得到图像识别结果;图像识别结果包括:页面布局信息、页面控件信息和与页面控件信息对应的元数据信息;
获取单元,还用于获取与页面控件信息对应的代码组件;
处理单元,还用于根据页面布局信息和代码组件,生成低代码开发平台的前端页面;
处理单元,还用于根据页面控件信息和元数据信息,生成与前端页面对应的业务代码。
可选的,页面布局信息包括:前端设计图像中的单元格数量、每个单元格的大小和位置;页面控件信息包括:前端设计图像中控件的控件内容;
处理单元,具体用于:
根据每个单元格的大小和位置,部署每个单元格对应的代码组件,以得到前端页面的页面布局结构;
将每个单元格对应的控件内容,添加到每个单元格对应的位置,以得到前端页面的页面内容;
基于页面布局结构和页面内容,生成前端页面。
可选的,页面控件信息还包括:前端设计图像中控件的控件类型;
处理单元,具体用于:
确定与控件类型对应的数据库脚本;
根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成业务代码。
可选的,处理单元,具体用于:
调用预先构建好的代码模板引擎,对每个控件对应的数据库脚本和每个控件对应的元数据信息进行代码生成处理,以得到业务代码;代码模板引擎的代码层架构为基于远程装置调用方式设计的代码层架构。
第三方面,提供一种代码生成装置,包括存储器和处理器;存储器用于存储计算机执行指令,处理器与存储器通过总线连接;当代码生成装置运行时,处理器执行存储器存储的计算机执行指令,以使代码生成装置执行第一方面所述的代码生成方法。
该代码生成装置可以是网络设备,也可以是网络设备中的一部分装置,例如网络设备中的芯片系统。该芯片系统用于支持网络设备实现第一方面及其任意一种可能的实现方式中所涉及的功能,例如,获取、确定、发送上述代码生成方法中所涉及的数据和/或信息。该芯片系统包括芯片,也可以包括其他分立器件或电路结构。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质包括计算机执行指令,当计算机执行指令在计算机上运行时,使得该计算机执行第一方面所述的代码生成方法。
第五方面,还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在代码生成装置上运行时,使得代码生成装置执行如上述第一方面所述的代码生成方法。
需要说明的是,上述计算机指令可以全部或者部分存储在计算机可读存储介质上。其中,计算机可读存储介质可以与代码生成装置的处理器封装在一起的,也可以与代码生成装置的处理器单独封装,本申请实施例对此不作限定。
本申请中第二方面、第三方面、第四方面以及第五方面的描述,可以参考第一方面的详细描述。
在本申请实施例中,上述代码生成装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。例如,接收单元还可以称为接收模块、接收器等。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
本申请提供的技术方案至少带来以下有益效果:
基于上述任一方面,本申请提供一种代码生成方法,可以获取低代码开发平台的前端设计图像,并基于图像识别技术对前端设计图像进行识别,以得到图像识别结果。其中,图像识别结果包括:页面布局信息、页面控件信息和与页面控件信息对应的元数据信息。接着,可以获取与页面控件信息对应的代码组件,并根据页面布局信息和代码组件,生成低代码开发平台的前端页面,以及根据页面控件信息和元数据信息,生成与前端页面对应的业务代码。这样,本申请提供的代码生成方法仅需获取前端设计图像,便可以自动生成对应的前端页面和业务代码,无需编写系统详细设计文档以及软件代码,提高了代码生成的效率。
本申请中的第一方面、第二方面、第三方面、第四方面以及第五方面的有益效果,均可以参考上述有益效果的分析,此处不再赘述。
附图说明
图1为本申请实施例提供的一种通用的代码生成方法的原理图;
图2为本申请实施例提供的一种代码生成方法的系统结构图一;
图3为本申请实施例提供的一种代码生成方法的系统结构图二;
图4为本申请实施例提供的一种代码生成装置的硬件结构示意图一;
图5为本申请实施例提供的一种代码生成装置的硬件结构示意图二;
图6为本申请实施例提供的一种代码生成方法的流程示意图;
图7为本申请实施例提供的一种低代码开发平台的前端设计图像;
图8为本申请实施例提供的一种代码模板引擎的结构示意图;
图9为本申请实施例提供的一种远程方法调用方式的流程示意图;
图10为本申请实施例提供的一种代码生成装置的结构示意图一;
图11为本申请实施例提供的一种代码生成装置的结构示意图二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了便于清楚描述本申请实施例的技术方案,在本申请实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不是在对数量和执行次序进行限定。
目前,通用的软件程序基本都是基于数据库结构化查询语言(Structured QueryLanguage,SQL)、开发语言(例如Java语音)、web开发框架(例如Vue、React等),结合常用的整体代码框架(Jeecg)进行系统开发。但是相应的技术门槛高、周期长、代码质量差、人力成本高等问题,还有软件工程师和业务人员的信息不对称,造成软件不好用、不实用等问题。
其次,在软件程序开发过程中,软件工程师的技术水平和经验的差异性也会导致代码风格不统一、代码质量各不规范,甚至会出现代码质量问题。另外,最重要的是没办法实现代码复用,通过传统的编码开发软件,业务逻辑都是硬编码的方式存在代码中,传统的编码开发软件(例如Object、Class、Function等)之间存在紧耦合关系,如果实现代码复用,对开发人员的要求高。
为了解决上述问题,通用技术可以通过低代码平台进行软件开发。低代码是软件系统的一种快速开发工具,通过低代码平台可以很大程度上可以提高代码开发团队的代码开发效率,降低开发成本,开发规范与开发标准实现最大程度的统一。
再次,软件程序的业务功能实现需要通过编写代码来实现,业务上有任何变动都需要改动代码,且软件系统业务复杂度越高,代码量就越大,软件系统的维护成本也就越高,后进的程序员熟悉代码就需要较高的学习成本,如果对整个系统了解不够充分,容易引起系统缺陷,另外,业务需求的实现依赖技术成熟度,当系统进行架构调整时,需要有大量的代码改动,更新维护难度和成本极大。
通用的低代码平台通常是根据以下两种方式生成。第一种方式是在可视化的界面上以拖拉拽的方式编辑和配置页面、表单和流程,最终形成脚本配置文件(例如Json格式),再部署到某个容器中去执行,类似于编辑器与解释器的模式。第二种方式是通过代码生成器执行代码,包含增删改查/排序/导出/权限控制等操作,编译即可使用,再发布到服务器去部署。
上述两种代码生成方式的主要结构和原理如图1所示。
其中,数据表设计器,主要用于获取数据,并设计和定义数据库的表结构,以及将设计创建的数据表与组件进行关联绑定,实现组件可以修改数据库的能力。
功能设计器包括应用功能设计器(流程)和布局显示编辑模块。布局显示编辑模块可以根据产品需求,选择合适的数据表组件放置在可视化编辑区域内,并对组件进行组合、连接、配置,生成配置文件或者脚本,最后再执行这些配置文件或者脚本搭建出不同的应用软件功能。应用功能设计器可以基于不同数据库、数据表下的不同的数据操作组件、数据操作组件的不同的配置、组件之间的不同的连接方案形成完整的应用软件产品。
但是,通用的低代码平台开发过程中,首先需要获取低代码平台的设计原型图和功能需求,接着根据设计原型图和功能需求编写系统详细设计文档,然后再根据详细设计文档逐行编写软件代码,代码生成过程费时费力,效率较低。
针对上述问题,本申请提供一种代码生成方法,可以获取低代码开发平台的前端设计图像,并基于图像识别技术对前端设计图像进行识别,以得到图像识别结果。其中,图像识别结果包括:页面布局信息、页面控件信息和与页面控件信息对应的元数据信息。接着,可以获取与页面控件信息对应的代码组件,并根据页面布局信息和代码组件,生成低代码开发平台的前端页面,以及根据页面控件信息和元数据信息,生成与前端页面对应的业务代码。这样,本申请提供的代码生成方法仅需获取前端设计图像,便可以自动生成对应的前端页面和业务代码,无需编写系统详细设计文档以及软件代码,提高了代码生成的效率。
该代码生成方法适用于代码生成系统。图2示出了该代码生成系统的一种结构。如图2所示,该代码生成系统包括:代码生成设备101和图像生成设备102。
其中,代码生成设备101与图像生成设备102之间通信连接。
在实际应用中,代码生成设备101可以连接任意数量的图像生成设备102。为了便于理解,图2以一个代码生成设备101连接一个图像生成设备102为例进行说明。
本申请实施例中,低代码平台的用户界面(User Interface,UI)设计师可以通过图像生成设备102的交互装置(例如鼠标、键盘等)执行图像编辑操作,图像生成设备102可以响应于UI设计师执行的图像编辑操作,生成低代码开发平台的前端设计图像。接着,图像生成设备102可以向代码生成设备101发送低代码开发平台的前端设计图像。
代码生成设备101可以接收图像生成设备102发送的低代码开发平台的前端设计图像,并基于本申请实施例提供的代码生成方法,构建低代码开发平台的前端页面,以及前端页面对应的业务代码。
可选的,代码生成设备101和图像生成设备102的实体设备可以是终端,也可以是服务器,还可以是其他类型的电子设备,本申请实施例对此不作限定。
可选的,上述终端可以是指向用户提供语音和/或数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。无线终端可以经无线接入网(radio access network,RAN)与一个或多个核心网进行通信。这样,无线终端可以通过核心网,将获取到的数据存储在服务器中,防止数据丢失。
无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,也可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语言和/或数据,例如,手机、平板电脑、笔记本电脑、上网本、个人数字助理(personal digital assistant,PDA)。
可选的,上述服务器可以是服务器集群(由多个服务器组成)中的一个服务器,也可以是该服务器中的芯片,还可以是该服务器中的片上系统,还可以通过部署在物理机上的虚拟机(virtual machine,VM)实现,本申请实施例对此不作限定。
可选的,当代码生成设备101和图像生成设备102的实体设备的类型相同(例如代码生成设备101和图像生成设备102均为服务器或者终端)时,代码生成设备101和图像生成设备102可以是相互独立设置的两个设备,也可以集成在同一设备中。
容易理解的是,当代码生成设备101和图像生成设备102集成在同一设备时,代码生成设备101和图像生成设备102之间的通信方式为该设备内部模块之间的通信。这种情况下,二者之间的通信流程与“代码生成设备101和图像生成设备102相互独立的情况下,二者之间的通信流程”相同。
当代码生成设备101和图像生成设备102集成在同一设备时,如图3所示,该集成设备可以包括产品设计模块、前端代码模块和后端代码模块。
其中,产品设计模块用于将像素较低,或者清晰度较低的原始图像,处理为高清的低代码开发平台的前端设计图像。
前端代码模块用于对前端设计图像,以得到识别结果。
示例性的,识别结果可以包括:下拉框、文本框、列表、按钮等。
前端代码模块还用于获取前端页面的组件包。
可选的,前端代码模块还包括表单设计器。
表单设计器实现了流程实例从发起到结束完整的业务流程生命周期过程,总共包含了5层架构(展示层、展示-业务转换层、业务逻辑层、业务-数据转换层、数据操作层)。
后端代码模块用于提供基于JAVA代码实现的应用程序界面(ApplicationProgram Interface,API)接口、远程过程调用(Remote Procedure Call,RPC)框架、对象关系映射(Object Relational Mapping,ORM)框架、多数据源处理(Spring)框架等。
RPC框架实现了自动服务发现,以及负载均衡。ORM框架实现了数据库层操作,并统一代码规范和标准。多数据源框架实现了异种数据库的事务,一旦发生错误,可以自动回滚。
为了便于理解,下文以代码生成设备101和图像生成设备102相互独立为例进行说明。
代码生成设备101和图像生成设备102基本硬件结构包括图4或图5所示代码生成装置所包括的元件。下面以图4和图5所示的代码生成装置为例,介绍代码生成设备101和图像生成设备102的硬件结构。
如图4所示,为本申请实施例提供的代码生成装置的一种硬件结构示意图。该代码生成装置包括处理器21,存储器22、通信接口23、总线24。处理器21,存储器22以及通信接口23之间可以通过总线24连接。
处理器21是代码生成装置的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器21可以是一个通用中央处理单元(central processing unit,CPU),也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。
作为一种实施例,处理器21可以包括一个或多个CPU,例如图4中所示的CPU 0和CPU 1。
存储器22可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
一种可能的实现方式中,存储器22可以独立于处理器21存在,存储器22可以通过总线24与处理器21相连接,用于存储指令或者程序代码。处理器21调用并执行存储器22中存储的指令或程序代码时,能够实现本申请下述实施例提供的代码生成方法。
在本申请实施例中,对于代码生成设备101和图像生成设备102而言,存储器22中存储的软件程序不同,所以代码生成设备101和图像生成设备102实现的功能不同。关于各设备所执行的功能将结合下面的流程图进行描述。
另一种可能的实现方式中,存储器22也可以和处理器21集成在一起。
通信接口23,用于代码生成装置与其他设备通过通信网络连接,所述通信网络可以是以太网,无线接入网,无线局域网(wireless local area networks,WLAN)等。通信接口23可以包括用于接收数据的接收单元,以及用于发送数据的发送单元。
总线24,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component interconnect,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
图5示出了本申请实施例中代码生成装置的另一种硬件结构。如图5所示,代码生成装置可以包括处理器31以及通信接口32。处理器31与通信接口32耦合。
处理器31的功能可以参考上述处理器21的描述。此外,处理器31还具备存储功能,可以起上述存储器22的功能。
通信接口32用于为处理器31提供数据。该通信接口32可以是代码生成装置的内部接口,也可以是代码生成装置对外的接口(相当于通信接口23)。
需要指出的是,图4(或图5)中示出的结构并不构成对代码生成装置的限定,除图4(或图5)所示部件之外,该代码生成装置可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合附图对本申请实施例提供的代码生成方法进行详细介绍。
本申请实施例提供的代码生成方法应用于图2所示的代码生成系统中的代码生成设备101,如图6所示,本申请实施例提供的代码生成方法包括:
S601、代码生成设备获取低代码开发平台的前端设计图像。
可选的,结合图2,代码生成设备可以从图像生成设备中获取低代码开发平台的前端设计图像。
可选的,当代码生成设备从图像生成设备获取到的原始图像的像素较低,或者清晰度较低时,代码生成设备可以对获取到的原始图像进行处理,以得到高清的低代码开发平台的前端设计图像。
示例性的,图7示出了本申请实施例提供的一种低代码开发平台的前端设计图像。如图7所示,该低代码开发平台可以包括用户查询条件对应的模块、用户查询结果展示对应的模块以及页数展示对应的模块。
其中,用户查询条件对应的模块可以展示:姓名、性别、学历、身高。
用户查询结果展示对应的模块可以展示查询到的信息以及可编辑控件。
查询到的信息可以包括:身份标识号(Identity document,ID)、具体姓名(例如图7中的张三或李四)、具体性别(例如图7中的男或女)、具体学历(例如图7中的本科或硕士)、具体身高(例如图7中的175或170)、具体年龄(例如图7中的22或24)。
可编辑控件可以是图7中的编辑/删除。
低代码开发平台的前端设计图像上面已经埋入控件的编号,便于代码生成设备基于图像技术对前端设计图像进行识别,例如C000代表名称(Key);C001代表文本框,并且数据类型为String;C002代表复选框(Checkbox);C003代表下拉菜单,是一个枚举值类型;C005是一个查询结果表,一般和C006分页控件搭配出现。
S602、代码生成设备基于图像识别技术对前端设计图像进行识别,以得到图像识别结果。
可选的,代码生成设备可以基于光学字符识别(Optical CharacterRecognition,OCR)技术对前端设计图像进行识别,也可以基于其他用于图像识别的技术对前端设计图像进行识别,本申请实施例对此不作限定。
可选的,代码生成设备可以基于OCR技术和大量的历史数据,训练得到一个图像识别模型,并根据该图像识别模型对前端设计图像进行识别,以得到图像识别结果。这样,通过大量的历史数据训练得到的图像识别模型可以精准的对前端设计图像进行识别,以得到图像识别结果。
其中,图像识别结果包括:页面布局信息、页面控件信息和与页面控件信息对应的元数据信息。
页面布局信息包括:前端设计图像中的单元格数量、每个单元格的大小和位置。页面控件信息包括:前端设计图像中控件的控件内容和控件类型。与页面控件信息对应的元数据信息可以是控件内容对应的英文字符串。
需要说明的是,上述控件内容是为了让用户对当前控件的相关功能进行理解,而上述元数据信息则是为了让数据库机器对当前控件的相关功能进行理解。也就是说,控件内容是用户可以理解的语言,而元数据信息则是数据库机器可以理解的语言。
在一种可以实现的方式中,代码生成设备可以基于图像识别技术对前端设计图像进行识别,通过识别前端设计图像中的横线和竖线,从而确定前端设计图像中单元格的数量、大小和位置(即每个单元格的布局)。
具体的,默认的位置信息可以通过一个m*n的矩阵表示,每一个矩阵就是一个单元格(单元格里面包含标题和控件)。每一个矩阵的高度默认为80像素(pixel,px),宽度默认200px。
如果某个单元格的宽度小于200px,则通过该单元格的样式进行自适应。
前端设计图像中,最顶部的横线索引为0,最左侧的竖线索引为0,代码生成设备可以基于层叠样式表(Cascading Style Sheets,CSS)计数顺序(上右下左),确定前端设计图像中单元格的位置。即,前端设计图像中单元格的的第一个单元格的位置信息就是(0,1,1,0),第二个单元格的位置信息是(0,2,1,1),以此类推。
在一种可以实现的方式中,代码生成设备得到图像识别结果后,可以生成Json格式配置文件。配置文件主要包括3类;页面布局信息对应的配置文件、页面控件信息对应的配置文件和元数据信息对应的配置文件。这样,代码生成设备后续可以直接执行该配置文件,生成低代码开发平台的前端页面。
S603、代码生成设备获取与页面控件信息对应的代码组件。
可选的,代码生成设备可以连接组件库。该组件库中可以包括大量的不同类型的可用组件。在获取页面控件信息后,代码生成设备可以从组件库中获取与页面控件信息对应的代码组件。
可选的,代码组件可以包括超文本标记语言(Hyper Text Markup Language,HTML)代码包、CSS代码包和计算机编程语言(JavaScript,JS)代码包。
S604、代码生成设备根据页面布局信息和代码组件,生成低代码开发平台的前端页面。
具体的,在获取页面布局信息和代码组件后,由于低代码开发平台需要前端页面与使用者进行交互,因此,代码生成设备可以根据页面布局信息和代码组件,生成低代码开发平台的前端页面。
在一种可以实现的方式中,页面布局信息包括:前端设计图像中的单元格数量、每个单元格的大小和位置。页面控件信息包括:前端设计图像中控件的控件内容。在这种情况下,代码生成设备根据页面布局信息和代码组件,生成低代码开发平台的前端页面的方法具体包括:
代码生成设备根据每个单元格的大小和位置,部署每个单元格对应的代码组件,以得到前端页面的页面布局结构。接着,代码生成设备将每个单元格对应的控件内容,添加到每个单元格对应的位置,以得到前端页面的页面内容。接着,代码生成设备基于页面布局结构和页面内容,生成前端页面。
具体的,在确定每个单元格的大小和位置,以及获取每个单元格对应的代码组件后,代码生成设备可以将每个单元格对应的代码组件部署到每个单元格对应的位置上,并对该代码组件的大小进行调整,从而实现对前端页面中的控件的排版。
接着,代码生成设备可以将识别到的页面内容添加到每个单元格对应的位置,从而实现对前端页面中每个控件对应内容的填写。后续,代码生成设备可以基于页面布局结构和页面内容,生成前端页面。
S605、代码生成设备根据页面控件信息和元数据信息,生成与前端页面对应的业务代码。
可选的,业务代码可以是数据库代码和后端增删改查的Java代码。
在一种可以实现的方式中,页面控件信息还包括:前端设计图像中控件的控件类型。在这种情况下,代码生成设备根据页面控件信息和元数据信息,生成与前端页面对应的业务代码的方法具体包括:
代码生成设备确定与控件类型对应的数据库脚本。
具体的,不同的控件类型对应的数据库脚本可能不同。在这种情况下,代码生成设备可以获取到前端设计图像中各个控件的控件类型,进而确定不同的控件类型对应的数据库脚本。
示例性的,代码生成设备可以将识别到的Checkbox代表Boolean类型,文本框代表String类型。接着,代码生成设备可以将简单类型的控件类型通过键值对(Key—Value)的形式,存储对应的数据库脚本。代码生成设备还可以将列表类型的控件类型通过图(Map)形式,存储对应的数据库脚本。
接着,代码生成设备可以根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成业务代码。
在一种可以实现的方式中,代码生成设备根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成业务代码的方法具体包括:
代码生成设备调用预先构建好的代码模板引擎,对每个控件对应的数据库脚本和每个控件对应的元数据信息进行代码生成处理,以得到业务代码。
示例性的,图8示出了本申请实施例提供的一种代码模板引擎的结构示意图。其中,该代码模板引擎包括:数据层、业务逻辑层和应用程序界面(Application ProgramInterface,API)。
其中,API用于实现网关路由代理、服务治理/注册/发现等功能。
业务逻辑层用于实现分布式事务、负载均衡、统一权限、统一日志等功能。
数据层用于实现从外部数据库获取数据的功能。其中,数据层可以包括持久层(CHBatis)、缓存工厂(cacher factory)和队列工厂(query factory)。
外部数据库可以包括:Mysql、Oracle、Redis、Memcache、KafKa、RabbitMQ等。
在一种可以实现的方式中,代码模板引擎的代码层架构为基于远程方法调用方式设计的代码层架构。
具体的,为了使得代码生成过程中,微服务颗粒度达到(增查改删CRUD)层面,代码模板引擎的代码层架构为基于远程方法调用方式设计的代码层架构。远程方法调用方式支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用,也可以用于不同虚拟机之间的通信。
可选的,上述虚拟机可以在不同的主机上、也可以在同一个主机上。一个虚拟机中的对象调用另一个虚拟上中的对象的方法,允许被远程调用的对象要加以可序列化标识。
示例性的,图9示出了本申请实施例提供的一种远程方法调用方式的流程示意图。如图9所示,该远程方法调用方式具体包括:
1、服务端创建远程对象。
2、服务端注册远程对象,以得到Rmi Registry。
3、客户端访问服务端,并查找注册的远程对象。
4、Rmi Registry向客户端返回服务端注册的远程对象的存根。
5、客户端向存根发送调用远程对象的请求。
6、客户端本地存根和服务端的骨架(skeleton)进行通信。
7、骨架通过骨架代理调用方法调用远程对象。
8、远程对象向骨架返回方法的执行结果。
9、骨架向存根返回执行结果。
10、存根向客户端返回执行结果。
这样,通过上述远程方法调用方式,可以使得代码生成设备生成的业务代码颗粒度细、代码复用度高,同时可以实现高负载以及高并发的代码使用。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对代码生成装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。可选的,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图10示出了本申请实施例提供的一种代码生成装置的结构示意图。如图10所示,该代码生成装置包括:图层处理模块、图层加工模块、页面布局模块、字段绑定模块、业务逻辑模块、代码模板模块、代码运行模块。
其中,图层处理模块用于获取高清的前端设计图像,并对获取到的图像进行页面分割和控件识别。
可选的,高清的前端设计图像的图像文件可以是PSD文件。
图层加工模块用于对图层处理模块处理后的图像进行图层分类、样式生成以及图层合并。
页面布局模块用于对图层加工模块处理后的图像进行自适应、根据布局算法进行布局以及元素(即控件)检测。
字段绑定模块用于根据控件类型和控件内容,对页面布局模块处理后的图像进行数据库语句绑定。
业务逻辑模块用于对字段绑定模块处理后的字段进行通用逻辑处理和业务逻辑处理。
代码模板模块用于生成业务逻辑模块处理后的字段对应的业务代码。
代码运行模块用于运行代码模板模块生成的业务代码。
图11示出了本申请实施例提供的又一种代码生成装置的结构示意图。如图11所示,该代码生成装置可以用于执行图4所示的代码生成的方法。图11所示代码生成装置包括:获取单元1101和处理单元1102;
获取单元1101,用于获取低代码开发平台的前端设计图像;
处理单元1102,用于基于图像识别技术对前端设计图像进行识别,以得到图像识别结果;图像识别结果包括:页面布局信息、页面控件信息和与页面控件信息对应的元数据信息;
获取单元1101,还用于获取与页面控件信息对应的代码组件;
处理单元1102,还用于根据页面布局信息和代码组件,生成低代码开发平台的前端页面;
处理单元1102,还用于根据页面控件信息和元数据信息,生成与前端页面对应的业务代码。
可选的,页面布局信息包括:前端设计图像中的单元格数量、每个单元格的大小和位置;页面控件信息包括:前端设计图像中控件的控件内容;
处理单元1102,具体用于:
根据每个单元格的大小和位置,部署每个单元格对应的代码组件,以得到前端页面的页面布局结构;
将每个单元格对应的控件内容,添加到每个单元格对应的位置,以得到前端页面的页面内容;
基于页面布局结构和页面内容,生成前端页面。
可选的,页面控件信息还包括:前端设计图像中控件的控件类型;
处理单元1102,具体用于:
确定与控件类型对应的数据库脚本;
根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成业务代码。
可选的,处理单元1102,具体用于:
调用预先构建好的代码模板引擎,对每个控件对应的数据库脚本和每个控件对应的元数据信息进行代码生成处理,以得到业务代码;代码模板引擎的代码层架构为基于远程装置调用方式设计的代码层架构。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质包括计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行如上述实施例提供的代码生成方法。
本申请实施例还提供一种计算机程序,该计算机程序可直接加载到存储器中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述实施例提供的代码生成方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机可读存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种代码生成方法,其特征在于,包括:
获取低代码开发平台的前端设计图像;
基于图像识别技术对所述前端设计图像进行识别,以得到图像识别结果;所述图像识别结果包括:页面布局信息、页面控件信息和与所述页面控件信息对应的元数据信息;
获取与所述页面控件信息对应的代码组件,并根据所述页面布局信息和所述代码组件,生成所述低代码开发平台的前端页面;
根据页面控件信息和所述元数据信息,生成与所述前端页面对应的业务代码。
2.根据权利要求1所述的代码生成方法,其特征在于,所述页面布局信息包括:所述前端设计图像中的单元格数量、每个单元格的大小和位置;所述页面控件信息包括:所述前端设计图像中控件的控件内容;
所述根据所述页面布局信息和所述代码组件,生成所述低代码开发平台的前端页面,包括:
根据所述每个单元格的大小和位置,部署所述每个单元格对应的代码组件,以得到所述前端页面的页面布局结构;
将所述每个单元格对应的控件内容,添加到所述每个单元格对应的位置,以得到所述前端页面的页面内容;
基于所述页面布局结构和所述页面内容,生成所述前端页面。
3.根据权利要求1所述的代码生成方法,其特征在于,所述页面控件信息还包括:所述前端设计图像中控件的控件类型;
所述根据页面控件信息和所述元数据信息,生成与所述前端页面对应的业务代码,包括:
确定与所述控件类型对应的数据库脚本;
根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成所述业务代码。
4.根据权利要求3所述的代码生成方法,其特征在于,所述根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成所述业务代码,包括:
调用预先构建好的代码模板引擎,对所述每个控件对应的数据库脚本和所述每个控件对应的元数据信息进行代码生成处理,以得到所述业务代码;所述代码模板引擎的代码层架构为基于远程方法调用方式设计的代码层架构。
5.一种代码生成装置,其特征在于,包括:获取单元和处理单元;
所述获取单元,用于获取低代码开发平台的前端设计图像;
所述处理单元,用于基于图像识别技术对所述前端设计图像进行识别,以得到图像识别结果;所述图像识别结果包括:页面布局信息、页面控件信息和与所述页面控件信息对应的元数据信息;
所述获取单元,还用于获取与所述页面控件信息对应的代码组件;
所述处理单元,还用于根据所述页面布局信息和所述代码组件,生成所述低代码开发平台的前端页面;
所述处理单元,还用于根据页面控件信息和所述元数据信息,生成与所述前端页面对应的业务代码。
6.根据权利要求5所述的代码生成装置,其特征在于,所述页面布局信息包括:所述前端设计图像中的单元格数量、每个单元格的大小和位置;所述页面控件信息包括:所述前端设计图像中控件的控件内容;
所述处理单元,具体用于:
根据所述每个单元格的大小和位置,部署所述每个单元格对应的代码组件,以得到所述前端页面的页面布局结构;
将所述每个单元格对应的控件内容,添加到所述每个单元格对应的位置,以得到所述前端页面的页面内容;
基于所述页面布局结构和所述页面内容,生成所述前端页面。
7.根据权利要求5所述的代码生成装置,其特征在于,所述页面控件信息还包括:所述前端设计图像中控件的控件类型;
所述处理单元,具体用于:
确定与所述控件类型对应的数据库脚本;
根据每个控件对应的数据库脚本和每个控件对应的元数据信息,生成所述业务代码。
8.根据权利要求7所述的代码生成装置,其特征在于,所述处理单元,具体用于:
调用预先构建好的代码模板引擎,对所述每个控件对应的数据库脚本和所述每个控件对应的元数据信息进行代码生成处理,以得到所述业务代码;所述代码模板引擎的代码层架构为基于远程装置调用方式设计的代码层架构。
9.一种代码生成装置,其特征在于,包括存储器和处理器;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过总线连接;当所述代码生成装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述代码生成装置执行如权利要求1-4任一项所述的代码生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机执行指令,当所述计算机执行指令在计算机上运行时,使得所述计算机执行如权利要求1-4任一项所述的代码生成方法。
CN202211743239.9A 2022-12-30 2022-12-30 一种代码生成方法、装置及存储介质 Pending CN116185403A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211743239.9A CN116185403A (zh) 2022-12-30 2022-12-30 一种代码生成方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211743239.9A CN116185403A (zh) 2022-12-30 2022-12-30 一种代码生成方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN116185403A true CN116185403A (zh) 2023-05-30

Family

ID=86433714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211743239.9A Pending CN116185403A (zh) 2022-12-30 2022-12-30 一种代码生成方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN116185403A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610304A (zh) * 2023-07-18 2023-08-18 腾讯科技(深圳)有限公司 页面代码生成方法、装置、设备和存储介质
CN117608559A (zh) * 2024-01-24 2024-02-27 卡奥斯创智物联科技有限公司 页面显示代码生成方法、装置、电子设备、存储介质
CN117724723A (zh) * 2023-12-18 2024-03-19 无锡众星微系统技术有限公司 一种Tile交换结构的布线通道代码生成方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610304A (zh) * 2023-07-18 2023-08-18 腾讯科技(深圳)有限公司 页面代码生成方法、装置、设备和存储介质
CN116610304B (zh) * 2023-07-18 2024-01-02 腾讯科技(深圳)有限公司 页面代码生成方法、装置、设备和存储介质
CN117724723A (zh) * 2023-12-18 2024-03-19 无锡众星微系统技术有限公司 一种Tile交换结构的布线通道代码生成方法和装置
CN117724723B (zh) * 2023-12-18 2024-10-29 无锡众星微系统技术有限公司 一种Tile交换结构的布线通道代码生成方法和装置
CN117608559A (zh) * 2024-01-24 2024-02-27 卡奥斯创智物联科技有限公司 页面显示代码生成方法、装置、电子设备、存储介质
CN117608559B (zh) * 2024-01-24 2024-04-19 卡奥斯创智物联科技有限公司 页面显示代码生成方法、装置、电子设备、存储介质

Similar Documents

Publication Publication Date Title
CN116185403A (zh) 一种代码生成方法、装置及存储介质
US11360976B2 (en) Deployment of javascript and typescript stored procedures and user-defined functions into database management systems
US10127023B2 (en) Computer-aided development of native mobile application code
CN101271475B (zh) 一种商业智能系统
CN104133772B (zh) 一种自动生成测试数据的方法
US20180039486A1 (en) Generation of dynamic software models using input mapping with feature definitions
CN114035773A (zh) 一种基于配置的低代码开发表单方法、系统及装置
CN102968307B (zh) 一种基于java的web开发中间件
CN103377038B (zh) 自定义表单的描述及表单解析方法
CN107896162A (zh) 监控系统的部署方法、 装置、 计算机设备及存储介质
US11595299B2 (en) System and method of suppressing inbound payload to an integration flow of an orchestration based application integration
JP2020109613A (ja) 4層アーキテクチャに基づくスマートな灌漑エリアeプラットフォーム及びデータ処理方法
CN112930529A (zh) 从概念数据模型生成软件工件
CN110941614A (zh) 表单生成方法、装置、电子设备及计算机可读存储介质
CN111427577A (zh) 代码处理方法、装置及服务器
US11893367B2 (en) Source code conversion from application program interface to policy document
CN114047989A (zh) 一种动态表单配置、渲染方法、系统及装置
CN105074652A (zh) 利用在节点层级中提供可执行脚本的模式远程执行应用的操作
CN102479355A (zh) 一种实现业务单据加载的方法、装置及终端
US10402399B2 (en) Computer implemented system and method for dynamically optimizing business processes
CN102819542A (zh) 展现实例文档的方法及装置
CN106446064A (zh) 一种数据转换方法及装置
CN109597825B (zh) 规则引擎调用方法、装置、设备及计算机可读存储介质
CN107423291A (zh) 一种数据翻译方法以及客户端设备
CN105930354A (zh) 存储模型转换方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination