CN117555533B - 代码生成方法、电子设备及存储介质 - Google Patents

代码生成方法、电子设备及存储介质 Download PDF

Info

Publication number
CN117555533B
CN117555533B CN202410047518.4A CN202410047518A CN117555533B CN 117555533 B CN117555533 B CN 117555533B CN 202410047518 A CN202410047518 A CN 202410047518A CN 117555533 B CN117555533 B CN 117555533B
Authority
CN
China
Prior art keywords
code
target
node
data processing
execution file
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.)
Active
Application number
CN202410047518.4A
Other languages
English (en)
Other versions
CN117555533A (zh
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.)
Beijing Yuantek Technology Co ltd
Original Assignee
Beijing Yuantek Technology 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 Beijing Yuantek Technology Co ltd filed Critical Beijing Yuantek Technology Co ltd
Priority to CN202410047518.4A priority Critical patent/CN117555533B/zh
Publication of CN117555533A publication Critical patent/CN117555533A/zh
Application granted granted Critical
Publication of CN117555533B publication Critical patent/CN117555533B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种代码生成方法、电子设备及存储介质,所述代码生成方法,通过根据代码生成指令确定目标输出节点,再根据目标输出节点找到目标数据处理节点,也就找到了目标数据处理节点的代码,然后根据数据源节点的代码、数据处理节点的代码和目标输出节点的代码,生成目标代码,即实现了根据代码生成指令直接获取想要输出的数据处理节点的代码,能够在不同的业务类型的数据进行数据统计分析时,直接使用获取的代码,无需进行二次开发。

Description

代码生成方法、电子设备及存储介质
技术领域
本申请涉及数据统计分析技术领域,尤其涉及一种代码生成方法、电子设备及存储介质。
背景技术
在对不同业务类型的数据进行数据统计分析时,通常需要对数据进行筛选、计算、连接等处理,得到数据统计结果,在每种数据处理时可能还需要进行代码的编写来完成特殊数据的处理。常见的处理方式是通过写各种平台的业务统计代码的方式,完成数据统计分析,面临不同的数据源、不同的数据格式、不同的数据类型以及不同的统计结果输出时,均需要开发人员对其代码进行单独的开发,无法灵活满足业务需求。
发明内容
有鉴于此,本申请的目的在于提出一种代码生成方法、电子设备及存储介质,以解决对于不同业务类型的数据进行数据统计分析时,代码需要单独开发,无法灵活使用的问题。
基于上述目的,本申请提供了一种代码生成方法,包括:
响应于接收到代码生成指令,根据所述代码生成指令,在预先创建的流程图的多个输出节点中确定目标输出节点,其中,所述预先创建的流程图包括数据源节点、多个数据处理节点和与多个所述数据处理节点一一对应的多个输出节点,所述数据源节点配置第一执行文件,每个所述数据处理节点均配置第二执行文件,每个所述输出节点均配置第三执行文件;
根据所述目标输出节点,确定关联的目标数据处理节点;
根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码。
可选地,所述代码生成指令包括计算机编程语言类型;
所述根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码,包括:
根据所述计算机编程语言类型,在所述第一执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第一目标代码信息;
根据所述计算机编程语言类型,在所述目标数据处理节点的第二执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第二目标代码信息;
根据所述计算机编程语言类型,在所述目标输出节点的第三执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第三目标代码信息;
根据所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息,生成所述目标代码。
可选地,所述根据所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息,生成所述目标代码,包括:
将所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息按照预设执行流程的顺序进行排序并整合,生成所述目标代码。
可选地,所述流程图的创建过程,包括:
创建数据源节点,根据预设的第一配置信息,建立所述数据源节点与目标数据库之间的链接,并生成与所述数据源节点对应的第一执行文件;
根据预设执行流程,创建至少一个数据处理节点,根据预设的第二配置信息,建立所述数据处理节点之间的链接,以及建立所述数据处理节点与所述数据源节点之间的链接,以及建立所述数据处理节点与预存储代码库、本地代码库和外部代码库之间的链接;
根据所述第二配置信息,在预存储代码库、本地代码库和外部代码库中查找与所述数据处理节点匹配的目标代码;根据所述第二配置信息和所述目标代码,生成与所述数据处理节点对应的第二执行文件;
创建与所述数据处理节点一一对应的多个输出节点,根据预设的第三配置信息,建立各输出节点与对应的数据处理节点之间的链接,并生成与所述输出节点对应的第三执行文件;
根据各节点之间的链接关系,生成流程图。
可选地,所述第二配置信息包括任务类型和任务标识;
根据所述第二配置信息,在预存储代码库、本地代码库和外部代码库中查找用于所述数据处理节点执行的目标代码,包括:
当所述任务类型为计算类型,根据所述任务标识在本地代码库和/或外部代码库查找包含所述任务标识的代码,将该代码作为所述目标代码;
当所述任务类型为连接类型,根据所述任务标识在预设存储代码库中查找包含所述标识的代码,将该代码作为所述目标代码。
可选地,在生成所述流程图之后,还包括:
响应于接收到验证指令,分别将所述数据源节点、所述数据处理节点和所述输出节点与后台验证接口连接;
基于后台配置信息数据库,对各节点进行验证,得到各节点的验证结果;
响应于所述验证结果为验证未通过,则确定验证未通过的节点的配置信息错误。
可选地,所述基于后台配置信息数据库,对各节点进行验证,得到验证结果,包括:
获取各节点的配置信息;
将获取的配置信息与后台配置信息数据库匹配,若匹配率达到预设匹配率阈值,则确定验证结果为通过,若匹配率未达到预设匹配率阈值,则确定验证结果为未通过。
可选地,所述方法还包括:
将所述目标代码输入至预设验证模型中,得到验证运行结果;
将所述验证运行结果与真实结果对比,得到验证结果;
响应于所述验证结果为完全一致,确定所述目标代码正确;
响应于所述验证结果为不完全一致,确定所述目标代码错误,并输出错误的结果记录日志。
基于同一发明构思,本公开还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如上所述的方法。
基于同一发明构思,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如上所述的方法。
从上面所述可以看出,本申请提供的一种代码生成方法、电子设备及存储介质,所述代码生成方法,包括:在接收到基于预先创建的流程图的某个输出节点发出的代码生成指令时,根据代码生成指令,在预先创建的流程图中的多个输出节点中确定目标输出节点,其中,预先创建的流程图包括数据源节点、多个数据处理节点和与多个数据处理节点一一对应的多个输出节点,所述数据源节点配置第一执行文件,每个所述数据处理节点均配置第二执行文件,每个所述输出节点均配置第三执行文件;这样,能够根据用户想要生成代码的目标输出节点,进行代码的生成。由于第一执行文件、第二执行文件和第三执行文件均为代码文件,在代码生成时,根据目标输出节点找到与目标输出节点对应的数据处理节点,找到目标数据处理节点的第二执行文件,也即得到了目标数据处理节点的代码文件。再根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码,这样,通过代码生成指令就可以直接获取用户想要生成的代码。本申请中通过根据代码生成指令确定目标输出节点,再根据目标输出节点找到目标数据处理节点,也就找到了目标数据处理节点的代码,然后根据数据源节点的代码、目标数据处理节点的代码和目标输出节点的代码,生成目标代码,即实现了根据代码生成指令直接获取想要输出的数据处理节点的代码,能够在不同的业务类型的数据进行数据统计分析时,直接使用获取的代码,无需进行二次开发。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的一种代码生成方法流程示意图;
图2为本申请实施例的流程创建过程示意图;
图3为本申请实施例的一种代码生成装置结构框架示意图;
图4为本申请实施例的一种电子设备硬件结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
以下结合附图来详细说明本申请的实施例。
参照图1,本申请提供了一种代码生成方法,包括以下步骤:
步骤102、响应于接收到代码生成指令,根据所述代码生成指令,在预先创建的流程图的多个输出节点中确定目标输出节点,其中,所述预先创建的流程图包括数据源节点、多个数据处理节点和与多个所述数据处理节点一一对应的多个输出节点,所述数据源节点配置第一执行文件,每个所述数据处理节点均配置第二执行文件,每个所述输出节点均配置第三执行文件。
在本步骤中,预先创建的流程图包括数据源节点、多个数据处理节点和与多个所述数据处理节点一一对应的多个输出节点,其中,多个数据处理节点可以为筛选、规约、转换、聚合统计、抽样、SQL代码、左连接、右连接、排名、排序、计数、求最大值、求最小值、求平均值等数据处理节点。用户可以根据需要选择对应的数据处理节点生成代码,如用户通过点击流程图创建界面的代码生成按钮,向控制***发送代码生成指令。示例性的,用户想要求平均值节点的代码,那么,用户通过选择流程图创建界面的求平均值的数据处理节点,并点击生成代码按钮,向控制***发送代码生成指令。控制***接收到代码生成指令后,会根据代码生成指令,先确定多个输出节点中的目标输出节点。以便于根据该目标输出节点找到对应的数据处理节点。
步骤104、根据所述目标输出节点,确定关联的目标数据处理节点。
在本步骤中,当控制***接收到代码生成指令后,对代码生成指令进行解析,得到对应输出节点的输出标识,根据输出节点的输出标识确定目标输出节点,根据目标输出节点找到与目标输出节点关联的目标数据处理节点。
步骤106、根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码。
在本步骤中,代码生成指令中包含有代码生成规则,代码生成规则可以为代码生成时的计算机编程语言类型,控制***对代码生成指令进行解析,获取代码生成规则,根据计算机编程语言类型,将第一执行文件、目标数据处理节点的第二执行文件和目标输出节点的第三执行文件,生成目标代码。
通过步骤102-106,在接收到基于预先创建的流程图的某个节点发出的代码生成指令时,根据代码生成指令,在预先创建的流程图中的多个输出节点中确定目标输出节点,这样,能够根据用户想要生成代码的目标输出节点,进行代码的生成。由于第一执行文件、第二执行文件和第三执行文件均为代码文件,在代码生成时,根据目标输出节点找到与目标输出节点对应的数据处理节点,找到目标数据处理节点的第二执行文件,也即得到了目标数据处理节点的代码文件。再根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码,这样,通过代码生成指令就可以直接获取用户想要生成的代码。即实现了根据代码生成指令直接获取想要输出的目标数据处理节点的代码,能够在不同的业务类型的数据进行数据统计分析时,直接使用获取的代码,无需进行二次开发。
在一些实施例中,所述代码生成指令包括计算机编程语言类型;
所述根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码,包括:
根据所述计算机编程语言类型,在所述第一执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第一目标代码信息;
根据所述计算机编程语言类型,在所述目标数据处理节点的第二执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第二目标代码信息;
根据所述计算机编程语言类型,在所述目标输出节点的第三执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第三目标代码信息;
根据所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息,生成所述目标代码。
具体地,在本实施例中,示例性的,计算机编程语言类型包括Java语言和Scala语言。第一执行文件、第二执行文件和第三执行文件中均包括Java语言和Scala语言两种类型的计算机编程语言。Java语言和Scala语言均分为两个文件,也即第一执行文件、第二执行文件和第三执行文件中均包括Java语言执行文件和Scala语言执行文件。根据级计算机编程语言类型(示例性的,代码指令中要求代码生成的计算机编程语言类型为Java语言),在第一执行文件中查找包含有所述计算机编程语言类型(Java语言)的代码信息(也即第一执行文件中的Java语言执行文件),得到第一目标代码信息;也即在第一执行文件中找到Java语言执行文件,并将Java语言执行文件中的代码信息作为第一目标代码信息。根据级计算机编程语言类型(Java语言),在第二执行文件中查找包含有所述计算机编程语言类型(Java语言)的代码信息(也即第二执行文件中的Java语言执行文件),得到第二目标代码信息;也即在第二执行文件中找到Java语言执行文件,并将Java语言执行文件中的代码信息作为第二目标代码信息。根据级计算机编程语言类型(Java语言),在第三执行文件中查找包含有所述计算机编程语言类型(Java语言)的代码信息(也即第三执行文件中的Java语言执行文件),得到第三目标代码信息;也即在第三执行文件中找到Java语言执行文件,并将Java语言执行文件中的代码信息作为第三目标代码信息。根据第一目标代码信息、第二目标代码信息和第三目标代码信息,生成目标代码信息。也即根据第一执行文件中的Java语言执行文件、第二执行文件中的Java语言执行文件和第三执行文件中的Java语言执行文件中的各文件中的代码生成目标代码信息。这样,能够根据计算机编程语言类型获取对应的计算机编程语言类型的代码,并生成用户需要的计算机编程语言类型的代码,也即直接获取目标数据处理节点对应的代码,可供其他***调用,避免了工作人员对于同一计算还需重新撰写代码的问题。
在上述实施例的基础上,所述根据所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息,生成所述目标代码,包括:
将所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息按照预设执行流程的顺序进行排序并整合,生成所述目标代码。
具体地,将第一执行文件中的Java语言执行文件、第二执行文件中的Java语言执行文件和第三执行文件中的Java语言执行文件中的各文件中的代码按照预设执行流程(预设执行流程也即是想要创建流程图的执行流程)的顺序进行排序并整合(整合也即将代码按预设执行流程的顺序进行排列连接,形成完整代码),生成目标代码。这样,能够根据计算机编程语言类型获取对应的计算机编程语言类型的代码,可适用不同的计算机编程语言的执行***使用,避免了工作人员在重新撰写代码。
在一些实施例中,如图2所示,所述流程图的创建过程,包括以下步骤:
步骤202、创建数据源节点,根据预设的第一配置信息,建立所述数据源节点与目标数据库之间的链接,并生成与所述数据源节点对应的第一执行文件;
步骤204、根据预设执行流程,创建至少一个数据处理节点,根据预设的第二配置信息,建立所述数据处理节点之间的链接,以及建立所述数据处理节点与所述数据源节点之间的链接,以及建立所述数据处理节点与预存储代码库、本地代码库和外部代码库之间的链接;
步骤206、根据所述第二配置信息,在预存储代码库、本地代码库和外部代码库中查找与所述数据处理节点匹配的目标代码;根据所述第二配置信息和所述目标代码,生成与所述数据处理节点对应的第二执行文件;
步骤208、创建与所述数据处理节点一一对应的多个输出节点,根据预设的第三配置信息,建立各输出节点与对应的数据处理节点之间的链接,并生成与所述输出节点对应的第三执行文件;
步骤210、根据各节点之间的链接关系,生成流程图。
具体地,流程图创建时,基于流程图创建界面,根据用户要求的流程对各节点进行创建,首先创建数据源节点,开发人员通过在流程图创建界面上将数据源节点拖拽至流程图创建区域,控制***在接收到创建数据源节点的指令后,在流程图创建区域的界面上弹出供开发人员输入配置信息的代码输入框,开发人员会将第一配置信息输入至代码输入框,并点击确认按钮后控制***接收到预设的第一配置信息,根据预设的第一配置信息(也即第一任务信息,以供控制***根据第一任务信息进行执行),建立数据源节点与目标数据库之间的链接;其中,第一配置信息可以为输入的配置信息,例如,开发人员输入数据源节点需要链接的数据库的链接地址参数、以及连接过程中设定的用户名和密码,其中输入的配置信息相当于条件。控制***接收到条件后,根据各条件在本地数据库中调用相关的代码,根据代码和各条件生成与数据源节点对应的第一执行文件,以便于根据第一执行文件生成数据源节点的代码。
示例性的,生成的java代码如下:
DataSourceSettings dataSourceSettings = new DataSourceSettings(url,user, password, authFiles);
DataSource dataSource = new DataSource(dataSourceSettings);
dataSource.filter(sql);
其中,url为关系数据库、大数据组件和图数据库的连接库可解析的连接地址参数,user为用户名,password为密码, authFiles为认证文件,该参数可选,也可以为空。
其次,在创建数据处理节点时,根据预设执行流程(用户要求的流程)进行创建,开发人员通过在流程图创建界面上将数据处理点拖拽至流程图创建区域,控制***在接收到创建数据处理节点的指令后,在流程图创建区域的界面上弹出供开发人员输入配置信息的代码输入框,开发人员会将第二配置信息输入至代码输入框,并点击确认按钮后控制***接收到预设的第二配置信息,根据预设的第二配置信息(也即第二任务信息,以供控制***根据第二任务信息进行执行),建立数据处理节点与数据处理节点之间的链接,以及建立数据处理节点与数据源节点之间的链接,以及建立数据处理节点与预存储代码库、本地代码库和外部代码库之间的链接;其中,第二配置信息可以为输入的数据处理节点之间的关系等配置信息,控制***在接收到输入的信息后在本地数据库中调用相关的代码,其中代码可以包含有数据处理节点与数据源节点的链接语句,数据处理节点与数据源节点的链接语句,以及数据节点与预存储代码库、本地代码库和外部代码库之间的链接语句,根据第二配置信息,在与存储代码库、本地代码库和外部代码库中查找与数据处理节点匹配的目标代码,使得数据处理节点进行数据处理时,可以调用其他数据处理节点、数据源节点的数据及结果,根据目标代码对各数据及结果进行计算。根据输入的第二配置信息以及控制***调用的相关语句和各数据处理节点的目标代码生成与输出节点对应的第二执行文件,以便于根据第二执行文件生成数据处理节点的代码。
再次,在创建输出节点时,每个数据处理节点上均设置一个输出节点。开发人员通过在流程图创建界面上将输出节点拖拽至流程图创建区域,并与数据处理节点相对应,控制***在接收到创建输出节点的指令后,在流程图创建区域的界面上弹出供开发人员输入配置信息的代码输入框,开发人员会将第三配置信息输入至代码输入框,并点击确认按钮后控制***接收到预设的第三配置信息,根据预设的第三配置信息(也即第二任务信息,以供控制***根据第二任务信息进行执行),建立输出节点与对应的数据输出节点之间的链接;其中,第三配置信息可以为输入的数据处理节点与输出节点之间的关系等配置信息,控制***在接收到输入的信息后在本地数据库中调用相关的代码,其中代码可以包含有输出节点与对应的数据输出节点之间链接语句,以实现输出节点与各数据处理节点的链接。根据输入的配置信息以及控制***调用的相关语句生成与输出节点对应的第三执行文件,以便于根据第三执行文件生成输出节点的代码。在创建完各节点的链接关系后,根据各节点之间的链接关系,生成流程图。以便于用户根据流程图的各节点,生成想要输出的节点的代码。避免了用户再次对代码重新开发。
在一些实施例中,所述第二配置信息包括任务类型和任务标识;
根据所述第二配置信息,在预存储代码库、本地代码库和外部代码库中查找用于所述数据处理节点执行的目标代码,包括:
当所述任务类型为计算类型,根据所述任务标识在本地代码库和/或外部代码库查找包含所述任务标识的代码,将该代码作为所述目标代码;
当所述任务类型为连接类型,根据所述任务标识在预设存储代码库中查找包含所述标识的代码,将该代码作为所述目标代码。
具体地,第二配置信息包括任务类型和任务标识,任务类型包括计算类型和连接类型,示例性的,计算类型包括:筛选、规约、转换、聚合统计、抽样、SQL代码,排名、排序、计数、求最大值、求最小值、求平均值;连接类型包括:左连接、右连接。当任务类型为计算类型时,说明该处理节点需要进行相应的计算。其中,第二配置信息可以根据计算类型设置不同的参数。对于筛选、规约、转换、SQL代码可以用户自定义输入代码对每条数据进行处理,对聚合统计、左连接、右连接、排名、排序、计数、求最大值、求最小值、求平均值只需设置相关的字段名参数,抽样需设置抽样比例或者随机固定数据记录数。当任务类型为连接类型时,说明处理节点只是连接节点,只是用于将该数据处理节点与其他数据处理节点连接,以便于实现其他数据处理节点的计算。当数据处理节点为计算类型时,那么就需要相关的计算代码,计算代码预先存储在控制***内的本地代码库和外部代码库中,那么就根据任务标识在本地代码库和/或外部代码库查找包含任务标识的代码,并将该代码作为目标代码。当任务类型为连接类型时,需要各数据处理节点的连接,这时候,就需要根据用户的计算需求,因此,需要用户输入的代码来实现,那么用户输入的代码存储在预设存储代码库中,当任务类型为连接类型时,就需要根据任务标识在预设存储代码库中查找包含标识的代码,并将该代码作为目标代码。这样,能够实现在创建流程图时,通过输入少量代码来实现流程图的建立,节省开发人员的工作量。
其中,本地代码库存储的代码可以为计算较简单的代码,而外部代码库存储的代码可以为计算程度较复杂的代码。在创建数据处理节点后,控制***根据第一配置信息首先在本地数据库内查找包含任务标识的代码,若未找到,则可以在流程图创建界面上向用户提示添加代码插件,用户选择添加代码插件,相当于建立了数据处理节点与外部代码库的连接,对于外部代码库内进行调用时,外部代码库内设置类名用于指定代码插件所使用的主代码类名路径,例如:com.java.alg.filter;设置函数名用于指定主代码中所使用的函数名function_name,例如:filterIp;设置参数名及类型用于指定函数的所有参数及类型,可以是多个参数,参数名为合法的java语言变量命名语法,支持java基础类型,包括:string、integer、long、short、float、double、boolean、byte、char;设置返回值类型用于指定函数的返回值类型,类型支持java基础类型;设置备注用于对代码插件进行注释和说明;基于以上设置,在使用函数的设置中,将自动按节点类型生成对于函数的代码调用,即:@function_name(param1, param2, param3, ...)。
以一个代码插件示例为例,说明生成后的的代码插件如何使用:
对于使用该函数的流程节点将生成类似以下代码调用:
@filterIp("192.168.1.1","192.168.1.2","/home",1698474678)
对于生成SQL代码的流程节点,该SQL代码可以为用户输入的SQL过滤条件。则生成如下代码:
select srcIp, dstIp, uri, time from table_uri_log where @filterIp(srcIp, dstIp, uri, time) is true。
在一些实施例中,在生成所述流程图之后,还包括:
响应于接收到验证指令,分别将所述数据源节点、所述数据处理节点和所述输出节点与后台验证接口连接;
基于后台配置信息数据库,对各节点进行验证,得到各节点的验证结果;
响应于所述验证结果为验证未通过,则确定验证未通过的节点的配置信息错误。
具体地,在创建完成流程图后,为了避免某个节点创建错误,需要对创建的流程图进行验证,通过在流程图创建界面点击验证按钮,向控制***发送验证指令,控制***接收到验证指令后,分别将数据源节点、数据处理节点和输出节点与后台验证接口连接;其中后台验证接口与后台配置信息数据库链接;基于后台配置信息数据库,对各节点进行验证,得到各节点的验证结果;当验证结果未通过时,则确定验证未通过节点的配置信息错误,开发人员可根据验证结果找到相应的节点,并对配置信息进行修改,使验证结果通过为止,这样,便于开发人员对流程图的验证,无需反复的确认代码。节省开发人员的工作量。
在一些实施例中,所述基于后台配置信息数据库,对各节点进行验证,得到验证结果,包括:
获取各节点的配置信息;
将获取的配置信息与后台配置信息数据库匹配,若匹配率达到预设匹配率阈值,则确定验证结果为通过,若匹配率未达到预设匹配率阈值,则确定验证结果为未通过。
具体地,后台配置信息数据库存储有各节点的预存储配置信息;在对各节点进行验证时,首先获取各节点的配置信息,将配置信息与各节点的预存储配置信息进行匹配,匹配率达到预设匹配率(例如95%),那么确定验证结果为通过,若匹配率未达到预设匹配率阈值,则确定验证结果未通过。这样,通过对匹配信息进行验证,能够保证各节点的配置信息正常,保证流程图的正确运行,生成准确的代码。
在一些实施例中,所述方法还包括:
将所述目标代码输入至预设验证模型中,得到验证运行结果;
将所述验证运行结果与真实结果对比,得到验证结果;
响应于所述验证结果为完全一致,确定所述目标代码正确;
响应于所述验证结果为不完全一致,确定所述目标代码错误,并输出错误的结果记录日志。
具体地,预设验证模型可以为预先存储在控制***内用于运行代码的模型,预设验证模型根据输入的目标代码运行,得到验证运行结果,控制***将验证运行结果与真实结果比较,若比较结果完全一致,则确定目标代码正确;若验证结果不完全一致,例如,有个数值错误,那么确定目标点代码有误,并输出错误的结果记录日志,供开发人员查看,以便于根据错误的结果记录日志找到目标代码错误的原因。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种代码生成装置。
参考图3,所述一种代码生成装置,包括:
第一确定模块302,被配置为响应于接收到代码生成指令,根据所述代码生成指令,在预先创建的流程图的多个输出节点中确定目标输出节点,其中,所述预先创建的流程图包括数据源节点、多个数据处理节点和与多个所述数据处理节点一一对应的多个输出节点,所述数据源节点配置第一执行文件,每个所述数据处理节点均配置第二执行文件,每个所述输出节点均配置第三执行文件;
第二确定模块304,被配置为根据所述目标输出节点,确定关联的目标数据处理节点;
生成模块306,被配置为根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的一种代码生成方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的一种代码生成方法。
图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图, 该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线 1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的一种代码生成方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的一种代码生成方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的一种代码生成方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
可以理解的是,在使用本公开中各个实施例的技术方案之前,均会通过恰当的方式对所涉及的个人信息的类型、使用范围、使用场景等告知用户,并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确的提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主的选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定的实现方式,响应于接受到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其他满足相关法律法规的方式也可应用于本公开的实现方式中。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种代码生成方法,其特征在于,包括:
响应于接收到代码生成指令,根据所述代码生成指令,在预先创建的流程图的多个输出节点中确定目标输出节点,其中,所述预先创建的流程图包括数据源节点、多个数据处理节点和与多个所述数据处理节点一一对应的多个输出节点,所述数据源节点配置第一执行文件,每个所述数据处理节点均配置第二执行文件,每个所述输出节点均配置第三执行文件;
根据所述目标输出节点,确定关联的目标数据处理节点;
根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码;
其中,所述流程图的创建过程,包括:
创建数据源节点,根据预设的第一配置信息,建立所述数据源节点与目标数据库之间的链接,并生成与所述数据源节点对应的第一执行文件;
根据预设执行流程,创建至少一个数据处理节点,根据预设的第二配置信息,建立所述数据处理节点之间的链接,以及建立所述数据处理节点与所述数据源节点之间的链接,以及建立所述数据处理节点与预存储代码库、本地代码库和外部代码库之间的链接;
根据所述第二配置信息,在预存储代码库、本地代码库和外部代码库中查找与所述数据处理节点匹配的目标代码;根据所述第二配置信息和所述目标代码,生成与所述数据处理节点对应的第二执行文件;
创建与所述数据处理节点一一对应的多个输出节点,根据预设的第三配置信息,建立各输出节点与对应的数据处理节点之间的链接,并生成与所述输出节点对应的第三执行文件;
根据各节点之间的链接关系,生成流程图。
2.根据权利要求1所述的方法,其特征在于,所述代码生成指令包括计算机编程语言类型;
所述根据所述代码生成指令、所述第一执行文件、所述目标数据处理节点的第二执行文件和所述目标输出节点的第三执行文件,生成目标代码,包括:
根据所述计算机编程语言类型,在所述第一执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第一目标代码信息;
根据所述计算机编程语言类型,在所述目标数据处理节点的第二执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第二目标代码信息;
根据所述计算机编程语言类型,在所述目标输出节点的第三执行文件中查找包含有所述计算机编程语言类型的代码信息,得到第三目标代码信息;
根据所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息,生成所述目标代码。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息,生成所述目标代码,包括:
将所述第一目标代码信息、所述第二目标代码信息和所述第三目标代码信息按照预设执行流程的顺序进行排序并整合,生成所述目标代码。
4.根据权利要求1所述的方法,其特征在于,所述第二配置信息包括任务类型和任务标识;
根据所述第二配置信息,在预存储代码库、本地代码库和外部代码库中查找用于所述数据处理节点执行的目标代码,包括:
当所述任务类型为计算类型,根据所述任务标识在本地代码库和/或外部代码库查找包含所述任务标识的代码,将该代码作为所述目标代码;
当所述任务类型为连接类型,根据所述任务标识在预设存储代码库中查找包含所述标识的代码,将该代码作为所述目标代码。
5.根据权利要求1所述的方法,其特征在于,在生成所述流程图之后,还包括:
响应于接收到验证指令,分别将所述数据源节点、所述数据处理节点和所述输出节点与后台验证接口连接;
基于后台配置信息数据库,对各节点进行验证,得到各节点的验证结果;
响应于所述验证结果为验证未通过,则确定验证未通过的节点的配置信息错误。
6.根据权利要求5所述的方法,其特征在于,所述基于后台配置信息数据库,对各节点进行验证,得到验证结果,包括:
获取各节点的配置信息;
将获取的配置信息与后台配置信息数据库匹配,若匹配率达到预设匹配率阈值,则确定验证结果为通过,若匹配率未达到预设匹配率阈值,则确定验证结果为未通过。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述目标代码输入至预设验证模型中,得到验证运行结果;
将所述验证运行结果与真实结果对比,得到验证结果;
响应于所述验证结果为完全一致,确定所述目标代码正确;
响应于所述验证结果为不完全一致,确定所述目标代码错误,并输出错误的结果记录日志。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一所述的方法。
9.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使计算机执行权利要求1至7任一所述的方法。
CN202410047518.4A 2024-01-12 2024-01-12 代码生成方法、电子设备及存储介质 Active CN117555533B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410047518.4A CN117555533B (zh) 2024-01-12 2024-01-12 代码生成方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410047518.4A CN117555533B (zh) 2024-01-12 2024-01-12 代码生成方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117555533A CN117555533A (zh) 2024-02-13
CN117555533B true CN117555533B (zh) 2024-04-12

Family

ID=89817159

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410047518.4A Active CN117555533B (zh) 2024-01-12 2024-01-12 代码生成方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117555533B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189383A (zh) * 2018-08-28 2019-01-11 厦门海迈科技股份有限公司 代码文件的生成方法、装置、计算设备和存储介质
CN111399827A (zh) * 2020-03-09 2020-07-10 北京国信会视科技有限公司 一种传感器数据处理的描述性对象代码自动生成方法
CN112199086A (zh) * 2020-09-18 2021-01-08 北京达佳互联信息技术有限公司 自动编程控制***、方法、装置、电子设备及存储介质
CN112947914A (zh) * 2021-03-31 2021-06-11 中国建设银行股份有限公司 一种基于模型的代码生成方法、装置、计算机设备及介质
CN114118811A (zh) * 2021-11-29 2022-03-01 深圳壹账通智能科技有限公司 服务代码的生成、执行方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070233655A1 (en) * 2006-04-03 2007-10-04 National Instruments Corporation Graphical program representation of queries

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189383A (zh) * 2018-08-28 2019-01-11 厦门海迈科技股份有限公司 代码文件的生成方法、装置、计算设备和存储介质
CN111399827A (zh) * 2020-03-09 2020-07-10 北京国信会视科技有限公司 一种传感器数据处理的描述性对象代码自动生成方法
CN112199086A (zh) * 2020-09-18 2021-01-08 北京达佳互联信息技术有限公司 自动编程控制***、方法、装置、电子设备及存储介质
CN112947914A (zh) * 2021-03-31 2021-06-11 中国建设银行股份有限公司 一种基于模型的代码生成方法、装置、计算机设备及介质
CN114118811A (zh) * 2021-11-29 2022-03-01 深圳壹账通智能科技有限公司 服务代码的生成、执行方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN117555533A (zh) 2024-02-13

Similar Documents

Publication Publication Date Title
CN108415832B (zh) 接口自动化测试方法、装置、设备及存储介质
US9239705B2 (en) Method and apparatus for customized software development kit (SDK) generation
CN110955416A (zh) 接口文档生成方法、装置、设备和计算机存储介质
US9811605B2 (en) Methods, apparatuses and computer program products for automated learning of data models
US10671613B2 (en) Data source binding using an OData model
CN111259643B (zh) 一种生成图形报表的方法及设备
US20210334149A1 (en) Api adapter creation device, api adapter creation method, and api adapter creation program
CN111506579B (zh) 一种智能合约代码的生成方法、程序及设备
US9582270B2 (en) Effective feature location in large legacy systems
CN110647471A (zh) 接口测试用例生成方法、电子装置及存储介质
CN111240955A (zh) Http接口自动化测试方法及装置、存储介质、电子设备
US20160162539A1 (en) Computer executable method of generating analysis data and apparatus performing the same and storage medium for the same
CN114579452A (zh) 接口影响检测方法及相关设备
CN111026670A (zh) 测试用例的生成方法、测试用例的生成装置及存储介质
CN111260336B (zh) 基于规则引擎的业务核对方法、装置及设备
CN115599359A (zh) 一种代码生成方法、装置、设备及介质
CN113778897B (zh) 接口的自动测试方法、装置、设备及存储介质
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
CN113535141A (zh) 数据库操作代码的生成方法及装置
CN112988600A (zh) 业务场景测试方法、装置、电子设备及存储介质
EP3438818A1 (en) Method and device for compiling computer language
CN117555533B (zh) 代码生成方法、电子设备及存储介质
CN113536748A (zh) 一种生成图表数据的方法和装置
CN116578282A (zh) 代码生成方法、装置、电子设备及介质
US20160070564A1 (en) Dynamically schematized log messages for software applications

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
GR01 Patent grant
GR01 Patent grant