CN110134434B - 一种应用生成处理方法及***、应用生成*** - Google Patents

一种应用生成处理方法及***、应用生成*** Download PDF

Info

Publication number
CN110134434B
CN110134434B CN201910401673.0A CN201910401673A CN110134434B CN 110134434 B CN110134434 B CN 110134434B CN 201910401673 A CN201910401673 A CN 201910401673A CN 110134434 B CN110134434 B CN 110134434B
Authority
CN
China
Prior art keywords
declaration
source code
task
application
statement
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
CN201910401673.0A
Other languages
English (en)
Other versions
CN110134434A (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.)
Inspur General Software Co Ltd
Original Assignee
Inspur General Software 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 Inspur General Software Co Ltd filed Critical Inspur General Software Co Ltd
Priority to CN201910401673.0A priority Critical patent/CN110134434B/zh
Publication of CN110134434A publication Critical patent/CN110134434A/zh
Application granted granted Critical
Publication of CN110134434B publication Critical patent/CN110134434B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种应用生成处理方法及***、应用生成***。解析应用的配置信息以确定结构,配置信息限定应用生命周期的组成要素有元素、任务和源代码文件这些对象,以声明式格式记录对象及其依赖关系,应用的结构包括源代码文件、依赖于若干源代码文件的元素声明、依赖于若干元素声明的任务、依赖于一任务的元素声明;根据机器指令集合及其使用规则、元素声明中的元素组成及锚点,生成结构中各任务的动作指令;根据机器指令编排规则、动作指令、元素声明中的元素结构声明,生成任务脚本;执行任务脚本,基于结构和应用生成请求所涉及到的各源代码文件的文件内容,处理结构中的全部任务以作应用生成处理。因此,无需开发者记忆元素间的生成关系。

Description

一种应用生成处理方法及***、应用生成***
技术领域
本发明涉及计算机技术领域,特别涉及一种应用生成处理方法及***、应用生成***。
背景技术
应用生命周期的管理通常包括开发、集成和部署环节,如此需要依次完成构建、打包、部署等步骤的配置。
目前,开发者可人工记忆应用结构配置所需的所有元素及元素间的生成关系,并据此书写好构建指令、打包指令、部署指令,然后将书写好的机器指令按需经过多个步骤输入***,以使***通过执行机器指令以执行应用生成处理。如此,所得到的配置由机器指令和参数组成,***无法感知元素间的生成关系。
可见,这种隐藏的关系需要开发者来维护和记忆,不便于后续的应用结构变更、应用更新等操作。比如,如果开发者要更改应用结构,则需要同时修改这些指令,无疑又增加了工作负荷。
发明内容
本发明提供了一种应用生成处理方法及***、应用生成***,无需开发者记忆元素间的生成关系。
为了达到上述目的,本发明是通过如下技术方案实现的:
第一方面,本发明提供了一种应用生成处理方法,包括:
接收外部输入的应用的配置信息,其中,所述配置信息中限定了应用生命周期所涉及到的组成要素有元素、任务和源代码文件,并将各个组成要素均描述为对象,以声明式格式记录对象及不同对象间的依赖关系;
解析所述配置信息,以确定所述应用的结构,其中,所述结构包括:源代码文件、依赖于至少一个源代码文件的元素声明、依赖于至少一个元素声明的任务、依赖于一任务的元素声明,其中,元素声明包括元素结构声明、元素组成及锚点;
根据预置的机器指令集合及其使用规则,以及根据所述元素组成及所述锚点,分别生成所述结构中每一个任务的动作指令;
根据预置的机器指令编排规则,以及根据所述元素结构声明和所述动作指令,生成任务脚本;
在接收到应用生成请求时,通过执行所述任务脚本,基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述结构中的全部任务,以作应用生成处理。
进一步地,所述结构包括的元素声明有:依赖于服务编排任务的应用声明、依赖于镜像构建任务的镜像声明、依赖于制品构建任务的制品声明、依赖于至少一个源代码文件的源代码工程声明;
所述结构包括的任务有:依赖于至少一个镜像声明的服务编排任务、依赖于至少一个制品声明的镜像构建任务、依赖于至少一个源代码工程声明的制品构建任务。
进一步地,所述基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述结构中的全部任务,以作应用生成处理,包括:
确定所述应用生成请求所涉及到的每一个源代码文件的文件内容;
基于源代码工程声明所依赖的每一个源代码文件,并根据确定好的源代码文件的文件内容,生成所述结构中的每一个源代码工程声明的源代码工程产物;
基于制品声明所依赖的每一个源代码工程声明,并根据生成的源代码工程声明的源代码工程产物,通过执行所述结构中的每一个制品构建任务,对应生成所述结构中的每一个制品声明的制品产物;
基于镜像声明所依赖的每一个制品声明,并根据生成的制品声明的制品产物,通过执行所述结构中的每一个镜像构建任务,对应生成所述结构中的每一个镜像声明的镜像产物;
将生成的全部镜像产物存储至外部的镜像仓库;
将所述结构中的服务编排任务发送给外部的服务编排***,以触发所述服务编排***根据所述全部镜像产物,通过执行所述服务编排任务以生成所述结构中的应用声明的应用产物。
进一步地,所述元素声明的声明顺序为自顶向下;
所述元素声明包括:当前元素声明的元素结构声明、当前元素声明的下一层元素声明、下一层元素声明在元素结构声明中的锚点。
进一步地,所述元素声明的声明顺序为自底向上;
所述元素声明包括:当前元素声明、当前元素声明的上一层元素声明、上一层元素声明的元素结构声明、当前元素声明在元素结构声明中的锚点。
进一步地,所述元素结构声明遵循于元素类型元数据;
所述元素类型元数据取自自定义数据或***内置模板的初始数据。
进一步地,所述处理所述结构中的全部任务,包括:按照自最底层至最上层的正向构建顺序,依次处理所述结构中的全部任务,以依次生成当前层元素声明的上一层元素声明的元素产物。
第二方面,本发明提供了一种应用生成处理***,包括:
配置单元,用于接收外部输入的应用的配置信息,其中,所述配置信息中限定了应用生命周期所涉及到的组成要素有元素、任务和源代码文件,并将各个组成要素均描述为对象,以声明式格式记录对象及不同对象间的依赖关系;解析所述配置信息,以确定所述应用的结构,其中,所述结构包括:源代码文件、依赖于至少一个源代码文件的元素声明、依赖于至少一个元素声明的任务、依赖于一任务的元素声明,其中,元素声明包括元素结构声明、元素组成及锚点;
动作生成器,用于根据预置的机器指令集合及其使用规则,以及根据所述元素组成及所述锚点,分别生成所述结构中每一个任务的动作指令;
动作编排器,用于根据预置的机器指令编排规则,以及根据所述元素结构声明和所述动作指令,生成任务脚本;
调度单元,用于在接收到应用生成请求时,将所述结构中的全部任务输出给运行单元;
所述运行单元,用于通过执行所述任务脚本,基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述全部任务,以作应用生成处理。
进一步地,所述结构包括的元素声明有:依赖于服务编排任务的应用声明、依赖于镜像构建任务的镜像声明、依赖于制品构建任务的制品声明、依赖于至少一个源代码文件的源代码工程声明;
所述结构包括的任务有:依赖于至少一个镜像声明的服务编排任务、依赖于至少一个制品声明的镜像构建任务、依赖于至少一个源代码工程的制品构建任务声明。
进一步地,所述运行单元,用于确定所述应用生成请求所涉及到的每一个源代码文件的文件内容;基于源代码工程声明所依赖的每一个源代码文件,并根据确定好的源代码文件的文件内容,生成所述结构中的每一个源代码工程声明的源代码工程产物;基于制品声明所依赖的每一个源代码工程声明,并根据生成的源代码工程声明的源代码工程产物,通过执行所述结构中的每一个制品构建任务,对应生成所述结构中的每一个制品声明的制品产物;基于镜像声明所依赖的每一个制品声明,并根据生成的制品声明的制品产物,通过执行所述结构中的每一个镜像构建任务,对应生成所述结构中的每一个镜像声明的镜像产物;将生成的全部镜像产物存储至外部的镜像仓库;将所述结构中的服务编排任务发送给外部的服务编排***,以触发所述服务编排***根据所述全部镜像产物,通过执行所述服务编排任务以生成所述结构中的应用声明的应用产物。
进一步地,所述元素声明的声明顺序为自顶向下;
所述元素声明包括:当前元素声明的元素结构声明、当前元素声明的下一层元素声明、下一层元素声明在元素结构声明中的锚点。
进一步地,所述元素声明的声明顺序为自底向上;
所述元素声明包括:当前元素声明、当前元素声明的上一层元素声明、上一层元素声明的元素结构声明、当前元素声明在元素结构声明中的锚点。
第三方面,本发明提供了一种应用生成***,包括:
上述任一所述的应用生成处理***、镜像仓库、服务编排***、客户端开发工具、版本控制***;
其中,所述应用生成处理***,用于根据应用生成请求所涉及到的每一个源代码文件的文件内容,执行全部任务中的每一个制品构建任务和每一个镜像构建任务,以生成全部镜像产物;将所述全部镜像产物存储至所述镜像仓库,并将所述全部任务中的服务编排任务发送给所述服务编排***;
所述服务编排***,用于根据所述镜像仓库中存储的所述全部镜像产物,执行所述服务编排任务,以生成应用产物;
所述客户端开发工具,用于缓存外部输入的源代码文件的文件内容;在接收到外部输入的应用生成请求时,将缓存的全部源代码文件的文件内容发送给所述版本控制***;
所述版本控制***,用于在接收到所述全部源代码文件的文件内容时,向所述应用生成处理***发送应用生成请求。
本发明提供了一种应用生成处理方法及***、应用生成***。解析应用的配置信息以确定结构,配置信息限定应用生命周期的组成要素有元素、任务和源代码文件这些对象,以声明式格式记录对象及其依赖关系,应用的结构包括源代码文件、依赖于若干源代码文件的元素声明、依赖于若干元素声明的任务、依赖于一任务的元素声明;根据机器指令集合及其使用规则、元素声明中的元素组成及锚点,生成结构中各任务的动作指令;根据机器指令编排规则、动作指令、元素声明中的元素结构声明,生成任务脚本;执行任务脚本,基于结构和应用生成请求所涉及到的各源代码文件的文件内容,处理结构中的全部任务以作应用生成处理。因此,无需开发者记忆元素间的生成关系。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种应用生成处理方法的流程图;
图2是本发明一实施例提供的一种应用的结构的示意图;
图3是本发明一实施例提供的一种应用生成处理***的示意图;
图4是本发明一实施例提供的一种应用生成***的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种应用生成处理方法,可以包括以下步骤:
步骤101:接收外部输入的应用的配置信息,其中,所述配置信息中限定了应用生命周期所涉及到的组成要素有元素、任务和源代码文件,并将各个组成要素均描述为对象,以声明式格式记录对象及不同对象间的依赖关系。
步骤102:解析所述配置信息,以确定所述应用的结构,其中,所述结构包括:源代码文件、依赖于至少一个源代码文件的元素声明、依赖于至少一个元素声明的任务、依赖于一任务的元素声明,其中,元素声明包括元素结构声明、元素组成及锚点。
步骤103:根据预置的机器指令集合及其使用规则,以及根据所述元素组成及所述锚点,分别生成所述结构中每一个任务的动作指令。
步骤104:根据预置的机器指令编排规则,以及根据所述元素结构声明和所述动作指令,生成任务脚本。
步骤105:在接收到应用生成请求时,通过执行所述任务脚本,基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述结构中的全部任务,以作应用生成处理。
本发明实施例提供了一种应用生成处理方法,该方法包括:解析应用的配置信息以确定结构,配置信息限定应用生命周期的组成要素有元素、任务和源代码文件这些对象,以声明式格式记录对象及其依赖关系,应用的结构包括源代码文件、依赖于若干源代码文件的元素声明、依赖于若干元素声明的任务、依赖于一任务的元素声明;根据机器指令集合及其使用规则、元素声明中的元素组成及锚点,生成结构中各任务的动作指令;根据机器指令编排规则、动作指令、元素声明中的元素结构声明,生成任务脚本;执行任务脚本,基于结构和应用生成请求所涉及到的各源代码文件的文件内容,处理结构中的全部任务以作应用生成处理。因此,无需开发者记忆元素间的生成关系。
需要说明的是,针对任一元素来说,结构中的元素是对元素的声明,而生成的元素是实在的产物。如此,结构中的元素可称之为元素声明,生成的元素可称之为元素产物,以作区分。此外,不同次生成同一元素所基于的源代码文件的文件内容不同时,生成的产物均为该元素的元素产物,但分别对应于不同的版本。
详细地,应用的配置信息中限定了对象及不同对象间的依赖关系,基于这一依赖关系即可获知元素间的生成关系,并基于此生成应用产物。具体地,可以由后台自动根据应用的结构,以基于该结构所反映出的依赖关系,自动生成应用产物。可见,元素间的生成关系可由后台自动获知并使用,无需开发者人工记忆并提供。当然,在实现应用生成后,后续若需实现应用更新,若涉及到应用结构的更新,则开发者仅需按需更改配置信息即可,后台即可按需确定新的结构并基于此来再次生成应用产物,从而实现应用更新;若未涉及到应用结构的更新时,则开发者仅需按需更改源代码文件等即可,后台即可基于现有结构来再次生成应用产物,从而实现应用更新。可见无论应用的首次生成还是更新再次生成,均无需开发者人工记忆元素间的生成关系。
详细地,元素声明可以包括元素结构声明、元素组成及锚点。其中,元素声明,具体来说就是声明元素的标识、元素的类型等元素自身信息,元素结构声明,主要就是声明元素与组成该元素的那些子元素间的结构关系。
请参考上述步骤103和步骤104,应用生成处理***中可以内置软件集成与部署领域知识,从而可自动生成机器指令并编排为可执行的任务脚本。如此,基于确定好的结构,后台还可自动生成动作指令,进而自动生成任务脚本,最终通过运行任务脚本以自动实现应用生成处理。
综上所述,本发明实施例可以大大较小开发者的人力劳动,不仅提高了开发效率,还相应减少了因人工劳动所可能带来的误操作情况。
在本发明的一个实施例中,所述元素结构声明遵循于元素类型元数据;所述元素类型元数据取自自定义数据或***内置模板的初始数据。比如,可以参照元素类型元数据,从空白声明结构,具体地,可以引用结构模板初始元素的结构声明。
本发明实施例中,允许开发者按照与生成方向相同或者相反的顺序定义各个组成要素。如此,声明元素时,即可以正向声明,也可以逆向声明。
详细地,针对上述逆向声明:
在本发明的一个实施例中,为了说明一种逆向声明的可能实现方式,所以,所述元素声明的声明顺序为自顶向下;
所述元素声明包括:当前元素声明的元素结构声明、当前元素声明的下一层元素声明、下一层元素声明在元素结构声明中的锚点。
详细地,锚点描述了元素的组成元素在元素结构的位置。
详细地,针对上述正向声明:
在本发明的一个实施例中,为了说明一种正向声明的可能实现方式,所以,所述元素声明的声明顺序为自底向上;
所述元素声明包括:当前元素声明、当前元素声明的上一层元素声明、上一层元素声明的元素结构声明、当前元素声明在元素结构声明中的锚点。
基于上述两种声明方式可知,元素的组成元素声明是一个递归过程,直到全部由源代码文本文件所组成的最底层元素。
无论采用逆向声明方式来声明元素,还是采用正向声明方式来声明元素,均可采用正向构建顺序,以实现应用生成处理。因此,在本发明的一个实施例中,所述处理所述结构中的全部任务,包括:按照自最底层至最上层的正向构建顺序,依次处理所述结构中的全部任务,以依次生成当前层元素声明的上一层元素声明的元素产物。
举例来说,请参考图2,图2所示内容即可以为确定出的一应用的结构。这一结构中,最底层元素为源代码工程,其上一层元素为制品,制品的上一层元素为镜像,最顶层元素为应用。如此,可先根据源代码文件以生成各个源代码工程产物,再基于生成的源代码工程产物以生成各个制品产物,再基于生成的制品产物以生成各个镜像产物,最后基于生成的镜像产物以生成应用产物,从而完成应用生成。
在本发明的一个实施例中,所述结构包括的元素声明有:依赖于服务编排任务的应用声明、依赖于镜像构建任务的镜像声明、依赖于制品构建任务的制品声明、依赖于至少一个源代码文件的源代码工程声明;
所述结构包括的任务有:依赖于至少一个镜像声明的服务编排任务、依赖于至少一个制品声明的镜像构建任务、依赖于至少一个源代码工程声明的制品构建任务。
请参考图2,结构中的元素声明可以有应用声明、镜像声明、制品声明、源代码工程声明,结构中的任务可以有服务编排任务、镜像构建任务、制品构建任务。执行制品构建任务可生成一制品产物,执行镜像构建任务可生成一镜像产物,执行服务编排任务可生成一应用产物。
基于上述内容,在本发明的一个实施例中,为了说明一种应用生成处理的可能实现方式,所以,所述基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述结构中的全部任务,以作应用生成处理,包括:
确定所述应用生成请求所涉及到的每一个源代码文件的文件内容;
基于源代码工程声明所依赖的每一个源代码文件,并根据确定好的源代码文件的文件内容,生成所述结构中的每一个源代码工程声明的源代码工程产物;
基于制品声明所依赖的每一个源代码工程声明,并根据生成的源代码工程声明的源代码工程产物,通过执行所述结构中的每一个制品构建任务,对应生成所述结构中的每一个制品声明的制品产物;
基于镜像声明所依赖的每一个制品声明,并根据生成的制品声明的制品产物,通过执行所述结构中的每一个镜像构建任务,对应生成所述结构中的每一个镜像声明的镜像产物;
将生成的全部镜像产物存储至外部的镜像仓库;
将所述结构中的服务编排任务发送给外部的服务编排***,以触发所述服务编排***根据所述全部镜像产物,通过执行所述服务编排任务以生成所述结构中的应用声明的应用产物。
详细地,在确定好结构后,即可基于该结构来生成应用。由于为初次生成,故需执行结构中的每一个任务,并获知结构中各个源代码文件的文件内容。开发者可以将编写好的全部源代码文件的文件内容录入,以提出应用生成请求。如此,基于这些文件内容,可对应生成结构中各源代码工程声明的源代码工程产物;进而,基于生成的这些源代码工程产物,经对应执行结构中的各制品构建任务,以生成结构中各制品声明的制品产物;进而,基于生成的这些制品产物,经对应执行结构中的各镜像构建任务,以生成结构中各镜像声明的镜像产物。由于可以由现有的服务编排***来根据镜像生成一应用产物,故在生成这些镜像产物后即可触发服务编排***,并由服务编排***经执行结构中的服务编排任务,以生成结构中应用声明的应用产物。
详细地,开发者录入上述全部源代码文件的文件内容,这些文件内容即可对应构成一文件集,如此,生成的这些产物均为对应于这一文件集的产物。若用户后续更新部分文件内容,会产生新的文件集,并对应生成部分新的产物,这些新的产物即为对应于这一新文件集的产物。
综上所述,本发明实施例采取了面向对象设计思想和声明式编程范式,针对应用生命周期管理的开发、集成和部署环节,提出了一种自动化方案,使得开发者只需要关心应用软件的结构和组成要素,而忽略集成和部署的实现方式。本发明实施例的核心思想为将应用生命周期所涉及到的各个组成要素看作为对象,以声明式格式描述,显式地记录组成要素之间的生成关系,并将软件构建领域的知识封装在***内部,以可自动化完成构建过程。基于本发明实施例的应用软件构建***,可以为开发者提供自顶向下和自底向上两种向导方式来创建和配置应用,使开发者能够获得对应用结构更强的控制能力,同时免于记忆和书写机器指令。
如图3所示,本发明一个实施例提供了一种应用生成处理***,可以包括:
配置单元301,用于接收外部输入的应用的配置信息,其中,所述配置信息中限定了应用生命周期所涉及到的组成要素有元素、任务和源代码文件,并将各个组成要素均描述为对象,以声明式格式记录对象及不同对象间的依赖关系;解析所述配置信息,以确定所述应用的结构,其中,所述结构包括:源代码文件、依赖于至少一个源代码文件的元素声明、依赖于至少一个元素声明的任务、依赖于一任务的元素声明,其中,元素声明包括元素结构声明、元素组成及锚点;
动作生成器302,用于根据预置的机器指令集合及其使用规则,以及根据所述元素组成及所述锚点,分别生成所述结构中每一个任务的动作指令;
动作编排器303,用于根据预置的机器指令编排规则,以及根据所述元素结构声明和所述动作指令,生成任务脚本;
调度单元304,用于在接收到应用生成请求时,将所述结构中的全部任务输出给运行单元305;
所述运行单元305,用于通过执行所述任务脚本,基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述全部任务,以作应用生成处理。
在本发明一个实施例中,所述结构包括的元素声明有:依赖于服务编排任务的应用声明、依赖于镜像构建任务的镜像声明、依赖于制品构建任务的制品声明、依赖于至少一个源代码文件的源代码工程声明;
所述结构包括的任务有:依赖于至少一个镜像声明的服务编排任务、依赖于至少一个制品声明的镜像构建任务、依赖于至少一个源代码工程的制品构建任务声明。
在本发明一个实施例中,所述运行单元305,用于确定所述应用生成请求所涉及到的每一个源代码文件的文件内容;基于源代码工程声明所依赖的每一个源代码文件,并根据确定好的源代码文件的文件内容,生成所述结构中的每一个源代码工程声明的源代码工程产物;基于制品声明所依赖的每一个源代码工程声明,并根据生成的源代码工程声明的源代码工程产物,通过执行所述结构中的每一个制品构建任务,对应生成所述结构中的每一个制品声明的制品产物;基于镜像声明所依赖的每一个制品声明,并根据生成的制品声明的制品产物,通过执行所述结构中的每一个镜像构建任务,对应生成所述结构中的每一个镜像声明的镜像产物;将生成的全部镜像产物存储至外部的镜像仓库;将所述结构中的服务编排任务发送给外部的服务编排***,以触发所述服务编排***根据所述全部镜像产物,通过执行所述服务编排任务以生成所述结构中的应用声明的应用产物。
在本发明一个实施例中,所述元素声明的声明顺序为自顶向下;
所述元素声明包括:当前元素声明的元素结构声明、当前元素声明的下一层元素声明、下一层元素声明在元素结构声明中的锚点。
在本发明一个实施例中,所述元素声明的声明顺序为自底向上;
所述元素声明包括:当前元素声明、当前元素声明的上一层元素声明、上一层元素声明的元素结构声明、当前元素声明在元素结构声明中的锚点。
上述***内的各单元、模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
如图4所示,本发明实施例提供了一种应用生成***,可以包括:上述任一所述的应用生成处理***401、镜像仓库402、服务编排***403、客户端开发工具404、版本控制***405;
其中,所述应用生成处理***401,用于根据应用生成请求所涉及到的每一个源代码文件的文件内容,执行全部任务中的每一个制品构建任务和每一个镜像构建任务,以生成全部镜像产物;将所述全部镜像产物存储至所述镜像仓库402,并将所述全部任务中的服务编排任务发送给所述服务编排***403;
所述服务编排***403,用于根据所述镜像仓库402中存储的所述全部镜像产物,执行所述服务编排任务,以生成应用产物;
所述客户端开发工具404,用于缓存外部输入的源代码文件的文件内容;在接收到外部输入的应用生成请求时,将缓存的全部源代码文件的文件内容发送给所述版本控制***405;
所述版本控制***405,用于在接收到所述全部源代码文件的文件内容时,向所述应用生成处理***401发送应用生成请求。
本发明实施例中,应用生成处理***仅执行结构中的制品构建任务和镜像构建任务,并将服务编排任务交由现有的服务编排***来执行,共同完成应用生成的过程。
本发明实施例中,开发者可经客户端开发工具以录入文件内容,录入的文件内容由客户端开发工具发送至版本控制***。版本控制***在收到文件内容时,即可生成一包括这些文件内容的文件集。一旦新生成有文件集,即可通知应用生成处理***做相应处理。由于是首次生成文件集,故可发送应用生成请求。对应地,非首次生成文件集时,可发送应用更新请求,以使应用生成处理***结合服务编排***,实现应用更新。
综上所述,本发明的实施例具有至少如下有益效果:
1、本发明实施例中,解析应用的配置信息以确定结构,配置信息限定应用生命周期的组成要素有元素、任务和源代码文件这些对象,以声明式格式记录对象及其依赖关系,应用的结构包括源代码文件、依赖于若干源代码文件的元素声明、依赖于若干元素声明的任务、依赖于一任务的元素声明;根据机器指令集合及其使用规则、元素声明中的元素组成及锚点,生成结构中各任务的动作指令;根据机器指令编排规则、动作指令、元素声明中的元素结构声明,生成任务脚本;执行任务脚本,基于结构和应用生成请求所涉及到的各源代码文件的文件内容,处理结构中的全部任务以作应用生成处理。因此,无需开发者记忆元素间的生成关系。
2、本发明实施例中,可以大大较小开发者的人力劳动,不仅提高了开发效率,还相应减少了因人工劳动所可能带来的误操作情况。
3、本发明实施例采取了面向对象设计思想和声明式编程范式,针对应用生命周期管理的开发、集成和部署环节,提出了一种自动化方案,使得开发者只需要关心应用软件的结构和组成要素,而忽略集成和部署的实现方式。本发明实施例的核心思想为将应用生命周期所涉及到的各个组成要素看作为对象,以声明式格式描述,显式地记录组成要素之间的生成关系,并将软件构建领域的知识封装在***内部,以可自动化完成构建过程。基于本发明实施例的应用软件构建***,可以为开发者提供自顶向下和自底向上两种向导方式来创建和配置应用,使开发者能够获得对应用结构更强的控制能力,同时免于记忆和书写机器指令。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (3)

1.一种应用生成处理方法,其特征在于,包括:
接收外部输入的应用的配置信息,其中,所述配置信息中限定了应用生命周期所涉及到的组成要素有元素、任务和源代码文件,并将各个组成要素均描述为对象,以声明式格式记录对象及不同对象间的依赖关系;
解析所述配置信息,以确定所述应用的结构,其中,所述结构包括:源代码文件、依赖于至少一个源代码文件的元素声明、依赖于至少一个元素声明的任务、依赖于一任务的元素声明,其中,元素声明包括元素结构声明、元素组成及锚点;
根据预置的机器指令集合及其使用规则,以及根据所述元素组成及所述锚点,分别生成所述结构中每一个任务的动作指令;
根据预置的机器指令编排规则,以及根据所述元素结构声明和所述动作指令,生成任务脚本;
在接收到应用生成请求时,通过执行所述任务脚本,基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述结构中的全部任务,以作应用生成处理;
所述结构包括的元素声明有:依赖于服务编排任务的应用声明、依赖于镜像构建任务的镜像声明、依赖于制品构建任务的制品声明、依赖于至少一个源代码文件的源代码工程声明;
所述结构包括的任务有:依赖于至少一个镜像声明的服务编排任务、依赖于至少一个制品声明的镜像构建任务、依赖于至少一个源代码工程声明的制品构建任务;
所述基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述结构中的全部任务,以作应用生成处理,包括:
确定所述应用生成请求所涉及到的每一个源代码文件的文件内容;
基于源代码工程声明所依赖的每一个源代码文件,并根据确定好的源代码文件的文件内容,生成所述结构中的每一个源代码工程声明的源代码工程产物;
基于制品声明所依赖的每一个源代码工程声明,并根据生成的源代码工程声明的源代码工程产物,通过执行所述结构中的每一个制品构建任务,对应生成所述结构中的每一个制品声明的制品产物;
基于镜像声明所依赖的每一个制品声明,并根据生成的制品声明的制品产物,通过执行所述结构中的每一个镜像构建任务,对应生成所述结构中的每一个镜像声明的镜像产物;
将生成的全部镜像产物存储至外部的镜像仓库;
将所述结构中的服务编排任务发送给外部的服务编排***,以触发所述服务编排***根据所述全部镜像产物,通过执行所述服务编排任务以生成所述结构中的应用声明的应用产物;
所述元素声明的声明顺序为自顶向下;
所述元素声明包括:当前元素声明的元素结构声明、当前元素声明的下一层元素声明、下一层元素声明在元素结构声明中的锚点;
或,
所述元素声明的声明顺序为自底向上;
所述元素声明包括:当前元素声明、当前元素声明的上一层元素声明、上一层元素声明的元素结构声明、当前元素声明在元素结构声明中的锚点;
所述元素结构声明遵循于元素类型元数据;
所述元素类型元数据取自自定义数据或***内置模板的初始数据;
和/或,
所述处理所述结构中的全部任务,包括:按照自最底层至最上层的正向构建顺序,依次处理所述结构中的全部任务,以依次生成当前层元素声明的上一层元素声明的元素产物。
2.一种应用生成处理***,其特征在于,包括:
配置单元,用于接收外部输入的应用的配置信息,其中,所述配置信息中限定了应用生命周期所涉及到的组成要素有元素、任务和源代码文件,并将各个组成要素均描述为对象,以声明式格式记录对象及不同对象间的依赖关系;解析所述配置信息,以确定所述应用的结构,其中,所述结构包括:源代码文件、依赖于至少一个源代码文件的元素声明、依赖于至少一个元素声明的任务、依赖于一任务的元素声明,其中,元素声明包括元素结构声明、元素组成及锚点;
动作生成器,用于根据预置的机器指令集合及其使用规则,以及根据所述元素组成及所述锚点,分别生成所述结构中每一个任务的动作指令;
动作编排器,用于根据预置的机器指令编排规则,以及根据所述元素结构声明和所述动作指令,生成任务脚本;
调度单元,用于在接收到应用生成请求时,将所述结构中的全部任务输出给运行单元;
所述运行单元,用于通过执行所述任务脚本,基于所述结构和所述应用生成请求所涉及到的每一个源代码文件的文件内容,处理所述全部任务,以作应用生成处理;
所述结构包括的元素声明有:依赖于服务编排任务的应用声明、依赖于镜像构建任务的镜像声明、依赖于制品构建任务的制品声明、依赖于至少一个源代码文件的源代码工程声明;
所述结构包括的任务有:依赖于至少一个镜像声明的服务编排任务、依赖于至少一个制品声明的镜像构建任务、依赖于至少一个源代码工程的制品构建任务声明;
所述运行单元,用于确定所述应用生成请求所涉及到的每一个源代码文件的文件内容;基于源代码工程声明所依赖的每一个源代码文件,并根据确定好的源代码文件的文件内容,生成所述结构中的每一个源代码工程声明的源代码工程产物;基于制品声明所依赖的每一个源代码工程声明,并根据生成的源代码工程声明的源代码工程产物,通过执行所述结构中的每一个制品构建任务,对应生成所述结构中的每一个制品声明的制品产物;基于镜像声明所依赖的每一个制品声明,并根据生成的制品声明的制品产物,通过执行所述结构中的每一个镜像构建任务,对应生成所述结构中的每一个镜像声明的镜像产物;将生成的全部镜像产物存储至外部的镜像仓库;将所述结构中的服务编排任务发送给外部的服务编排***,以触发所述服务编排***根据所述全部镜像产物,通过执行所述服务编排任务以生成所述结构中的应用声明的应用产物;
所述元素声明的声明顺序为自顶向下;
所述元素声明包括:当前元素声明的元素结构声明、当前元素声明的下一层元素声明、下一层元素声明在元素结构声明中的锚点;
或,
所述元素声明的声明顺序为自底向上;
所述元素声明包括:当前元素声明、当前元素声明的上一层元素声明、上一层元素声明的元素结构声明、当前元素声明在元素结构声明中的锚点。
3.一种应用生成***,其特征在于,包括:
如权利要求2所述的应用生成处理***、镜像仓库、服务编排***、客户端开发工具、版本控制***;
其中,所述应用生成处理***,用于根据应用生成请求所涉及到的每一个源代码文件的文件内容,执行全部任务中的每一个制品构建任务和每一个镜像构建任务,以生成全部镜像产物;将所述全部镜像产物存储至所述镜像仓库,并将所述全部任务中的服务编排任务发送给所述服务编排***;
所述服务编排***,用于根据所述镜像仓库中存储的所述全部镜像产物,执行所述服务编排任务,以生成应用产物;
所述客户端开发工具,用于缓存外部输入的源代码文件的文件内容;在接收到外部输入的应用生成请求时,将缓存的全部源代码文件的文件内容发送给所述版本控制***;
所述版本控制***,用于在接收到所述全部源代码文件的文件内容时,向所述应用生成处理***发送应用生成请求。
CN201910401673.0A 2019-05-15 2019-05-15 一种应用生成处理方法及***、应用生成*** Active CN110134434B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910401673.0A CN110134434B (zh) 2019-05-15 2019-05-15 一种应用生成处理方法及***、应用生成***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910401673.0A CN110134434B (zh) 2019-05-15 2019-05-15 一种应用生成处理方法及***、应用生成***

Publications (2)

Publication Number Publication Date
CN110134434A CN110134434A (zh) 2019-08-16
CN110134434B true CN110134434B (zh) 2023-06-20

Family

ID=67574149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910401673.0A Active CN110134434B (zh) 2019-05-15 2019-05-15 一种应用生成处理方法及***、应用生成***

Country Status (1)

Country Link
CN (1) CN110134434B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569044B (zh) * 2019-09-09 2022-07-12 浪潮通用软件有限公司 一种将应用部署到运行环境的方法、装置及***
CN117251143B (zh) * 2023-11-14 2024-02-06 武汉万云网络科技有限公司 一种应用***、构建方法及其可视化开发工具的实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967159A (zh) * 2017-11-22 2018-04-27 腾讯科技(深圳)有限公司 一种配置文件应用的方法以及服务器
CN108196915A (zh) * 2018-02-06 2018-06-22 杭州朗和科技有限公司 基于应用容器引擎的代码处理方法、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574898A (en) * 1993-01-08 1996-11-12 Atria Software, Inc. Dynamic software version auditor which monitors a process to provide a list of objects that are accessed
CN105278991B (zh) * 2015-10-26 2018-08-24 中国科学院软件研究所 一种云应用部署配置模型的构造方法
CN108270726B (zh) * 2016-12-30 2021-05-11 华为技术有限公司 应用实例部署方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967159A (zh) * 2017-11-22 2018-04-27 腾讯科技(深圳)有限公司 一种配置文件应用的方法以及服务器
CN108196915A (zh) * 2018-02-06 2018-06-22 杭州朗和科技有限公司 基于应用容器引擎的代码处理方法、设备及存储介质

Also Published As

Publication number Publication date
CN110134434A (zh) 2019-08-16

Similar Documents

Publication Publication Date Title
Balci Requirements for model development environments
Bordini et al. Agent programming in the cognitive era
CN109189469B (zh) 基于反射的安卓应用微服务化方法及***
CN109189374B (zh) 基于对象引用链的对象构造代码生成方法及***
CN110244942B (zh) 一种页面生成方法、装置及***
CN109240666B (zh) 基于调用栈和依赖路径的函数调用代码生成方法及***
Rose et al. A comparison of model migration tools
CN111506314B (zh) 项目开发的方法、装置、服务器及介质
CN110134434B (zh) 一种应用生成处理方法及***、应用生成***
Mani et al. Test case generation for embedded system software using UML interaction diagram
JP2010134643A (ja) テストケースの選択方法及び選択システム
CN107479866B (zh) 基于重构技术实现开放终端应用数据与功能的方法
Paige et al. Lessons learned from building model-driven development tools
Reimann et al. Role-based generic model refactoring
Jurgelaitis et al. Smart contract code generation from platform specific model for Hyperledger Go
Seibel et al. Traceability in model-driven engineering: efficient and scalable traceability maintenance
JP7131277B2 (ja) システム移行支援装置、システム移行支援方法及びプログラム
da Cruz et al. A metamodel-based approach for automatic user interface generation
Altamimi et al. Performance analysis roundtrip: automatic generation of performance models and results feedback using cross-model trace links
US11487641B1 (en) Micro services recommendation system for identifying code areas at risk
CN110119283B (zh) 一种应用更新处理方法、装置及***、应用更新***
JP2007535013A (ja) コンピュータプログラムの設計
Sáenz-Adán et al. Automating provenance capture in software engineering with UML2PROV
CN113918198B (zh) 一种模型-代码同步方法
Pietsch et al. Delta-oriented development of model-based software product lines with DeltaEcore and SiPL: A comparison

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