CN110297632A - 代码生成方法和装置 - Google Patents

代码生成方法和装置 Download PDF

Info

Publication number
CN110297632A
CN110297632A CN201910507093.XA CN201910507093A CN110297632A CN 110297632 A CN110297632 A CN 110297632A CN 201910507093 A CN201910507093 A CN 201910507093A CN 110297632 A CN110297632 A CN 110297632A
Authority
CN
China
Prior art keywords
node
operator
business
processed
operator node
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
CN201910507093.XA
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.)
Baidu Online Network Technology Beijing Co Ltd
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910507093.XA priority Critical patent/CN110297632A/zh
Publication of CN110297632A publication Critical patent/CN110297632A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例提供一种代码生成方法和装置,该方法包括:获取待处理业务的处理流程对应的多个算子节点,处理流程包括多个处理步骤,每个算子节点用于执行多个处理步骤中的至少一个步骤,根据待处理业务的处理流程,获取多个算子节点对应的框架图,框架图用于表示多个算子节点之间的关联依赖关系,对框架图进行配置化处理,生成待处理业务对应的业务逻辑代码。在本发明实施例中,通过将待处理业务的处理流程抽象成多个算子节点,并采用框架图将多个算子节点进行关联,从而构成了整个后台服务器的连接架构,然后对框架图进行配置化处理,生成业务逻辑代码,大大提升了服务器端代码开发的效率。

Description

代码生成方法和装置
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种代码生成方法和装置。
背景技术
目前的代码自动生成方法,通常应用于带有图形用户接口(Graphical UserInterface,GUI)的客户端,具体地,通过代码编辑器进行界面视觉元素的拖拽和拼接,构成客户端元素控件的框架代码,然后填充相应的元素响应事件代码,实现客户端代码的生成。
然后,上述代码生产方案仅针对带有GUI的客户端,对于没有GUI的后台服务器,这种方案不适用。
发明内容
本发明实施例提供一种代码生成方法和装置,用于提高服务器端的代码开发效率。
第一方面,本发明实施例提供一种代码生成方法,包括:
获取待处理业务的处理流程对应的多个算子节点,所述处理流程包括多个处理步骤,每个算子节点用于执行所述多个处理步骤中的至少一个处理步骤;
根据所述待处理业务的处理流程,获取所述多个算子节点对应的框架图,所述框架图为对所述多个算子节点进行图形化操作得到的;
对所述框架图进行配置化处理,生成所述待处理业务对应的业务逻辑代码。
在一种可能的设计中,所述根据所述待处理业务的处理流程,获取所述多个算子节点对应的框架图,包括:
根据所述待处理业务的处理流程,获取所述多个算子节点之间的关联依赖关系,所述关联依赖关系用于表示所述多个算子节点之间的触发关系,其中,所述关联依赖关系包括需求依赖和选择依赖,所述需求依赖表示上游节点正常触发时,执行当前节点,以及上游节点异常触发或跳过触发时,跳过当前节点并向下游节点进行触发,所述选择依赖表示上游节点为正常触发或异常触发或跳过触发时,执行当前节点;
根据所述关联依赖关系,通过图形化操作获取所述框架图。
在一种可能的设计中,所述对所述框架图进行配置化处理,生成所述待处理业务对应的业务逻辑代码,包括:
根据所述框架图,生成所述框架图对应的配置文件;
根据所述待处理业务,在所述配置文件中配置每个算子节点的属性参数,获取新的配置文件;
根据所述新的配置文件,生成所述待处理业务对应的业务逻辑代码。
在一种可能的设计中,所述多个算子节点包括初始算子节点、结束算子节点,以及单独算子节点和/或有向无环图(Directed Acyclic Graph,DAG)算子节点;
所述初始算子节点用于接收客户端发送的请求数据包,并对所述请求数据包进行解析,所述结束算子节点用于向所述客户端发送响应数据包,所述单独算子节点用于执行所述多个处理步骤中的一个处理步骤,所述DAG算子节点用于执行所述多个处理步骤中的至少两个处理步骤。
在一种可能的设计中,所述初始算子节点、所述结束算子节点以及所述单独算子节点分别调用一个通用算子;所述DAG算子节点调用至少两个通用算子,其中,所述通用算子为被调用的用于处理不同处理流程的业务的通用化计算算子。
在一种可能的设计中,所述通用算子提供以下接口中的至少一个:
预处理接口、处理接口、后处理接口。
在一种可能的设计中,所述正常触发表示当前节点的业务逻辑正确,向下游节点进行正常触发;所述异常触发表示所述当前节点的业务逻辑不正确,向下游节点进行异常触发;所述跳过触发表示上游节点异常触发时,跳过当前节点,并向下游节点进行跳过触发。
第二方面,本发明实施例提供一种代码生成装置,其特征在于,包括:
获取模块,用于获取待处理业务的处理流程对应的多个算子节点,所述处理流程包括多个处理步骤,每个算子节点用于执行所述多个处理步骤中的至少一个处理步骤;
所述获取模块,还用于根据所述待处理业务的处理流程,获取所述多个算子节点对应的框架图,所述框架图为对所述多个算子节点进行图形化操作得到的;
处理模块,用于对所述框架图进行配置化处理,生成所述待处理业务对应的业务逻辑代码。
在一种可能的设计中,所述获取模块,具体用于:
根据所述待处理业务的处理流程,获取所述多个算子节点之间的关联依赖关系,所述关联依赖关系用于表示所述多个算子节点之间的触发关系,其中,所述关联依赖关系包括需求依赖和选择依赖,所述需求依赖表示上游节点正常触发时,执行当前节点,以及上游节点异常触发或跳过触发时,跳过当前节点并向下游节点进行触发,所述选择依赖表示上游节点为正常触发或异常触发或跳过触发时,执行当前节点;
根据所述关联依赖关系,通过图形化操作获取所述框架图。
在一种可能的设计中,所述处理模块,具体用于:
根据所述框架图,生成所述框架图对应的配置文件;
根据所述待处理业务,在所述配置文件中配置每个算子节点的属性参数,获取新的配置文件;
根据所述新的配置文件,生成所述待处理业务对应的业务逻辑代码。
在一种可能的设计中,所述多个算子节点包括初始算子节点、结束算子节点,以及单独算子节点和/或有向无环图DAG算子节点;
所述初始算子节点用于接收客户端发送的请求数据包,并对所述请求数据包进行解析,所述结束算子节点用于向所述客户端发送响应数据包,所述单独算子节点用于执行所述多个处理步骤中的一个处理步骤,所述DAG算子节点用于执行所述多个处理步骤中的至少两个处理步骤。
在一种可能的设计中,所述初始算子节点、所述结束算子节点以及所述单独算子节点分别调用一个通用算子;所述DAG算子节点调用至少两个通用算子,其中,所述通用算子为被调用的用于处理不同处理流程的业务的通用化计算算子。
在一种可能的设计中,所述通用算子提供以下接口中的至少一个:
预处理接口、处理接口、后处理接口。
在一种可能的设计中,所述正常触发表示当前节点的业务逻辑正确,向下游节点进行正常触发;所述异常触发表示所述当前节点的业务逻辑不正确,向下游节点进行异常触发;所述跳过触发表示上游节点异常触发时,跳过当前节点,并向下游节点进行跳过触发。
第三方面,本发明实施例提供一种终端,包括:
存储器和处理器;
所述存储器,用于存储程序代码;
所述处理器,用于调用所述程序代码执行如第一方面本发明实施例所述的代码生成方法。
第四方面,本发明实施例提供一种可读存储介质,所述可读存储介质上存储有计算机程序;所述计算机程序在被执行时,实现如第一方面本发明实施例所述的代码生成方法。
本发明实施例提供一种代码生成方法和装置,该方法包括:获取待处理业务的处理流程对应的多个算子节点,处理流程包括多个处理步骤,每个算子节点用于执行多个处理步骤中的至少一个步骤,根据待处理业务的处理流程,获取多个算子节点对应的框架图,框架图用于表示多个算子节点之间的关联依赖关系,对框架图进行配置化处理,生成待处理业务对应的业务逻辑代码。在本发明实施例中,通过将待处理业务的处理流程抽象成多个算子节点,并采用框架图将多个算子节点进行关联,从而构成了整个后台服务器的连接架构,然后对框架图进行配置化处理,生成业务逻辑代码,大大提升了服务器端代码开发的效率。
附图说明
图1为本发明一实施例提供的代码生成方法的流程图;
图2为本发明一实施例提供的有向无环图算子节点的示意图;
图3为本发明另一实施例提供的代码生成方法的流程图;
图4为本发明一实施例提供的通用算子的示意图;
图5为本发明一实施例提供的有向无环图的示意图;
图6为本发明一实施例提供的代码生成装置的结构示意图;
图7为本发明一实施例提供的终端的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先对本发明实施例涉及的专业术语进行说明:
客户端代码:通常是指带有GUI产品的代码,例如:网页代码、应用程序(Application,APP)代码、电脑客户端代码等终端设备运行的代码。
服务器代码:指没有GUI、运行在服务器后台,并且接收终端设备或后台服务的请求,从而反馈响应的计算机代码。
有向无环图DAG:指任意一条边有方向,且不存在环路的图。
目前的代码生成方案主要是针对客户端的代码生成,主要是通过代码编辑器进行界面视觉元素的拖拽和拼接,构成客户端元素控件的框架代码,然后填充相应的元素响应事件代码,实现客户端代码的生成。然而,这种方案不适用于不带有GUI的后台服务器,针对拥有大量复杂业务的大型后台服务器,目前企业通常投入大量的人力进行代码开发,然而,这会造成服务器代码开发效率低下。
为了解决上述问题,本发明实施例提供一种代码生成方法,该方法包括:获取待处理业务的处理流程对应的多个算子节点,处理流程包括多个处理步骤,每个算子节点用于执行多个处理步骤中的至少一个步骤,根据待处理业务的处理流程,获取多个算子节点对应的框架图,框架图用于表示多个算子节点之间的关联依赖关系,对框架图进行配置化处理,生成待处理业务对应的业务逻辑代码。
在本发明实施例中,通过将待处理业务的处理流程抽象成多个算子节点,并采用框架图将多个算子节点进行关联,从而构成了整个后台服务器的连接架构,然后对框架图进行配置化处理,生成业务逻辑代码,大大提升了服务器端代码开发的效率。
下面采用几个具体实施例对本发明上述实施例的技术方案进行详细说明。
图1为本发明一实施例提供的代码生成方法的流程图,本发明实施例的执行主体可以终端设备,例如电脑、移动终端,本发明实施例对此不做限制。如图1所示,该方法包括以下步骤:
S101、获取待处理业务的处理流程对应的多个算子节点。
在本实施例中,处理流程包括多个处理步骤,每个算子节点用于执行多个处理步骤中的至少一个步骤。其中,待处理业务的处理流程可以是根据功能划分的,即至少一个处理步骤对应一个功能。
举例来说,待处理业务为后台支付业务,根据支付业务的功能划分,后台支付业务的处理流程通常可以包括验证用户身份、验证用户权限、验证用户账号余额、扣款、返回给客户端扣款记录等步骤。将每个步骤映射为一个算子节点,则待处理业务的处理流程可以映射为多个算子节点。当完成上述操作后,即终端设备即可获取待处理业务的处理流程对应的多个算子节点。
在一种可能的设计中,所述多个算子节点包括初始算子节点、结束算子节点,以及单独算子节点和/或DAG算子节点。初始算子节点用于接收客户端发送的请求数据包,并对请求数据包进行解析,结束算子节点用于向客户端发送响应数据包,单独算子节点和所述DAG算子节点用于对待处理业务进行业务处理,具体地,单独算子节点用于执行多个处理步骤中的一个处理步骤,DAG算子节点用于执行多个处理步骤中的至少两个处理步骤。
其中,初始Start算子节点作为初始端,通过该节点可以接收客户端发送的请求request数据包,对该数据包进行字段解析,以支付业务为例,初始算子节点通过对客户端发送的request数据包进行解析,解析出用户的身份,从而完成对用户身份的验证。具体地,对request数据包的解析可以通过预先定义的数据包schema进行解析,数据包schema作为配置文件,可以预先下载load到Start算子节点中,本发明实施例可以采用任何方式实现数据包schema对request数据包的解析,此处不再赘述。
其中,schema即可扩展标记语言架构(XML Schema),以可扩展标记语言为基础的,描述了可扩展标记语言文档的结构。
结束End算子节点作为算子节点的结束端,通过该节点返回响应response数据包给客户端,返回的response数据包采用预先定义的数据包schema进行封装,数据包schema作为配置文件,可以预先下载load到End算子节点中,本发明实施例可以采用任何方式实现数据包schema对response数据包的封装,此处不再赘述。同样以支付业务为例,扣款完成后,End算子节点将response数据包进行封装,返回给客户端,以使客户端能够解析该response数据包,获得本次交易扣款记录,包括扣款金额、扣款时间等信息。
在一种可能的设计中,初始算子节点、结束算子节点以及单独算子节点分别调用一个通用算子;DAG算子节点调用至少两个通用算子。
通用算子指的是通用化的计算算子,适用于各种不同的业务,在代码开发过程中,不用针对每个待处理业务开发不同的计算算子,在本实施例中,通过调用通用算子,可以提高代码开发的效率。
其中,对于数据处理简单的算子节点,如初始算子节点、结束算子节点以及单独算子节点,调用一个通用算子即可,而对于一些复杂的业务处理,比如一个算子节点执行两个处理步骤,则该算子节点可以为DAG算子节点(也称图节点),DAG算子节点需要调用至少两个通用算子,其中,DAG算子节点中通用算子之间是嵌套依赖的关系,例如,需求required依赖、选择optional依赖,具体可以参考后续对算子节点之间的关联依赖关系的相关描述。
图2为本发明一实施例提供的有向无环图算子节点的示意图,如图2所示,该DAG算子节点包括六个通用算子,通用算子之间通过有向边连接。其中,这些有向边可以表示为通用算子之间依赖的关系,如required依赖、optional依赖,具体根据业务的处理流程而定,本发明实施例对此不做限制。需要说明的是,DAG算子节点可以将独立的业务逻辑封装起来,也就是将多个算子节点的逻辑封装起来,易于复用。
需要说明的是,每个通用算子可以进行本地计算,也可以进行外部远程访问,比如访问外部数据库、外部文件等。以支付业务为例,验证用户权限、验证用户账号余额、扣款这几个步骤,可以一一映射为一个Single算子节点,其中,在验证用户权限时,比如,密码验证,可以在本地进行密码验证,还可以访问外部数据库,来验证该用户输入的密码是否和外部数据库中存储的该账户对应的密码一致,如果一致,则用户权限验证通过,如果不一致,则用户权限验证失败,这里需要说明的是,若密码验证正确,则说明该节点的业务逻辑正确。
S102、根据待处理业务的处理流程,获取多个算子节点对应的框架图。
在本实施例中,框架图为对多个算子节点进行图形化操作得到的。得到待处理业务的业务流程对应的多个算子节点后,根据待处理业务的处理流程,图形化操作得到多个算子节点对应的框架图。其中,框架图可以为有向无环图DAG,还可以为星型结构图,本发明实施例对此不做限制。
在该方案的具体实现中,根据待处理业务的处理流程,确定多个算子节点之间的关联依赖关系,然后根据该关联依赖关系,图形化操作得到多个算子节点对应的有向无环图DAG有向无环图DAG。其中,多个算子节点对应的有向无环图DAG与图2所示有向无环DAG算子节点的示意图类似,在此不再赘述。其中,关联依赖关系用于表示多个算子节点之间的触发关系,其中,关联依赖关系包括需求依赖和选择依赖,需求依赖表示上游节点正常触发时,执行当前节点,以及上游节点异常触发或跳过触发时,跳过当前节点并向下游节点进行触发,选择依赖表示上游节点为正常触发或异常触发或跳过触发时,执行当前节点。
S103、对框架图进行配置化处理,生成待处理业务对应的业务逻辑代码。
在本实施例中,获取多个算子节点对应的框架图后,对该框架图进行配置化处理,生成待处理业务对应的业务逻辑代码,具体地,生成该框架图对应的配置文件,然后根据待处理业务的需求,在该配置文件中配置每个算子节点的属性参数,从而获取新的配置文件,然后根据新的配置文件,生成待处理业务对应的业务逻辑代码。
其中,算子节点的属性参数可以包括算子节点的名称、调用的通用算子、调用的通用算子的功能、算子节点的上游节点和下游节点等参数,可以根据待处理业务的处理流程,动态调整各个属性参数,本发明实施例对此不做限制。当然,本领域技术人员可以采用任何方式实现根据新的配置文件,自动生成待处理业务对应的业务逻辑代码,此处不再赘述。
本实施例提供的代码生成方法,获取待处理业务的处理流程对应的多个算子节点,处理流程包括多个处理步骤,每个算子节点用于执行多个处理步骤中的至少一个步骤,根据待处理业务的处理流程,获取多个算子节点对应的框架图,框架图用于表示多个算子节点之间的关联依赖关系,对框架图进行配置化处理,生成待处理业务对应的业务逻辑代码。在本发明实施例中,通过将待处理业务的处理流程抽象成多个算子节点,并采用框架图将多个算子节点进行关联,从而构成了整个后台服务器的连接架构,然后对框架图进行配置化处理,生成业务逻辑代码,大大提升了服务器端代码开发的效率。
在上述实施例的基础上,图3为本发明另一实施例提供的代码生成方法的流程图,如图3所示,该方法具体包括以下步骤:
S201、获取待处理业务的处理流程对应的多个算子节点。
在本实施例中,多个算子节点包括初始算子节点、结束算子节点,以及单独算子节点和/或DAG算子节点。初始算子节点、结束算子节点以及单独算子节点分别调用一个通用算子,DAG算子节点调用至少两个通用算子。其中,通用算子指的是通用化的计算算子,适用于各种不同的业务,在代码开发过程中,不用针对每个待处理业务开发不同的计算算子,在本实施例中,通过调用通用算子,可以提高代码开发的效率。
进一步地,为了提高通用算子的通用性,通用算子提供以下接口中的至少一个:预处理接口、处理接口、后处理接口。
图4为本发明一实施例提供的通用算子的示意图,如图4所示,通用算子提供的接口包括预处理接口、处理接口、后处理接口。
其中,处理接口in_process()为预先定义好的通用逻辑,可以根据实际需求(待处理业务的处理流程)调整参数;预处理接口pre_process()、后处理接口post_process()为定制化接口,可以进行压缩、格式转换等操作。举例来说,Start算子节点可以用于验证用户权限,Start算子节点调用一个通用算子,该通用算子提供的接口包括pre_process()、in_process()、post_process(),若客户端发送的request数据包为加密数据包,则pre_process()可以用于解压缩,然后在in_process()中验证用户权限,接着在post_process()中对数据进行格式转换、压缩等操作,之后触发下游节点。
需要说明的是,算子节点提供的接口中也可以不包括in_process(),直接通过预处理接口pre_process()、后处理接口post_process(),然后触发下游节点。具体根据待处理业务而定,本发明实施例对此不做限制。
S202、根据待处理业务的处理流程,获取所述多个算子节点之间的关联依赖关系。
其中,关联依赖关系用于表示多个算子节点之间的触发关系,其中,关联依赖关系用于表示多个算子节点之间的触发关系,其中,关联依赖关系包括需求required依赖和选择optional依赖,需求依赖表示上游节点正常触发时,执行当前节点,以及上游节点异常触发或跳过触发时,跳过当前节点并向下游节点进行触发,选择依赖表示上游节点为正常触发或异常触发或跳过触发时,执行当前节点,即无论上游节点为什么触发,都要执行当前节点。
正常触发表示当前节点的业务逻辑正确,向下游节点进行正常触发;异常触发表示当前节点的业务逻辑不正确,向下游节点进行异常触发;跳过触发表示上游节点异常触发时,跳过当前节点,并向下游节点进行跳过触发,告诉下游节点“当前节点跳过”。
在上述实施例中,以支付业务为例,支付业务的处理流程包括验证用户身份、验证用户权限、验证用户账号余额、扣款、返回给客户端扣款,这几个步骤均可以一一映射为single算子节点,然后根据支付业务的处理流程,确定single算子节点之间的关联依赖关系可以为required依赖和/或optional依赖。若验证用户身份对应的算子节点(上游节点)和验证用户权限对应的single算子节点(当前节点)为required依赖,当上游节点业务逻辑正确时(也就是验证出用户身份正确时),才可以向下游节点进行正常触发,若上游节点业务逻辑不正确(也就是验证出用户身份不正确),当前节点可以直接跳过,之后向验证用户账号余额对应的下游节点进行触发,也就是说可以跳过验证用户权限,直接验证用户账号余额。
或者,验证用户身份对应的算子节点(上游节点)和验证用户权限对应的single算子节点(当前节点)为optional依赖,无论上游节点属于什么触发模式,当前节点都要执行。
需要说明的是,多个算子节点之间的关联依赖关系是根据待处理业务的处理流程而定的,本发明实施例对此不做限制。
S203、根据所述关联依赖关系,通过图形化操作获取框架图。
在本实施例中,根据算子节点之间的关联依赖关系,通过图像化操作能够绘制框架图。在一种可能的设计中,框架图为有向无环图DAG。图5为本发明一实施例提供的有向无环图的示意图,如图5所示,该有向无环图DAG包括四个算子节点,分别为Start算子节点、End算子节点、Echo算子节点(在图5中表示为算子节点1)、Echo2算子节点(在图5中表示为算子节点2),各个算子节点通过关联依赖关系连接,Echo算子节点和Echo2算子节点的上游节点为Start算子节点、下游节点为End算子节点,Echo算子节点、Echo2算子节点分别和Start算子节点为required依赖,End算子节点和Echo算子节点为required依赖,End算子节点和Echo2算子节点为optional依赖。
其中,Echo算子节点、Echo2算子节点可以为Single算子节点或者DAG算子节点。
S204、根据框架图,生成框架图对应的配置文件。
S205、根据待处理业务,在配置文件中配置每个算子节点的属性参数,获取新的配置文件。
以图5中的有向无环图DAG为例,新的配置文件如下:
[@Node]
Name:start //算子节点名称
so:start.so //通用算子所在so
reg_name:Start //通用算子的注册方法
to:echo、echo2 //下游节点
[@Node]
Name:end
so:end.so
reg_name:End
from:echo、echo2 //上游节点
[@Node]
Name:echo
so:echo.so
reg_name:Echo
from:start
to:end
[@Node]
Name:echo2
so:echo2.so
reg_name:Echo2
from:start
to:end
其中,Name:start表示算子节点名称为start;
so:start.so表示通用算子所在的共享库(share object library,so),其中,so中封装了多个通用算子的功能,可以根据实际业务需求配置;
reg_name:Start表示通用算子的注册方法,也就是从so中匹配名称为Start的通用算子,可以根据实际业务需求配置;
to:echo、echo2表示该节点的下游节点为echo、echo2;
from:echo、echo2表示该节点的上游节点为echo、echo2;
其中,算子节点的属性参数包括算子节点的功能参数,以start算子节点为例,用于解析客户端发送request数据包,则需要获取解析数据的功能,即将so配置为解析数据的so,之后才能从so中匹配名称为Start的通用算子。
算子节点的属性参数还包括具体项目参数,例如:外部服务的IP地址、端口以及本地词典配置参数等,上述配置文件中未示出具体项目参数。
同样以start算子节点为例,start算子节点用于接收客户端发送的request数据包,因此,需要配置start算子节点外部服务的IP地址、端口。另外,由于request数据包schema以电子词典的形式存储在start算子节点中,在解析request数据包时,由于数据包格式未知,服务器不知道如何解析,则需要配置电子词典,读取request数据包的schema,然后对request数据包进行解析,因此还需要对本地词典进行配置。本发明实施例不对需要配置的算子节点的属性参数做限制,以实际业务需求而定即可。
S206、根据新的配置文件,生成待处理业务对应的业务逻辑代码。
在本实施例中,本领域技术人员可以采用任何方式实现根据配置好的配置文件,自动生成待处理业务对应的业务逻辑代码,此处不再赘述。
本实施例提供的代码的生成方法,获取待处理业务的处理流程对应的多个算子节点,根据待处理业务的处理流程,获取多个算子节点之间的关联依赖关系,关联依赖关系用于表示所述多个算子节点之间的触发关系,根据关联依赖关系,通过图形化操作获取框架图,根据框架图,生成框架图对应的配置文件,根据待处理业务,在配置文件中配置每个算子节点的属性参数,获取新的配置文件,根据新的配置文件,生成待处理业务对应的业务逻辑代码。在本发明实施例中,通过将待处理业务的处理流程抽象成多个算子节点,并采用框架图将多个算子节点进行关联,从而构成了整个后台服务器的连接架构,然后对框架图进行配置化处理,生成业务逻辑代码,大大提升了服务器端代码开发的效率。
图6为本发明一实施例提供的代码生成装置的结构示意图,如图6所示。本实施例提供的代码生成装置10包括:
获取模块11,用于获取待处理业务的处理流程对应的多个算子节点,所述处理流程包括多个处理步骤,每个算子节点用于执行所述多个处理步骤中的至少一个处理步骤;
所述获取模块11,还用于根据所述待处理业务的处理流程,获取所述多个算子节点对应的框架图,所述框架图为对所述多个算子节点进行图形化操作得到的;
处理模块12,用于对所述框架图进行配置化处理,生成所述待处理业务对应的业务逻辑代码。
在一种可能的设计中,所述获取模块11,具体用于:
根据所述待处理业务的处理流程,获取所述多个算子节点之间的关联依赖关系,所述关联依赖关系用于表示所述多个算子节点之间的触发关系,其中,所述关联依赖关系包括需求依赖和选择依赖,所述需求依赖表示上游节点正常触发时,执行当前节点,以及上游节点异常触发或跳过触发时,跳过当前节点并向下游节点进行触发,所述选择依赖表示上游节点为正常触发或异常触发或跳过触发时,执行当前节点;
根据所述关联依赖关系,通过图形化操作获取所述框架图。
在一种可能的设计中,所述处理模块12,具体用于:
根据所述框架图,生成所述框架图对应的配置文件;
根据所述待处理业务,在所述配置文件中配置每个算子节点的属性参数,获取新的配置文件;
根据所述新的配置文件,生成所述待处理业务对应的业务逻辑代码。
在一种可能的设计中,所述多个算子节点包括初始算子节点、结束算子节点,以及单独算子节点和/或有向无环图DAG算子节点;
所述初始算子节点用于接收客户端发送的请求数据包,并对所述请求数据包进行解析,所述结束算子节点用于向所述客户端发送响应数据包,所述单独算子节点用于执行所述多个处理步骤中的一个处理步骤,所述DAG算子节点用于执行所述多个处理步骤中的至少两个处理步骤。
在一种可能的设计中,所述初始算子节点、所述结束算子节点以及所述单独算子节点分别调用一个通用算子;所述DAG算子节点调用至少两个通用算子,其中,所述通用算子为被调用的用于处理不同处理流程的业务的通用化计算算子。
在一种可能的设计中,所述通用算子提供以下接口中的至少一个:
预处理接口、处理接口、后处理接口。
在一种可能的设计中,所述正常触发表示当前节点的业务逻辑正确,向下游节点进行正常触发;所述异常触发表示所述当前节点的业务逻辑不正确,向下游节点进行异常触发;所述跳过触发表示上游节点异常触发时,跳过当前节点,并向下游节点进行跳过触发。
本实施例的代码生成装置,可以用于执行上述各方法实施例中的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本发明一实施例提供的终端的结构示意图,如图7所示,本实施例的终端20可以包括:存储器21和处理器22。其中,存储器21与处理器22例如可以通过总线23连接。
所述存储器21,用于存储程序代码;
所述处理器222,用于通过执行所述计算机程序来实现前述方法实施例中任一实现方式提供的代码生成方法。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法实施例中任一实现方式提供的代码生成方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtEndedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种代码生成方法,其特征在于,包括:
获取待处理业务的处理流程对应的多个算子节点,所述处理流程包括多个处理步骤,每个算子节点用于执行所述多个处理步骤中的至少一个处理步骤;
根据所述待处理业务的处理流程,获取所述多个算子节点对应的框架图,所述框架图为对所述多个算子节点进行图形化操作得到的;
对所述框架图进行配置化处理,生成所述待处理业务对应的业务逻辑代码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待处理业务的处理流程,获取所述多个算子节点对应的框架图,包括:
根据所述待处理业务的处理流程,获取所述多个算子节点之间的关联依赖关系,所述关联依赖关系用于表示所述多个算子节点之间的触发关系,其中,所述关联依赖关系包括需求依赖和选择依赖,所述需求依赖表示上游节点正常触发时,执行当前节点,以及上游节点异常触发或跳过触发时,跳过当前节点并向下游节点进行触发,所述选择依赖表示上游节点为正常触发或异常触发或跳过触发时,执行当前节点;
根据所述关联依赖关系,通过图形化操作获取所述框架图。
3.根据权利要求1所述的方法,其特征在于,所述对所述框架图进行配置化处理,生成所述待处理业务对应的业务逻辑代码,包括:
根据所述框架图,生成所述框架图对应的配置文件;
根据所述待处理业务,在所述配置文件中配置每个算子节点的属性参数,获取新的配置文件;
根据所述新的配置文件,生成所述待处理业务对应的业务逻辑代码。
4.根据权利要求1所述的方法,其特征在于,所述多个算子节点包括初始算子节点、结束算子节点,以及单独算子节点和/或有向无环图DAG算子节点;
所述初始算子节点用于接收客户端发送的请求数据包,并对所述请求数据包进行解析,所述结束算子节点用于向所述客户端发送响应数据包,所述单独算子节点用于执行所述多个处理步骤中的一个处理步骤,所述DAG算子节点用于执行所述多个处理步骤中的至少两个处理步骤。
5.根据权利要求4所述的方法,其特征在于,所述初始算子节点、所述结束算子节点以及所述单独算子节点分别调用一个通用算子,所述DAG算子节点调用至少两个通用算子,其中,所述通用算子为被调用的用于处理不同处理流程的业务的通用化计算算子。
6.根据权利要求5所述的方法,其特征在于,所述通用算子提供以下接口中的至少一个:
预处理接口、处理接口、后处理接口。
7.根据权利要求2所述的方法,其特征在于,所述正常触发表示当前节点的业务逻辑正确,向下游节点进行正常触发;所述异常触发表示所述当前节点的业务逻辑不正确,向下游节点进行异常触发;所述跳过触发表示上游节点异常触发时,跳过当前节点,并向下游节点进行跳过触发。
8.一种代码生成装置,其特征在于,包括:
获取模块,用于获取待处理业务的处理流程对应的多个算子节点,所述处理流程包括多个处理步骤,每个算子节点用于执行所述多个处理步骤中的至少一个处理步骤;
所述获取模块,还用于根据所述待处理业务的处理流程,获取所述多个算子节点对应的框架图,所述框架图为对所述多个算子节点进行图形化操作得到的;
处理模块,用于对所述框架图进行配置化处理,生成所述待处理业务对应的业务逻辑代码。
9.一种终端,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序代码;
所述处理器,用于调用所述程序代码执行如权利要求1-7任意一项所述的代码生成方法。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序;所述计算机程序在被执行时,实现如权利要求1-7任意一项所述的代码生成方法。
CN201910507093.XA 2019-06-12 2019-06-12 代码生成方法和装置 Pending CN110297632A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910507093.XA CN110297632A (zh) 2019-06-12 2019-06-12 代码生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910507093.XA CN110297632A (zh) 2019-06-12 2019-06-12 代码生成方法和装置

Publications (1)

Publication Number Publication Date
CN110297632A true CN110297632A (zh) 2019-10-01

Family

ID=68027909

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910507093.XA Pending CN110297632A (zh) 2019-06-12 2019-06-12 代码生成方法和装置

Country Status (1)

Country Link
CN (1) CN110297632A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908644A (zh) * 2019-10-16 2020-03-24 浙江大搜车软件技术有限公司 状态节点的配置方法、装置、计算机设备和存储介质
CN111125451A (zh) * 2019-12-25 2020-05-08 北京百度网讯科技有限公司 数据生产加工方法、装置、电子设备及存储介质
CN111399827A (zh) * 2020-03-09 2020-07-10 北京国信会视科技有限公司 一种传感器数据处理的描述性对象代码自动生成方法
CN111488495A (zh) * 2020-04-14 2020-08-04 北京字节跳动网络技术有限公司 信息处理方法及设备
CN112148353A (zh) * 2020-09-22 2020-12-29 京东数字科技控股股份有限公司 一种数据处理方法及装置
CN112199086A (zh) * 2020-09-18 2021-01-08 北京达佳互联信息技术有限公司 自动编程控制***、方法、装置、电子设备及存储介质
CN112270413A (zh) * 2020-10-22 2021-01-26 北京百度网讯科技有限公司 算子合并方法、装置、电子设备及存储介质
CN112685154A (zh) * 2020-12-25 2021-04-20 北京有竹居网络技术有限公司 任务流引擎的数据处理方法、任务流引擎、设备和介质
CN112783614A (zh) * 2021-01-20 2021-05-11 北京百度网讯科技有限公司 对象处理方法、装置、设备、存储介质以及程序产品
CN112799797A (zh) * 2019-11-14 2021-05-14 北京沃东天骏信息技术有限公司 一种任务管理的方法和装置
CN112825525A (zh) * 2019-11-20 2021-05-21 北京百度网讯科技有限公司 用于处理事务的方法和装置
CN112835564A (zh) * 2021-01-27 2021-05-25 北京海博思创科技股份有限公司 代码生成方法和装置
CN113031929A (zh) * 2021-04-29 2021-06-25 中国工商银行股份有限公司 一种业务的实现方法及装置
CN113282287A (zh) * 2020-02-20 2021-08-20 阿里巴巴集团控股有限公司 业务逻辑的处理方法、装置及电子设备
CN113760394A (zh) * 2020-06-03 2021-12-07 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591654A (zh) * 2011-12-28 2012-07-18 方正国际软件有限公司 一种基于ssh架构的代码生成器及方法
CN103870260A (zh) * 2012-12-14 2014-06-18 腾讯科技(深圳)有限公司 业务接口开发的方法及***
US20170177312A1 (en) * 2015-12-18 2017-06-22 International Business Machines Corporation Dynamic recompilation techniques for machine learning programs
CN107463595A (zh) * 2017-05-12 2017-12-12 中国科学院信息工程研究所 一种基于Spark的数据处理方法及***
CN108628605A (zh) * 2018-04-28 2018-10-09 百度在线网络技术(北京)有限公司 流式数据处理方法、装置、服务器和介质
CN109799991A (zh) * 2017-11-16 2019-05-24 中标软件有限公司 基于MapReduce框架分布式计算环境的源代码编译方法及***
CN109814986A (zh) * 2017-11-20 2019-05-28 上海寒武纪信息科技有限公司 任务并行处理方法、存储介质、计算机设备、装置和***
CN109857667A (zh) * 2019-02-03 2019-06-07 苏州市龙测智能科技有限公司 接口自动化测试方法、测试装置、测试设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591654A (zh) * 2011-12-28 2012-07-18 方正国际软件有限公司 一种基于ssh架构的代码生成器及方法
CN103870260A (zh) * 2012-12-14 2014-06-18 腾讯科技(深圳)有限公司 业务接口开发的方法及***
US20170177312A1 (en) * 2015-12-18 2017-06-22 International Business Machines Corporation Dynamic recompilation techniques for machine learning programs
CN107463595A (zh) * 2017-05-12 2017-12-12 中国科学院信息工程研究所 一种基于Spark的数据处理方法及***
CN109799991A (zh) * 2017-11-16 2019-05-24 中标软件有限公司 基于MapReduce框架分布式计算环境的源代码编译方法及***
CN109814986A (zh) * 2017-11-20 2019-05-28 上海寒武纪信息科技有限公司 任务并行处理方法、存储介质、计算机设备、装置和***
CN108628605A (zh) * 2018-04-28 2018-10-09 百度在线网络技术(北京)有限公司 流式数据处理方法、装置、服务器和介质
CN109857667A (zh) * 2019-02-03 2019-06-07 苏州市龙测智能科技有限公司 接口自动化测试方法、测试装置、测试设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
周永江: "基于SCA的物联网服务***中事件处理平台的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908644A (zh) * 2019-10-16 2020-03-24 浙江大搜车软件技术有限公司 状态节点的配置方法、装置、计算机设备和存储介质
CN110908644B (zh) * 2019-10-16 2023-12-12 浙江大搜车软件技术有限公司 状态节点的配置方法、装置、计算机设备和存储介质
CN112799797B (zh) * 2019-11-14 2024-04-16 北京沃东天骏信息技术有限公司 一种任务管理的方法和装置
CN112799797A (zh) * 2019-11-14 2021-05-14 北京沃东天骏信息技术有限公司 一种任务管理的方法和装置
CN112825525A (zh) * 2019-11-20 2021-05-21 北京百度网讯科技有限公司 用于处理事务的方法和装置
CN111125451A (zh) * 2019-12-25 2020-05-08 北京百度网讯科技有限公司 数据生产加工方法、装置、电子设备及存储介质
CN113282287A (zh) * 2020-02-20 2021-08-20 阿里巴巴集团控股有限公司 业务逻辑的处理方法、装置及电子设备
CN111399827A (zh) * 2020-03-09 2020-07-10 北京国信会视科技有限公司 一种传感器数据处理的描述性对象代码自动生成方法
CN111399827B (zh) * 2020-03-09 2023-01-24 北京国信会视科技有限公司 一种传感器数据处理的描述性对象代码自动生成方法
CN111488495A (zh) * 2020-04-14 2020-08-04 北京字节跳动网络技术有限公司 信息处理方法及设备
CN113760394A (zh) * 2020-06-03 2021-12-07 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及存储介质
CN112199086A (zh) * 2020-09-18 2021-01-08 北京达佳互联信息技术有限公司 自动编程控制***、方法、装置、电子设备及存储介质
CN112148353A (zh) * 2020-09-22 2020-12-29 京东数字科技控股股份有限公司 一种数据处理方法及装置
CN112148353B (zh) * 2020-09-22 2024-05-17 京东科技控股股份有限公司 一种数据处理方法及装置
CN112270413A (zh) * 2020-10-22 2021-01-26 北京百度网讯科技有限公司 算子合并方法、装置、电子设备及存储介质
CN112270413B (zh) * 2020-10-22 2024-02-27 北京百度网讯科技有限公司 算子合并方法、装置、电子设备及存储介质
WO2022135079A1 (zh) * 2020-12-25 2022-06-30 北京有竹居网络技术有限公司 任务流引擎的数据处理方法、任务流引擎、设备和介质
CN112685154A (zh) * 2020-12-25 2021-04-20 北京有竹居网络技术有限公司 任务流引擎的数据处理方法、任务流引擎、设备和介质
CN112783614A (zh) * 2021-01-20 2021-05-11 北京百度网讯科技有限公司 对象处理方法、装置、设备、存储介质以及程序产品
CN112835564A (zh) * 2021-01-27 2021-05-25 北京海博思创科技股份有限公司 代码生成方法和装置
CN113031929A (zh) * 2021-04-29 2021-06-25 中国工商银行股份有限公司 一种业务的实现方法及装置
CN113031929B (zh) * 2021-04-29 2024-04-09 中国工商银行股份有限公司 一种业务的实现方法及装置

Similar Documents

Publication Publication Date Title
CN110297632A (zh) 代码生成方法和装置
CN108415832B (zh) 接口自动化测试方法、装置、设备及存储介质
WO2020029375A1 (zh) 接口测试方法、***、计算机设备和存储介质
CN111083225A (zh) 在物联网平台中的数据处理方法、装置及物联网平台
CN110032511A (zh) 一种接口测试方法及接口测试设备
CN111343181B (zh) 报文的处理方法,***以及数据池和计算机可读存储介质
CN104360937A (zh) 一种智能参数校验装置
CN110210845B (zh) 用于区块链数据迁移的方法、装置、介质和计算设备
CN106843818B (zh) 一种业务模型生成方法及装置
CN106503111A (zh) 网页转码方法、装置及客户终端
CN114217887A (zh) 微服务编排方法、执行方法、装置及服务器
CN112348326A (zh) 一种银行业务处理方法和***
CN113127108A (zh) 业务请求的处理方法及装置、存储介质以及电子设备
CN111415146A (zh) 资源数据的处理方法、装置及设备
CN111651140A (zh) 基于工作流的服务方法及装置
CN114500640A (zh) 报文生成方法及发送方法、装置、电子设备和介质
CN109816462A (zh) 一种***信息的识别方法及装置
CN109858874A (zh) 一种多场景下付款审批流程配置方法及装置
CN109670952B (zh) 一种代收付交易平台
CN106897060A (zh) 基于图形化的数据处理方法及装置
CN115391343A (zh) 账单数据处理方法、装置、电子设备和存储介质
CN111953540B (zh) 一种报文生成方法、装置、电子设备及存储介质
CN107797793A (zh) 一种构建代理服务器框架的方法和装置
CN107610383A (zh) 一种开票客户端、***信息维护端及***开具方法
CN108076067B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191001

RJ01 Rejection of invention patent application after publication