一种基于无代码应用开发的面向对象编程方法与流程

文档序号:30703742发布日期:2022-07-09 21:05阅读:105来源:国知局
一种基于无代码应用开发的面向对象编程方法与流程

1.本发明属于计算机软件技术领域,具体涉及一种基于无代码应用开发的面向对象编程方法。


背景技术:

2.无代码应用开发是一种研发业务应用的方法,开发人员通过在图形界面中使用可视化组件完成建模和搭建应用程序的工作。但无代码应用开发如果要满足个性化复杂逻辑和提供完整的编写代码所支持的功能,仍然需要使用编程的方式来满足需求。
3.目前基于无代码应用开发实现个性化逻辑的编程方法主要分为三类:第一类是为无代码搭建的应用程序的界面操作预留配置点,通过将配置点可自定义的部分使用配置的方式来完成个性化逻辑的设置。这种方式不支持直接编写代码,需要枚举个性化的场景,所以可支持个性化的业务逻辑非常局限。
4.第二类是通过在图形界面中拖拽可视化组件编写出配置文件,通过执行配置文件实现个性化业务逻辑。这种方式编写出的业务逻辑往往十分简单,无法处理超出配置文件所提供对应功能范围的业务。如果通过拖拽可视化组件可以搭建出处理复杂业务的配置文件,则要求配置文件所提供对应功能与直接执行代码等价。那么这种方式的编写过程会变得非常复杂,与直接使用编程知识编写代码相比,反而降低了研发业务应用的效率。
5.第三类是通过在客户端编写客户端脚本,调用服务端提供的自定义接口来处理个性化逻辑。开发人员需要了解在客户端编写客户端脚本的相关知识和服务端接口的所有细节,降低了无代码应用开发的效率。


技术实现要素:

6.有鉴于此,本发明的目的在于克服现有技术的不足,提供一种基于无代码应用开发的面向对象编程方法,以解决现有技术中基于无代码应用开发支持个性化的业务逻辑非常局限,以及开发个性化复杂的业务逻辑效率低的问题。
7.根据本技术实施例的第一方面,提供一种基于无代码应用开发的面向对象编程方法,所述方法包括:建立元数据与代码元素之间的映射关系,所述代码元素为基于面向对象编程编写的代码中的元素;根据所述映射关系获取编程式模块;搭建无代码模块;根据所述无代码模块和所述映射关系,获取编程式扩展无代码模块;部署所述编程式模块、所述无代码模块和所述编程式扩展无代码模块,以使所述编程式模块、所述无代码模块和所述编程式扩展无代码模块分别对外提供服务。
8.优选的,所述元数据包括:模型、字段、动作和视图;所述代码元素包括:类、属性、控制器和模板。
9.优选的,所述建立元数据与代码元素之间的映射关系,包括:分别建立所述模型与所述类、所述字段与所述属性、所述动作与所述控制器、所述视图与所述模板之间的映射关系,即所述模型中包含其对应的类的唯一类名,所述字段中包含其对应的属性的唯一属性名,所述动作中包含其对应的控制器的唯一方法声明,所述视图中包含其对应的模板的唯一模板名。
10.优选的,所述根据所述映射关系获取编程式模块,包括:基于所述映射关系,利用面向对象编程方式编写类、属性、控制器和模板的代码,得到第一代码;将所述第一代码打包成编程式模块。
11.优选的,所述搭建无代码模块,包括:创建无代码模块;利用拖拽可视化组件的方式搭建所述无代码模块,以生成所述无代码模块对应的元数据,并将所述无代码模块对应的元数据注册到元数据中心。
12.优选的,所述根据所述无代码模块和所述映射关系,获取编程式扩展无代码模块,包括:利用元数据中心的所述无代码模块对应的元数据生成sdk包;基于所述sdk包,根据所述映射关系并利用面向对象编程方式编写类、属性、控制器和模板的代码,得到第二代码;将所述第二代码打包成所述编程式扩展无代码模块。
13.优选的,所述部署所述编程式模块,以使所述编程式模块对外提供服务,包括:部署所述编程式模块;所述编程式模块在启动时,先从元数据中心获取最近一次发布的元数据,然后扫描所述第一代码以获取所述第一代码中的元数据定义,并利用所述第一代码中的元数据定义对所述最近一次发布的元数据进行升级更新;所述编程式模块将升级更新后的所述最近一次发布的元数据注册到元数据中心,以使所述编程式模块根据升级更新后的所述最近一次发布的元数据对外提供服务。
14.优选的,所述部署所述无代码模块,以使所述无代码模块对外提供服务,包括:部署所述无代码模块;所述无代码模块在启动时,从元数据中心获取所述无代码模块对应的元数据,以根据所述无代码模块对应的元数据对外提供服务。
15.优选的,所述部署所述编程式扩展无代码模块,以使所述编程式扩展无代码模块对外提供服务,包括:部署所述编程式扩展无代码模块;所述编程式扩展无代码模块在启动时,先从元数据中心获取最近一次发布的元数据,然后扫描所述第二代码以获取所述第二代码中的元数据定义,并利用所述第二代码中的元数据定义对所述最近一次发布的元数据进行升级更新;所述编程式扩展无代码模块将升级更新后的所述最近一次发布的元数据注册到元数据中心,以使所述编程式模块根据升级更新后的所述最近一次发布的元数据对外提供服务。
16.优选的,所述元数据中心,用于进行元数据的注册和查询服务。
17.本发明采用以上技术方案,能够达到的有益效果包括:通过建立元数据与代码元素之间的映射关系,且由于代码元素为基于面向对象编程编写的代码中的元素,从而为基于无代码应用开发的面向对象编程方法提供了一个约定,以使开发人员不需要了解所有数据结构和接口细节就可以完成个性化功能;通过根据映射关系获取编程式模块,搭建无代码模块,根据无代码模块和映射关系,获取编程式扩展无代码模块,通过部署编程式模块、无代码模块和编程式扩展无代码模块,以使编程式模块、无代码模块和编程式扩展无代码模块分别对外提供服务,不仅可以将无代码应用开发与面向对象编程有效结合以完成各种个性化复杂业务逻辑,还使开发人员尽可能少的使用或者不用编程知识就可以搭建出应用软件,提升了开发人员研发业务应用的效率。
附图说明
18.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1是根据一示例性实施例示出的一种基于无代码应用开发的面向对象编程方法的流程图;图2是根据一示例性实施例示出的建立元数据与代码元素之间的映射关系的示意图;图3是根据一示例性实施例示出的部署编程式模块的示意图;图4是根据一示例性实施例示出的部署无代码模块的示意图;图5是根据一示例性实施例示出的部署编程式扩展无代码模块的示意图。
具体实施方式
20.为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
21.实施例一图1是根据一示例性实施例示出的一种基于无代码应用开发的面向对象编程方法的流程图,如图1所示,该方法可以但不限于用于终端中,包括以下步骤:步骤101:建立元数据与代码元素之间的映射关系,代码元素为基于面向对象编程编写的代码中的元素;步骤102:根据映射关系获取编程式模块;步骤103:搭建无代码模块;步骤104:根据无代码模块和映射关系,获取编程式扩展无代码模块;步骤105:部署编程式模块、无代码模块和编程式扩展无代码模块,以使编程式模块、无代码模块和编程式扩展无代码模块分别对外提供服务。
22.一些实施例中,对外提供的服务可以但不限于为页面交互、数据提交和表单录入等。
23.本发明实施例提供的一种基于无代码应用开发的面向对象编程方法,通过建立元数据与代码元素之间的映射关系,且由于代码元素为基于面向对象编程编写的代码中的元素,从而为基于无代码应用开发的面向对象编程方法提供了一个约定,以使开发人员不需要了解所有数据结构和接口细节就可以完成个性化功能;通过根据映射关系获取编程式模块,搭建无代码模块,根据无代码模块和映射关系,获取编程式扩展无代码模块,通过部署编程式模块、无代码模块和编程式扩展无代码模块,以使编程式模块、无代码模块和编程式扩展无代码模块分别对外提供服务,不仅可以将无代码应用开发与面向对象编程有效结合以完成各种个性化复杂业务逻辑,还使开发人员尽可能少的使用或者不用编程知识就可以搭建出应用软件,提升了开发人员研发业务应用的效率。
24.进一步的,元数据包括:模型、字段、动作和视图;代码元素包括:类、属性、控制器和模板。
25.需要说明的是,编程式模块、无代码模块和编程式扩展无代码模块实质上也是元数据,即元数据是包含模块的,元数据中的模块是拥有唯一命名空间和独立完成一组程序代码功能的集合,模块可以独立对外提供服务。所以模块中包含在同一模块命名空间的模型、字段、动作和视图。本发明实施例中的代码模块是通过无代码应用开发方式构建的程序功能集合。编程式模块是通过编写代码构建的程序功能集合。编程式扩展无代码模块是通过编写代码扩展无代码方式构建模块的程序功能集合。
26.元数据中的模型是对所需要描述的业务实体进行必要的简化与抽象,并用适当的变换形式与规则描述其主要特征所得到的软件系统模仿品。模型由唯一命名、字段、动作和视图构成。模型是应用程序中定义数据特征的数据结构和承载数据传输的数据容器。通过模型可以描述出逻辑处理、端到端接口的数据结构。开发人员在编写逻辑和接口时,不需要再次定义数据结构,只需要使用模型的唯一命名引用模型复用模型定义好的数据结构即可。元数据中的模型所完成功能与面向对象编程中的类(class)一致。
27.元数据中的字段描述的是业务实体的特征属性。字段分为基本类型字段和关联关系类型字段。基本类型包括:数字、文本、布尔、日期时间、枚举和键值对。基本类型字段描述的是模型本身的特征。关联关系类型包括:一对一关系、一对多关系、多对多关系和多对多关系。关联关系类型字段描述的是模型与关联模型之间的关系。通过关联关系类型字段可以描述出一种树状结构的数据结构。
28.元数据中的动作描述的是应用程序中业务逻辑处理规则、端到端接口定义和软件图形界面中按钮的展现形式。动作分为客户端动作、服务端动作、跳转动作和链接动作。客户端动作主要用于客户端交互,执行客户端业务逻辑。服务端动作主要用于端到端接口数据传输与提交。跳转动作描述的是在同一应用系统中进行视图路由跳转的过程。链接动作对应网站系统中的外链,跳转到指定url页面。
29.元数据中的视图用于描述应用程序的图形界面的展现形式与数据交互方法。视图中数据传输与处理的组织形式通过模型和字段描述。点击视图中的按钮将会触发动作。
30.进一步的,如图2所示,步骤101,包括:分别建立模型与类、字段与属性、动作与控制器、视图与模板之间的映射关系,即
模型中包含其对应的类的唯一类名,字段中包含其对应的属性的唯一属性名,动作中包含其对应的控制器的唯一方法声明,视图中包含其对应的模板的唯一模板名。
31.可以理解的是,通过将面向对象编程编写的代码的代码元素与元数据建立一一映射关系,为进一步实现使用无代码方法与代码方法混合编程完成个性化复杂业务逻辑提供了基础,即为基于无代码应用开发的面向对象编程方法提供了一个约定,以使开发人员不需要了解所有数据结构和接口细节就可以完成个性化功能。
32.进一步的,如图3所示,步骤102,包括:步骤1021:基于映射关系,利用面向对象编程方式编写类、属性、控制器和模板的代码,得到第一代码;步骤1022:将第一代码打包成编程式模块。
33.需要说明的是,通过利用编程式模块对外提供服务,使得本发明实施例提供的技术方案不仅支持基于无代码方式对外提供服务,还可以支持编写代码的方式对外提供服务,可操作性强,灵活性高。
34.进一步的,如图4所示,步骤103,包括:步骤1031:创建无代码模块;步骤1032:利用拖拽可视化组件的方式搭建无代码模块,以生成无代码模块对应的元数据,并将无代码模块对应的元数据注册到元数据中心。
35.可以理解的是,通过搭建无代码模块,为后续基于无代码模块获取编程式扩展无代码模块提供基础,以根据面向对象编程方法编写的个性化逻辑打包成部署包附着发布在被扩展的模块,提供无代码模块无法提供的个性化复杂功能。同时,通过无代码模块对外提供一些简单的服务,相比于利用面向对象编程方式编写代码对外提供服务效率高,而且简单便捷。
36.进一步的,如图5所示,步骤104,包括:步骤1041:利用元数据中心的无代码模块对应的元数据生成sdk包;步骤1042:基于sdk包,根据映射关系并利用面向对象编程方式编写类、属性、控制器和模板的代码,得到第二代码;步骤1043:将第二代码打包成编程式扩展无代码模块。
37.需要说明的是,利用无代码模块对应的元数据生成sdk(软件开发包)的方式,是根据无代码模块对应的元数据中的模型、字段、动作和视图定义生成利用面向对象编程方式编写的代码(代码中包含元数据与代码的绑定关系),然后将代码打包成sdk(软件开发包)。
38.还需要说明的是,sdk包中包含类、字段、控制器和模板等编程元素。那么可以基于sdk包扩展sdk包原有的类增加字段,基于原有的类重写或编写新的控制器,重写模板覆盖掉原有视图,以使模块可以支持业务逻辑更加复杂的控制器与用户界面,所以本发明实施例通过基于sdk包,根据映射关系并利用面向对象编程方式编写类、属性、控制器和模板的代码,得到第二代码。
39.可以理解的是,编程式扩展无代码模块是基于无代码模块来提供的个性化扩展服务。将根据面向对象编程方法编写的个性化逻辑打包成部署包附着发布在被扩展的模块,提供无代码模块无法提供的个性化复杂功能,且适用范围广。
40.进一步的,如图3所示,步骤105中部署编程式模块,以使编程式模块对外提供服
务,包括:步骤1051a:部署编程式模块;步骤1051b:编程式模块在启动时,先从元数据中心获取最近一次发布的元数据,然后扫描第一代码以获取第一代码中的元数据定义,并利用第一代码中的元数据定义对最近一次发布的元数据进行升级更新;一些实施例中,利用第一代码中的元数据定义对最近一次发布的元数据进行升级更新的具体过程包括:将第一代码中的元数据定义与最近一次发布的元数据进行差量计算,从而完成对最近一次发布的元数据进行升级更新;需要说明的是,差量计算描述的是一种软件升级中的增量变化过程,通过计算前后新老两个版本的软件差异,卸载掉新版本中增量删除掉的部分,新安装老版本中增量增加的部分,升级掉新老版本都存在但存在差异的部分;通过这种软件升级方式,不需要对老版本进行完整的升级,只需要增量完成差异的部分即可;步骤1051c:编程式模块将升级更新后的最近一次发布的元数据注册到元数据中心,以使编程式模块根据升级更新后的最近一次发布的元数据对外提供服务。
41.需要说明的是,本发明实施例中涉及的“扫描第一代码获取元数据定义”方式,是本领域技术人员所熟知的,因此,其具体实现方式不做过多描述。一些可选的实施例中,如把源代码生成 ast(抽象语法树)后对 ast 进行分析,获取特定元素信息;也可以针对代码文件逐行读取获得文本信息通过词法分析获取特定元素信息。
42.可以理解的是,通过利用编程式模块对外提供服务,使得本发明实施例提供的技术方案不仅支持基于无代码方式对外提供服务,还可以支持编写代码的方式对外提供服务,可操作性强,灵活性高。
43.进一步的,如图4所示,步骤105中部署无代码模块,以使无代码模块对外提供服务,包括:步骤1052a:部署无代码模块;步骤1052b:无代码模块在启动时,从元数据中心获取无代码模块对应的元数据,以根据无代码模块对应的元数据对外提供服务。
44.可以理解的是,通过提供无代码模块外提供一些简单的服务,相比于利用面向对象编程方式编写代码对外提供服务效率高,而且简单便捷。
45.进一步的,如图5所示,步骤105中,部署编程式扩展无代码模块,以使编程式扩展无代码模块对外提供服务,包括:步骤1053a:部署编程式扩展无代码模块;步骤1053b:编程式扩展无代码模块在启动时,先从元数据中心获取最近一次发布的元数据,然后扫描第二代码以获取第二代码中的元数据定义,并利用第二代码中的元数据定义对最近一次发布的元数据进行升级更新;一些实施例中,利用第二代码中的元数据定义对最近一次发布的元数据进行升级更新的具体过程包括:将第二代码中的元数据定义与最近一次发布的元数据进行差量计算,从而完成对最近一次发布的元数据进行升级更新;需要说明的是,差量计算描述的是一种软件升级中的增量变化过程,通过计算前后新老两个版本的软件差异,卸载掉新版本中增量删除掉的部分,新安装老版本中增量增
加的部分,升级掉新老版本都存在但存在差异的部分;通过这种软件升级方式,不需要对老版本进行完整的升级,只需要增量完成差异的部分即可;步骤1053c:编程式扩展无代码模块将升级更新后的最近一次发布的元数据注册到元数据中心,以使编程式模块根据升级更新后的最近一次发布的元数据对外提供服务。
46.可以理解的是,基于sdk(软件开发包),在编程式扩展无代码模块编写面向对象代码以实现或重写sdk(软件开发包)中的类(class)、属性(attribute)、控制器(operation)和模板(template),从而实现提供无代码模块无法提供的个性化复杂的业务逻辑。
47.通过编程式扩展无代码模块将元数据结合无代码应用开发与编写代码两种方式,使用无代码方法与代码方法混合编程完成个性化复杂业务逻辑,以解决基于无代码应用开发无法编程或者编程复杂度高的问题;避免了使用无代码应用开发方式后受限于无代码应用开发方式提供的功能,无法像使用代码开发应用一样灵活实现复杂功能,既能提升开发人员研发业务应用效率又能满足个性化复杂业务逻辑。
48.需要说明的是,本发明实施例中涉及的“扫描第二代码以获取第二代码中的元数据定义”方式,是本领域技术人员所熟知的,因此,其具体实现方式不做过多描述。一些可选的实施例中,如把源代码生成 ast(抽象语法树)后对 ast 进行分析,获取特定元素信息;也可以针对代码文件逐行读取获得文本信息通过词法分析获取特定元素信息。
49.具体的,元数据中心,用于进行元数据的注册和查询服务。
50.可以理解的是,通过利用元数据中心为编程式模块、无代码模块和编程式扩展无代码模块提供元数据的注册和调用,确保了全局指标的业务口径一致,提高了基于无代码应用开发的面向对象编程方法的可靠性。
51.本发明实施例提供的一种基于无代码应用开发的面向对象编程方法,通过建立元数据与代码元素之间的映射关系,且由于代码元素为基于面向对象编程编写的代码中的元素,从而为基于无代码应用开发的面向对象编程方法提供了一个约定,以使开发人员不需要了解所有数据结构和接口细节就可以完成个性化功能;通过根据映射关系获取编程式模块,搭建无代码模块,根据无代码模块和映射关系,获取编程式扩展无代码模块,通过部署编程式模块、无代码模块和编程式扩展无代码模块,以使编程式模块、无代码模块和编程式扩展无代码模块分别对外提供服务,不仅可以将无代码应用开发与面向对象编程有效结合以完成各种个性化复杂业务逻辑,还使开发人员尽可能少的使用或者不用编程知识就可以搭建出应用软件,提升了开发人员研发业务应用的效率。
52.实施例二本发明实施例还提供一种可读存储介质,其上存储有可执行程序,该可执行程序被处理器执行时实现上述实施例提供的一种基于无代码应用开发的面向对象编程方法的步骤。
53.可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
54.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形
式。
55.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
56.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令方法的制造品,该指令方法实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
57.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
58.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1