CN113094052A - 应用构建方法、装置、计算机设备和存储介质 - Google Patents
应用构建方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113094052A CN113094052A CN202110640041.7A CN202110640041A CN113094052A CN 113094052 A CN113094052 A CN 113094052A CN 202110640041 A CN202110640041 A CN 202110640041A CN 113094052 A CN113094052 A CN 113094052A
- Authority
- CN
- China
- Prior art keywords
- task
- determining
- dependency relationship
- tasks
- current
- 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
Links
- 238000010276 construction Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 66
- 230000001419 dependent effect Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000013515 script Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种应用构建方法、装置、计算机设备和存储介质,所述方法包括:获取至少一个任务;所述任务为基于预设代码构建目标应用的过程中所涉及的任务;根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序;所述至少一个任务中的所述各个任务按照所述任务执行顺序进行应用构建,实现了应用构建过程中各个任务的自动执行,避免用户逐一手动启动任务,有效提高编译部署效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种应用构建方法、装置、计算机设备和存储介质。
背景技术
在应用开发过程中,可以使用编译部署工具对代码进行编译部署。在现有技术中,在使用编译部署工具进行编译部署工作时,针对存在依赖关系的多个任务,往往需要用户根据依赖关系,依次手动启动对应的任务,实现编译部署。然而,该方法过于繁琐且容易出错,导致编译部署效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种应用构建方法、装置、计算机设备和存储介质。
本申请实施例提供一种应用构建方法,所述方法包括:
获取至少一个任务;所述任务为基于预设代码构建目标应用的过程中所涉及的任务;
根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序;
所述至少一个任务中的所述各个任务按照所述任务执行顺序进行应用构建。
在其中一个实施例中,所述根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序,包括:
根据所述至少一个任务中各个任务对应的依赖关系信息,确定出作为执行起点的独立于任意任务的独立任务;
将所述独立任务确定为当前任务,并确定是否存在依赖于所述当前任务的至少一个下一任务;
若是,确定所述至少一个下一任务中各个下一任务对应的任务次序,并将各个下一任务确定为当前任务,再次执行确定是否存在依赖于所述当前任务的至少一个下一任务的步骤,直到确定各个任务对应的任务次序;
根据所述独立任务和各个任务次序,生成任务执行顺序。
在其中一个实施例中,所述确定所述至少一个下一任务中各个下一任务对应的任务次序,包括:
基于所述当前任务对应的任务次序,确定依赖于所述当前任务的下一任务的任务次序;
若依赖于上一任务的下一任务中包括至少两个下一任务,将当前的任务次序,作为所述至少两个下一任务中各个任务对应的任务次序。
在其中一个实施例中,所述确定是否存在依赖于所述当前任务的至少一个下一任务,包括:
若存在未确定任务次序的至少一个候选任务,遍历所述至少一个候选任务中各个候选任务对应的依赖关系信息;
根据各个候选任务对应的依赖关系信息,确定是否存在直接依赖于所述当前任务的至少一个下一任务。
在其中一个实施例中,还包括:
基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息。
在其中一个实施例中,在所述基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息的步骤之前,所述方法还包括:
显示所述至少一个任务中各个任务对应的任务对象;
响应于针对至少一个任务对象中各个任务对象的用户操作,获取所述至少一个任务中各个任务的操作信息。
在其中一个实施例中,所述基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息,包括:
若所述操作信息包括各个任务对象对应的连接路径,根据所述连接路径,确定各个任务分别对应的依赖关系信息;
或者,
若所述操作信息包括各个任务对象对应的移动时间,根据多个移动时间对应的时间顺序,确定各个任务分别对应的依赖关系信息。
在其中一个实施例中,还包括:
根据所述任务执行顺序,从所述至少一个任务中,确定当前待执行的至少一个目标任务;
若当前的各个目标任务执行完毕,且存在未执行的任务,再次执行所述根据所述任务执行顺序,从所述至少一个任务中,确定当前待执行的至少一个目标任务的步骤,直到各个任务执行完毕。
本申请实施例提供一种应用构建装置,所述装置包括:
任务获取模块,获取至少一个任务;所述任务为基于预设代码构建目标应用的过程中所涉及的任务;
任务执行顺序生成模块,根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序;
所述至少一个任务中的所述各个任务按照所述任务执行顺序进行应用构建。
本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上任一项所述方法的步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述方法的步骤。
上述实施例提出的应用构建方法、装置、计算机设备和存储介质,可以获取至少一个任务,该任务可以为基于预设代码构建目标应用的过程中所涉及的任务,进而可以根据至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序,使得至少一个任务中的各个任务可以按照任务执行顺序进行应用构建,实现了应用构建过程中各个任务的自动执行,避免用户逐一手动启动任务,有效提高编译部署效率。
附图说明
图1为一个实施例中一种应用构建方法的应用环境图;
图2为一个实施例中一种应用构建方法的流程示意图;
图3为一个实施例中确定任务执行顺序的步骤的流程示意图;
图4a为一个实施例中一种任务对象的示意图;
图4b为一个实施例中一种任务对象的组合示意图;
图4c为一个实施例中一种任务对象的顺序示意图;
图5为一个实施例中容错处理步骤的流程示意图;
图6为一个实施例中一种应用构建装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的一种应用构建方法,可以应用于如图1所示的应用环境中,终端102通过网络与服务器104进行通信,终端102可以向服务器104发送指令,触发服务器可以执行目标应用构建过程中涉及的到的至少一个任务,进行应用构建。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以是由至少两台服务器组成的服务器集群,例如部署在云环境中的至少两台分布式服务器,进而可以通过至少两台服务器的各台服务器,协同完成应用构建过程中涉及的任务,如代码编译、部署等任务;当然,服务器104也可以用独立的服务器来实现。
在一个实施例中,如图2所示,提供了一种应用构建方法,以该方法应用于图1中的终端102为例进行说明,应当理解的是,该方法也可以应用于服务器。在本实施例中,该方法可以包括如下步骤:
步骤201,获取至少一个任务。
其中,获取的至少一个任务中的各个任务,可以是基于预设代码构建目标应用的过程中所涉及的任务。具体而言,基于预设代码构建目标应用的过程中,终端可以涉及其中的至少一个处理环节,例如预编译、编译、汇编、打包或部署到指定运行环境等,本实施例中所指的任务,可以是目标应用构建过程中至少一个处理环节所对应的任务,可以包括以下至少一项:代码预编译、代码编译、代码汇编、代码打包、服务包上传至服务器、服务包解压缩、启动服务包对应的服务、检查服务是否成功启动。预设代码可以是开发人员编写的代码,也可以是经过处理对应的处理后得到代码,例如在编译处理后得到的代码。
在实际应用中,目标应用可以基于预设代码构建得到,在构建过程中,终端可以获取目标应用构建过程中所涉及的至少一个任务。
步骤202,根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序。
其中,至少一个任务中的各个任务,可以按照得到的任务执行顺序进行应用构建。
作为一示例,依赖关系也可以称为逻辑关系,存在依赖关系的至少两个任务之间,一个任务的执行结果可以影响另外至少一个任务的执行。在本实施例中,依赖关系信息可以表征对应任务的执行是否依赖于其它任务的完成,即当前的任务与其它任务之间是否存在依赖关系,例如任务A与其它任务存在依赖关系或任务A独立于其它任务,该任务是否执行可以与其它任务的执行情况无关。或者,当对应任务的执行依赖于其它任务的完成时,依赖关系信息还可以包括对应任务所依赖的任务,即当前的任务与指定任务之间的依赖关系。
具体实现中,终端获取到至少一个任务中,可以存在独立于其它任务的任务,也可以存在至少两个任务具有依赖关系,而依赖关系的存在可以影响任务的执行顺序,例如任务B依赖于任务A的执行,则在任务执行过程中,可以先执行任务A,再执行任务B。基于此,在获取至少一个任务后,终端可以获取至少一个任务中各个任务对应的依赖关系信息,并根据各个任务对应的依赖关系信息,生成任务执行顺序。
在生成任务执行顺序后,获取的至少一个任务中的各个任务,可以按照任务执行顺序执行。具体而言,在执行任务时,可以由终端根据任务执行顺序,依次执行各个任务;或者,也可以由终端根据任务执行顺序,依次向服务器发送指令,触发至少一个服务器执行对应的任务;又如,终端可以向服务器发送任务执行顺序,服务器可以根据接收到的任务执行顺序,自发执行对应的任务。
在本实施例中,可以获取至少一个任务,该任务可以为基于预设代码构建目标应用的过程中所涉及的任务,进而可以根据至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序,使得至少一个任务中的各个任务按照任务执行顺序进行应用构建,实现了应用构建过程中各个任务的自动执行,避免用户逐一手动启动任务,有效提高编译部署效率。
在一个实施例中,如图3所示,所述根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序,可以包括如下步骤:
步骤301,根据所述至少一个任务中各个任务对应的依赖关系信息,确定出作为执行起点的独立于任意任务的独立任务。
在实际应用中,依赖关系信息中包括表征对应任务是否与其它任务存在依赖关系的信息,终端可以根据至少一个任务中各个任务对应的依赖关系信息,从已获取的至少一个任务中,确定出独立于任意任务的独立任务。由于独立任务可以不依赖于其它任务的执行,可以将独立任务作为任务执行过程中的执行起点,在后续的任务执行过程中,可以从执行起点开始,执行至少一个任务中的各个任务。
步骤302,将所述独立任务确定为当前任务,并确定是否存在依赖于所述当前任务的至少一个下一任务。
作为一示例,下一任务可以是当前任务的下一个任务,下一任务可以直接依赖于排序在前的上一个任务,即依赖于当前任务。
在确定出独立任务后,可以以独立任务为起点,依次确定各个任务对应的任务次序。具体的,可以将独立任务确定为当前任务,并根据各个任务对应的依赖关系信息,确定是否存在依赖于当前任务的至少一个下一任务。
步骤303,若是,确定所述至少一个下一任务中各个下一任务对应的任务次序,并将各个下一任务确定为当前任务,再次执行确定是否存在依赖于所述当前任务的至少一个下一任务的步骤,直到确定各个任务对应的任务次序。
若确定存在依赖于当前任务的至少一个下一任务,则可以确定至少一个下一任务中,各个下一任务对应的任务次序,并将各个下一任务确定为当前任务,再次执行确定是否存在依赖于当前任务的至少一个下一任务的步骤,重复确定依赖于当前任务的下一任务所对应的任务次序,知道确定出各个任务对应的任务次序。
在一个示例中,若独立任务为当前任务,且确定不存在依赖于当前任务的下一任务时,可以根据独立任务,生成任务执行顺序。具体例如,若独立任务为一个独立任务,可以基于单独的独立任务生成任务执行顺序;若独立任务为至少两个,则确定至少两个独立任务中的各个独立任务可以同时执行,其对应的任务执行顺序可以是并行顺序;当然,也可以选择依次执行各个独立任务。
步骤304,根据所述独立任务和各个任务次序,生成任务执行顺序。
在确定出各个任务对应的任务次序后,可以根据作为执行起点的独立任务和各个任务对应的任务次序,生成任务执行顺序。
在本实施例中,可以根据所述至少一个任务中各个任务对应的依赖关系信息,确定出作为执行起点的独立于任意任务的独立任务,将独立任务确定为当前任务,并确定是否存在依赖于当前任务的至少一个下一任务,若是,可以确定至少一个下一任务中各个下一任务对应的任务次序,并将各个下一任务确定为当前任务,再次执行确定是否存在依赖于当前任务的至少一个下一任务的步骤,直到确定各个任务对应的任务次序,进而可以根据独立任务和各个任务次序,生成任务执行顺序。在本实施例中,通过自动对各个任务的依赖关系信息进行分析,实现了任务执行顺序的自动生成,有效提高应用构建过程中的任务处理效率。
在一个实施例中,所述确定所述至少一个下一任务中各个下一任务对应的任务次序,可以包括如下步骤:
基于所述当前任务对应的任务次序,确定依赖于所述当前任务的下一任务的任务次序;或者,若依赖于上一任务的所述至少一个下一任务中包括至少两个下一任务,将当前的任务次序,作为所述至少两个下一任务中各个任务对应的任务次序。
在实际应用中,在确定当前任务后,可以获取当前任务对应的任务次序。具体例如,针对作为执行起点的独立任务,当独立任务为当前任务时,独立任务对应的任务次序可以是1。在获取到当前任务对应的任务次序后,则可以基于当前任务的任务次序,确定依赖于当前任务的下一任务的任务次序,具体的,可以在当前任务对应任务次序的基础上加一,得到下一任务当前的任务次序。
或者,若依赖于上一任务的下一任务中包括至少两个下一任务,即存在两个或两个以上的下一任务依赖于当前任务,则可以将基于当前任务对应的任务次序而确定出的下一任务的任务次序,作为至少两个下一任务中,各个任务对应的任务次序。例如,若独立任务A的任务次序为1,且直接依赖于独立任务A的下一任务包括任务B和任务C,则可以将任务B和任务C当前的任务次序都确定为2。
在本实施例中,可以基于当前任务对应的任务次序,确定依赖于当前任务的下一任务的任务次序,或者,若依赖于上一任务的下一任务中包括至少两个下一任务,则可以将当前的任务次序,作为至少两个下一任务中各个任务对应的任务次序,从而能够在任务执行过程中,针对依赖于同一任务且彼此相互独立的至少两个独立任务,能够同时并行执行,提高了任务执行效率。
在一个实施例中,所述确定是否存在依赖于所述当前任务的至少一个下一任务,可以包括如下步骤:
若存在未确定任务次序的至少一个候选任务,遍历所述至少一个候选任务中各个候选任务对应的依赖关系信息;根据各个候选任务对应的依赖关系信息,确定是否存在直接依赖于所述当前任务的至少一个下一任务。
在确定当前任务后,可以判断当前是否存在未确定任务次序的至少一个候选任务。若不存在依赖于当前任务的至少一个候选任务,则确定不存在依赖于当前任务的下一任务。若存在未确定任务次序的至少一个候选任务,则可以遍历至少一个候选任务中各个候选任务对应的依赖关系信息,并根据依赖关系信息,确定是否存在依赖于当前任务的至少一个下一任务。
具体地,在依赖关系信息中,可以包括与候选任务存在直接依赖关系的任务所对应的标识,在确定出当前任务后,可以遍历各个候选任务对应的依赖关系信息,并将依赖关系信息中标识,与当前任务对应的标识进行匹配。若匹配成功,则可以确定该候选任务直接依赖于当前任务,由此可以确定出当前任务的下一任务;若匹配不成功,则可以确定该候选任务并非为当前任务的下一任务。
在本实施例中,若存在未确定任务次序的至少一个候选任务,可以遍历至少一个候选任务中各个候选任务对应的依赖关系信息,并根据各个候选任务对应的依赖关系信息,确定是否存在直接依赖于所述当前任务的至少一个下一任务,能够根据任务对应的依赖关系信息,自动确定出依赖于当前任务的任务,提高了自动生成任务执行顺序的效率。
在一个实施例中,所述方法还可以包括如下步骤:
基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息。
作为一示例,操作信息可以是表征或记录用户操作方式的信息。
在具体实现中,在确定各个任务的任务执行顺序时,虽然可以由用户预先编写脚本,终端根据预设的脚本执行对应的任务。但是此方式需要专门的工作人员编写脚本,编写成本较高且过程复杂。
而在本实施例中,用户可以对至少一个任务中的各个任务进行操作,终端可以接收到针对至少一个任务中各个任务对应的操作信息,通过对操作信息进行分析后,可以获取到各个任务分别对应的依赖关系信息。
在本实施例中,基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息,实现了基于用户对各个任务的操作,即可以获取依赖关系信息并生成任务执行顺序,使终端确定任务执行顺序,无需用户编写脚本,大大降低了操作复杂度。
在一个实施例中,在所述基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息的步骤之前,所述方法还包括如下步骤:
显示所述至少一个任务中各个任务对应的任务对象;响应于针对至少一个任务对象中各个任务对象的用户操作,获取所述至少一个任务中各个任务的操作信息。
作为一示例,任务对象可以是显示界面中的可视化对象,例如控件或组件。每个任务对象可以对应一个任务。
用户操作可以是用户在显示界面中针对任务对象的操作,用户操作可以包括以下至少一种:点击操作、拖动操作、连接操作。其中,用户可以通过手指、鼠标、触控笔等至少一种操作介质实现上述操作;点击操作可以包括单击操作和/或双击操作。
在实际应用中,终端可以在显示界面中显示至少一个任务中各个任务对应的任务对象,例如在显示界面中显示预编译任务、编译任务、打包任务和部署任务各自对应的任务对象。在显示各个任务对应的任务对象后,用户可以对显示界面中的任务对象进行用户操作。响应于针对至少一个任务对象中各个任务对象的用户操作,终端可以获取到至少一个任务中各个任务对应的操作信息。
具体例如,如图4a所示,可以在显示界面中显示任务对象A、B、C、D和E,各个任务对象分别具有对应的任务,用户可以通过鼠标拖动任务对象,形成如4b所示的排列。终端通过检测用户对任务对象的拖动顺序和/或拖动位置,确定各个任务对象对应的操作信息。
在本实施例中,终端可以显示至少一个任务中各个任务对应的任务对象,响应于针对至少一个任务对象中各个任务对象的用户操作,获取至少一个任务中各个任务的操作信息,用户通过对可视化的任务对象进行简单的操作,即可使终端确定任务执行顺序,无需用户编写脚本,大大降低了操作复杂度。
在一个实施例中,所述基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息,可以包括如下步骤:
若所述操作信息包括各个任务对象对应的连接路径,根据所述连接路径,确定各个任务分别对应的依赖关系信息;或者,若所述操作信息包括各个任务对象对应的移动时间,根据多个移动时间对应的时间顺序,确定各个任务分别对应的依赖关系信息。
作为一示例,操作信息可以包括以下至少一种:任务对象对应的连接路径、移动时间。其中,连接路径可以是显示界面中连接各个任务对象的路径;移动时间可以是任务对象发生移动的时间,如首次移动的时间。
在实际应用中,在获取到至少一个任务中各个任务对应的操作信息后,若操作信息包括各个任务对象对应的连接路径,终端可以根据连接路径,确定各个任务分别对应的依赖关系信息。
例如,通过对任务对象进行用户操作,在显示界面中可以形成如图4b所示的连接路径。其中,任务A被任务B、C、D和E连接,而在任务A之前未连接其它任务,因此,可以确定任务B、C、D和E直接或间接地依赖于任务A。终端通过对图4b所示的连接路径进行分析后,可以得到任务A、B、C、D和E的依赖关系信息,其可以形成如图4c所示的图形信息:“A→(B,C)→D→E”。其中,任务B和C直接依赖于任务A,任务D依赖于任务B和C,任务E依赖于任务D,任务B和C之间可以彼此独立,不存在依赖关系。由此,终端可以根据各个任务对象的连接路径,得到各个任务分别对应的依赖关系信息。
若操作信息中包括各个任务对象对应的移动时间,根据多个移动时间对应的时间顺序,确定各个任务分别对应的依赖关系信息。具体例如,用户可以通过点击操作对任务对象进行排布,则终端响应于用户的点击操作,可以移动显示界面中的任务对象,并获取各个任务对象对应的移动时间,进而可以对多个移动时间进行排序,得到对应的时间顺序,并且可以根据时间顺序确定各个任务分别对应的依赖关系信息。例如,可以确定移动时间最早的任务A不依赖于其它任务,针对移动时间在任务A之后的任务B,则可以确定任务B依赖于任务A。
在本实施例中,若操作信息包括各个任务对象对应的连接路径,可以根据连接路径,确定各个任务分别对应的依赖关系信息,或者,若操作信息包括各个任务对象对应的移动时间,根据多个移动时间对应的时间顺序,确定各个任务分别对应的依赖关系信息,终端能够根据用户针对任务对象的操作,获取到各个任务之间的依赖关系信息,避免用户编写脚本,降低了操作复杂度。
在一个实施例中,所述方法还可以包括如下步骤:
根据所述任务执行顺序,从所述至少一个任务中,获取当前待执行的至少一个目标任务,若当前的各个目标任务执行完毕,且存在未执行的任务,再次执行所述根据所述任务执行顺序,从所述至少一个任务中,确定当前待执行的至少一个目标任务的步骤,直到各个任务执行完毕。
在实际应用中,在得到任务执行顺序后,可以根据任务执行顺序,从已获取的至少一个任务中,获取当前待执行的至少一个目标任务。在一示例中,若当前待处理的任务为至少两个任务,则可以将待处理的至少两个任务中各个任务,确定为目标任务。
在确定出至少一个目标任务后,可以执行至少一个目标任务中的各个目标任务。例如可以由终端执行,也可以向分布式服务器发送任务执行指令,触发各个服务器执行对应任务。
若检测到当前的各个目标任务执行完毕,并且存在未执行的任务,则可以再次执行到根据任务执行顺序,从至少一个任务中,获取当前待执行的至少一个目标任务的步骤,根据任务执行顺序依次执行各个任务,直到当前的各个任务执行完毕。
在本实施例中,可以根据任务执行顺序,从至少一个任务中,获取当前待执行的至少一个目标任务,若当前的各个目标任务执行完毕,且存在未执行的任务,则可以再次执行根据所述任务执行顺序,从至少一个任务中,确定当前待执行的至少一个目标任务的步骤,直到各个任务执行完毕,能够根据任务执行顺序,自动执行各个任务,有效提高任务执行过程的有序性。
在一示例中,在执行至少一个任务中的各个任务时,如对代码进行编译部署,针对在单台服务器进行代码编译部署,用户虽然可以手动启动存在依赖关系的任务,完成代码的编译部署,然而,存在操作繁琐且容易出错的缺点同时,当服务器为分布式的多台服务器时,仅仅通过用户手动启动任务,难以实现多台服务器之间的工作任务协调。而在本实施例中,能够自动生成对应的任务执行顺序,则无论是单台服务器或多台服务器,终端都可以按照任务执行顺序自动触发任务执行,既避免用户手动启动任务,又提高了任务执行过程中的效率和有序性。
在一个实施例中,所述方法还可以包括如下步骤:
确定报错的任务;以报错的任务为当前的执行起点,根据所述任务执行顺序,执行当前剩余的任务。
在具体实现中,在执行任务时,若检测到任务报错信息,可以确定任务报错信息针对的任务,即报错的任务,并且,可以通过数据库记录该任务。
在确定报错的任务后,若接收到重新执行指令,可以以报错的任务为当前的执行起点,根据任务执行顺序,继续执行当前剩余的任务。例如在进行容错处理时,可以从发生错误的任务开始,重新执行任务。
例如,如图5所示,响应于用户的触发操作,终端可以根据已获取的任务执行顺序,依次开始执行各个任务,在执行过程中,若检测到针对任一任务的任务报错信息,可以记录对应的任务(对应于图5中的错误点存储),得到错误点。从而在因为任务报错而进行容错处理、重新执行任务时,可以从记录的错误点开始,重新执行错误点对应的任务。
在本实施例中,可以确定报错的任务,并以报错的任务为任务执行起点,根据任务执行顺序,执行当前剩余的任务,避免从首个任务开始重新执行,大大缩短了容错处理时间。
应该理解的是,虽然图2、图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的处理顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种应用构建装置,所述装置可以包括:
任务获取模块601,获取至少一个任务;所述任务为基于预设代码构建目标应用的过程中所涉及的任务;
任务执行顺序生成模块602,根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序;
所述至少一个任务中的所述各个任务按照所述任务执行顺序进行应用构建。
在一个实施例中,所述任务执行顺序生成模块602,包括:
独立任务确定子模块,用于根据所述至少一个任务中各个任务对应的依赖关系信息,确定出作为执行起点的独立于任意任务的独立任务;
依赖任务查找子模块,用于将所述独立任务确定为当前任务,并确定是否存在依赖于所述当前任务的至少一个下一任务;若是,调用任务次序确定子模块;
任务次序确定子模块,用于确定所述至少一个下一任务中各个下一任务对应的任务次序,并将各个下一任务确定为当前任务,再次执行确定是否存在依赖于所述当前任务的至少一个下一任务的步骤,直到确定各个任务对应的任务次序;
任务执行顺序确定子模块,用于根据所述独立任务和各个任务次序,生成任务执行顺序。
在一个实施例中,所述任务次序确定子模块,包括:
下一任务次序确定单元,用于基于所述当前任务对应的任务次序,确定依赖于所述当前任务的下一任务的任务次序;或者,
任务次序分配单元,用于若依赖于上一任务的下一任务中包括至少两个下一任务,将当前的任务次序,作为至少两个下一任务中各个任务对应的任务次序。
在一个实施例中,所述依赖任务查找子模块,包括:
遍历单元,用于若存在未确定任务次序的至少一个候选任务,遍历所述至少一个候选任务中各个候选任务对应的依赖关系信息;
依赖任务确定单元,用于根据各个候选任务对应的依赖关系信息,确定是否存在直接依赖于所述当前任务的至少一个下一任务。
在一个实施例中,还包括:
依赖关系信息获取模块,用于基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息。
在一个实施例中,所述装置还包括:
任务对象显示模块,用于显示所述至少一个任务中各个任务对应的任务对象;
操作信息获取模块,用于响应于针对至少一个任务对象中各个任务对象的用户操作,获取所述至少一个任务中各个任务的操作信息。
在一个实施例中,所述依赖关系信息获取模块,包括:
连接路径读取子模块,用于若所述操作信息包括各个任务对象对应的连接路径,根据所述连接路径,确定各个任务分别对应的依赖关系信息;
或者,
时间顺序确定子模块,用于若所述操作信息包括各个任务对象对应的移动时间,根据多个移动时间对应的时间顺序,确定各个任务分别对应的依赖关系信息。
在一个实施例中,还包括:
目标任务确定模块,用于根据所述任务执行顺序,从所述至少一个任务中,确定当前待执行的至少一个目标任务;
顺序执行模块,用于若当前的各个目标任务执行完毕,且存在未执行的任务,再次执行所述根据所述任务执行顺序,从所述至少一个任务中,确定当前待执行的至少一个目标任务的步骤,直到各个任务执行完毕。
关于一种应用构建装置的具体限定可以参见上文中对于一种应用构建方法的限定,在此不再赘述。上述一种应用构建装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种应用构建方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取至少一个任务;所述任务为基于预设代码构建目标应用的过程中所涉及的任务;
根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序;
所述至少一个任务中的所述各个任务按照所述任务执行顺序进行应用构建。
在一个实施例中,处理器执行计算机程序时还实现上述其他实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取至少一个任务;所述任务为基于预设代码构建目标应用的过程中所涉及的任务;
根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序;
所述至少一个任务中的所述各个任务按照所述任务执行顺序进行应用构建。
在一个实施例中,计算机程序被处理器执行时还实现上述其他实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种应用构建方法,其特征在于,所述方法包括:
获取至少一个任务;所述任务为基于预设代码构建目标应用的过程中所涉及的任务;
根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序;
所述至少一个任务中的所述各个任务按照所述任务执行顺序进行应用构建。
2.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序,包括:
根据所述至少一个任务中各个任务对应的依赖关系信息,确定出作为执行起点的独立于任意任务的独立任务;
将所述独立任务确定为当前任务,并确定是否存在依赖于所述当前任务的至少一个下一任务;
若是,确定所述至少一个下一任务中各个下一任务对应的任务次序,并将各个下一任务确定为当前任务,再次执行确定是否存在依赖于所述当前任务的至少一个下一任务的步骤,直到确定各个任务对应的任务次序;
根据所述独立任务和各个任务次序,生成任务执行顺序。
3.根据权利要求2所述的方法,其特征在于,所述确定所述至少一个下一任务中各个下一任务对应的任务次序,包括:
基于所述当前任务对应的任务次序,确定依赖于所述当前任务的下一任务的任务次序;或者,
若依赖于上一任务的下一任务中包括至少两个下一任务,将当前的任务次序,作为所述至少两个下一任务中各个任务对应的任务次序。
4.根据权利要求2所述的方法,其特征在于,所述确定是否存在依赖于所述当前任务的至少一个下一任务,包括:
若存在未确定任务次序的至少一个候选任务,遍历所述至少一个候选任务中各个候选任务对应的依赖关系信息;
根据各个候选任务对应的依赖关系信息,确定是否存在直接依赖于所述当前任务的至少一个下一任务。
5.根据权利要求1所述的方法,其特征在于,还包括:
基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息。
6.根据权利要求5所述的方法,其特征在于,在所述基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息的步骤之前,所述方法还包括:
显示所述至少一个任务中各个任务对应的任务对象;
响应于针对至少一个任务对象中各个任务对象的用户操作,获取所述至少一个任务中各个任务的操作信息。
7.根据权利要求6所述的方法,其特征在于,所述基于接收到的对所述至少一个任务中各个任务的操作信息,获取各个任务分别对应的依赖关系信息,包括:
若所述操作信息包括各个任务对象对应的连接路径,根据所述连接路径,确定各个任务分别对应的依赖关系信息;
或者,
若所述操作信息包括各个任务对象对应的移动时间,根据多个移动时间对应的时间顺序,确定各个任务分别对应的依赖关系信息。
8.根据权利要求1至7任一项所述的方法,其特征在于,还包括:
根据所述任务执行顺序,从所述至少一个任务中,确定当前待执行的至少一个目标任务;
若当前的各个目标任务执行完毕,且存在未执行的任务,再次执行所述根据所述任务执行顺序,从所述至少一个任务中,确定当前待执行的至少一个目标任务的步骤,直到各个任务执行完毕。
9.一种应用构建装置,其特征在于,所述装置包括:
任务获取模块,获取至少一个任务;所述任务为基于预设代码构建目标应用的过程中所涉及的任务;
任务执行顺序生成模块,根据所述至少一个任务中各个任务对应的依赖关系信息,生成任务执行顺序;
所述至少一个任务中的所述各个任务按照所述任务执行顺序进行应用构建。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110640041.7A CN113094052A (zh) | 2021-06-09 | 2021-06-09 | 应用构建方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110640041.7A CN113094052A (zh) | 2021-06-09 | 2021-06-09 | 应用构建方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113094052A true CN113094052A (zh) | 2021-07-09 |
Family
ID=76664495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110640041.7A Pending CN113094052A (zh) | 2021-06-09 | 2021-06-09 | 应用构建方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113094052A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114240265A (zh) * | 2022-02-25 | 2022-03-25 | 北京宝兰德软件股份有限公司 | 一种基于混合环境的产品部署方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648786A (zh) * | 2016-12-28 | 2017-05-10 | 深圳Tcl数字技术有限公司 | Android应用程序构建方法及*** |
US20180081653A1 (en) * | 2016-09-21 | 2018-03-22 | International Business Machines Corporation | Accelerating software builds |
CN108287694A (zh) * | 2017-08-08 | 2018-07-17 | 深圳壹账通智能科技有限公司 | 应用程序构建方法、***、计算机设备和存储介质 |
CN109491777A (zh) * | 2018-11-12 | 2019-03-19 | 北京字节跳动网络技术有限公司 | 任务执行方法、装置、设备及存储介质 |
CN110225082A (zh) * | 2019-04-30 | 2019-09-10 | 北京奇艺世纪科技有限公司 | 任务处理方法、装置、电子设备和计算机可读介质 |
CN110825391A (zh) * | 2019-10-31 | 2020-02-21 | 北京金山云网络技术有限公司 | 服务管理方法、装置、电子设备及存储介质 |
CN111104211A (zh) * | 2019-12-05 | 2020-05-05 | 山东师范大学 | 基于任务依赖的计算卸载方法、***、设备及介质 |
CN111258740A (zh) * | 2020-02-03 | 2020-06-09 | 北京无限光场科技有限公司 | 一种用于启动应用程序的方法、装置和电子设备 |
US20200264848A1 (en) * | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Single page application continuous integration, build, and deployment |
CN112199125A (zh) * | 2020-09-18 | 2021-01-08 | 上海硬通网络科技有限公司 | 应用的启动方法、装置及电子设备 |
CN112925587A (zh) * | 2021-03-11 | 2021-06-08 | 北京百度网讯科技有限公司 | 用于初始化应用的方法和装置 |
-
2021
- 2021-06-09 CN CN202110640041.7A patent/CN113094052A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180081653A1 (en) * | 2016-09-21 | 2018-03-22 | International Business Machines Corporation | Accelerating software builds |
CN106648786A (zh) * | 2016-12-28 | 2017-05-10 | 深圳Tcl数字技术有限公司 | Android应用程序构建方法及*** |
CN108287694A (zh) * | 2017-08-08 | 2018-07-17 | 深圳壹账通智能科技有限公司 | 应用程序构建方法、***、计算机设备和存储介质 |
CN109491777A (zh) * | 2018-11-12 | 2019-03-19 | 北京字节跳动网络技术有限公司 | 任务执行方法、装置、设备及存储介质 |
US20200264848A1 (en) * | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Single page application continuous integration, build, and deployment |
CN110225082A (zh) * | 2019-04-30 | 2019-09-10 | 北京奇艺世纪科技有限公司 | 任务处理方法、装置、电子设备和计算机可读介质 |
CN110825391A (zh) * | 2019-10-31 | 2020-02-21 | 北京金山云网络技术有限公司 | 服务管理方法、装置、电子设备及存储介质 |
CN111104211A (zh) * | 2019-12-05 | 2020-05-05 | 山东师范大学 | 基于任务依赖的计算卸载方法、***、设备及介质 |
CN111258740A (zh) * | 2020-02-03 | 2020-06-09 | 北京无限光场科技有限公司 | 一种用于启动应用程序的方法、装置和电子设备 |
CN112199125A (zh) * | 2020-09-18 | 2021-01-08 | 上海硬通网络科技有限公司 | 应用的启动方法、装置及电子设备 |
CN112925587A (zh) * | 2021-03-11 | 2021-06-08 | 北京百度网讯科技有限公司 | 用于初始化应用的方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114240265A (zh) * | 2022-02-25 | 2022-03-25 | 北京宝兰德软件股份有限公司 | 一种基于混合环境的产品部署方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190227917A1 (en) | Adaptive system for mobile device testing | |
CN109739855B (zh) | 实现数据表拼接及自动训练机器学习模型的方法和*** | |
CN108459964B (zh) | 测试用例选择方法、装置、设备以及计算机可读存储介质 | |
CN113742119A (zh) | 嵌入式***的调用栈回溯方法、装置和计算机设备 | |
CN112465466B (zh) | 流程任务执行方法、装置、计算机设备和存储介质 | |
CN108595343A (zh) | 应用程序的测试方法及装置 | |
CN111897727A (zh) | 软件测试方法、装置、计算机设备及存储介质 | |
CN110597704B (zh) | 应用程序的压力测试方法、装置、服务器和介质 | |
US20170075789A1 (en) | Method and apparatus for generating, capturing, storing, and loading debug information for failed tests scripts | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN110597552B (zh) | 项目持续集成流水线的配置方法、装置、设备及存储介质 | |
EP3734460B1 (en) | Probabilistic software testing via dynamic graphs | |
CN105453033A (zh) | 程序测试服务 | |
CN113505895B (zh) | 一种机器学习引擎服务***及模型训练方法和配置方法 | |
KR101689984B1 (ko) | 프로그래머블 컨트롤러, 프로그래머블 컨트롤러 시스템 및 실행 에러 정보 작성 방법 | |
US8769498B2 (en) | Warning of register and storage area assignment errors | |
CN113094052A (zh) | 应用构建方法、装置、计算机设备和存储介质 | |
CN110232018A (zh) | 接口测试方法、装置、计算机设备 | |
CN113742224A (zh) | 测试***、方法、装置、计算机设备和存储介质 | |
CN112181853A (zh) | 程序调试方法、装置及*** | |
CN113535182B (zh) | 项目工程的构建方法、装置、计算机设备和存储介质 | |
CN111324332A (zh) | 大数据任务的处理方法及***、电子设备、存储介质 | |
JP2023044720A (ja) | クラッシュしたアプリケーションを修復するためのコンピュータ実装方法、コンピュータプログラム製品、およびリモートコンピュータサーバ(クラッシュしたプロセスのリモート修復) | |
CN113971124B (zh) | 子应用的调试方法、装置、计算机设备和存储介质 | |
CN114968751A (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: 20210709 |
|
RJ01 | Rejection of invention patent application after publication |