CN105068912B - 用于执行网页任务的方法和装置 - Google Patents
用于执行网页任务的方法和装置 Download PDFInfo
- Publication number
- CN105068912B CN105068912B CN201510454235.2A CN201510454235A CN105068912B CN 105068912 B CN105068912 B CN 105068912B CN 201510454235 A CN201510454235 A CN 201510454235A CN 105068912 B CN105068912 B CN 105068912B
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- executable
- queue
- executed
- 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
Links
Images
Abstract
本发明提供了一种用于执行网页任务的方法和装置。所述方法包括:确定任务队列中的各个任务的任务关系;根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务;以及为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
Description
技术领域
本发明涉及网络技术,并具体地涉及一种用于执行网页任务的方法和装置。
背景技术
作为Web2.0的核心技术,Ajax通过异步方式,在不刷新页面的情况下从服务器获取数据。Ajax不阻塞用户请求,提高了页面响应速度,降低了服务器的压力,给Web系统用户体验带来了质的飞越。
但是Ajax的大量使用,使前端页面代码充斥着大量的异步事件,它们可能在任何时刻以随机顺序被触发。当业务逻辑需要多个操作保持特定顺序,而这些操作又依赖多个异步请求时,问题就变得非常复杂。
在处理异步顺序问题时,现有的方式采用Ajax回调方法,即当Ajax请求成功或者失败后,在回调函数中处理下一步的操作。但是,当多个异步操作存在依赖关系时或一个操作依赖多个异步操作时,通过回调方式很难进行处理。这不仅给开发人员带来挑战,而且还具有以下缺点:
1.代码结构复杂,难以理解和维护,效率低下。如果有复杂的依赖关系,例如:Ajax任务C同时依赖Ajax任务A和ajax任务B,那么只能先执行Ajax任务A,再在A的回调函数中执行任务B,然后在B的回调函数中执行任务C。这样不仅程序复杂,而且A和B需要顺序执行,没有并发执行,效率低下。
2.异步调用顺序难以保证,容易引发系统bug,而且bug具有随机性,难以发现。
3.同步调用会锁住页面,影响用户体验,效率低下。
4.依赖关系不能实现定制。当前端业务需要灵活配置的异步流程时,如使用Ajax回调方法处理异步请求顺序问题,需要复杂的控制逻辑。流程无法修改,更不能实现灵活配置。
发明内容
为了解决以上存在的至少一个问题,本发明提出了一种用于执行网页任务的方法和装置。
根据本发明的一个方面,提出了一种用于执行网页任务的方法,包括:a)确定任务队列中的各个任务的任务关系;b)根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务;以及c)为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
优选地,所述方法在步骤c之后还包括:d)当任何一个任务执行完毕后,回到步骤b。
优选地,所述方法在步骤a之前还包括:e)创建任务队列或更新已有的任务队列。
优选地,为所述任务队列中的每个任务指定以下各项中的至少一个:任务类型、前驱任务列表、后继任务列表以及执行条件。
优选地,所述任务类型包括:同步任务和/或异步任务。
优选地,所述任务关系包括:依赖关系和/或执行条件。
优选地,所述依赖关系是基于前驱任务列表和/或后继任务列表确定的。
优选地,步骤b包括:如果存在针对任务的执行条件,则只有当所述执行条件被满足时,所述任务才被确定为可执行的任务。
根据本发明的另一方面,还提出了一种用于执行网页任务的设备,包括:关系确定装置,用于确定任务队列中的各个任务的任务关系;可执行任务确定装置,用于根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务;以及执行装置,用于为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
通过以上所提出的方法和设备,不仅解决了包含Ajax异步调用的多个互相依赖的功能模块的顺序问题,使业务逻辑代码与异步顺序控制解耦,而且还使页面既具有Ajax异步性的便利,并同时能根据用户指定的顺序依次执行。所提出的方案支持对多个相互依赖的异步流程的灵活定制。
附图说明
图1是根据本发明的一种实施例的执行网页任务的方法的流程图;
图2是根据本发明的一种实施例的执行网页任务的设备的结构框图;
图3是示例性的任务依赖关系图;
图4是根据本发明的一种具体实施例的详细流程。
具体实施方式
以下结合附图对本发明的具体实施方式进行具体说明。
首先参见图1,图1是根据本发明的一种实施例的执行网页任务的方法100的流程图。如图所示,所示方法100起始于步骤S110,确定任务队列中的各个任务的任务关系。接着,在步骤S120中,根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务。最后,在步骤S130中,为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
在步骤S110中,首先确定任务队列中的各个任务的任务关系。
其中,任务是对应于需要同步的操作的代码序列的组合。任务队列是用户需要执行的多个相互依赖的任务的集合。为了实现任务的自动调度,可以把多个任务以一个Javascript(Js)无参数函数function{任务1,任务2....}包含起来。
任务包括两种任务类型,即同步任务和异步任务。异步任务指Ajax异步请求数据任务,这是主要需要同步代码内容。同步任务则是不包含Ajax异步请求的任何Js代码(例如dom操作,数据处理等)。
优选地,可以指明任务的任务类型是同步任务还是异步任务,以便于创建不同的任务代理。
所述任务关系包括:依赖关系和/或执行条件。
所述依赖关系是基于前驱任务列表和/或后继任务列表确定的。任务的前驱任务列表由任务的所有前驱任务构成。任务的后继任务列表由任务的所有后继任务构成。前驱任务表示所述任务所依赖于的任务,即只有全部前驱任务执行完毕后,才可执行所述任务。后继任务表示依赖于所述任务的任务,即只有执行完所述任务后,才有可能执行任何后继任务(必要条件,不一定是充分的)。
所述执行条件是决定是否能够执行所述任务的条件。如果存在针对某一任务的执行条件,则即使该任务的所有前驱任务都已执行完毕,也需要判断所述执行条件,只有当所述执行条件被满足时才可执行所述任务。优选的,所述执行条件可以是某一前驱节点的成功或失败。
优选地,在执行步骤S110之前,需要创建任务队列或更新已有的任务队列,并为每个任务指定以下各项中的至少一个:任务类型、前驱任务列表、后继任务列表以及执行条件。
在一种优选的实施例中,可通过创建依赖关系图来确定所述任务关系。如图3所示,依赖关系图是一个有向无环图,可以表示出任务的依赖关系。每个节点代表一个任务,深色节点代表异步任务,白色节点代表同步任务。Ajax属于异步任务,异步任务一般会有两个分支,一个代表成功返回,一个代表失败。同步任务主要指一些非异步操作,例如,运算或者dom操作等。任务之间连线代表依赖关系,依赖的任务执行完,才可以执行后续任务。优选的,所述依赖关系图还可表示出执行条件。例如:成功执行一个分支,失败执行另一个分支。此外,有些任务不需要执行条件,即只要前驱任务完成后,就可以启动。
然后,在步骤S120中,根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务。
在该步骤中,通过任务关系可以确定一个任务的所有前驱任务和后继任务,得到所有任务之间的依赖关系。只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务。并且,如果存在针对任务的执行条件的话,则只有当所述执行条件被满足时,所述任务才被确定为可执行的任务。
优选地,通过任务扫描的方式确定所有可执行的任务。
最后,在步骤S130中,为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
任务代理是对任务的包装,不仅会执行任务、更新任务完成状态,而且根据任务的类型(同步、异步)创建通知,如果是同步任务,直接通知任务扫描模块继续扫描。如果是异步任务,在异步的回调函数中注册通知。
优选地,对于有执行结果的任务,可以把结果保存到一个与任务关联的结构中,可以供后续的任务提取使用。例如,如果后一个任务需要使用前一个任务的Ajax结果,则可以通过该方式实现提取。
优选地,在执行执行完任何一个任务后,所述方法可以回到步骤S120,即再次判断执行完任务后的新情况下有哪些任务是可执行的,并对其进行执行,以此类推。
下面,参照图2描述根据本发明的一种实施例的执行网页任务的设备200的结构框图。如图所示,所述装置包括:关系确定装置210、可执行任务确定装置220和执行装置230。其中,所述关系确定装置210用于确定任务队列中的各个任务的任务关系。所述可执行任务确定装置220用于根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务。所述执行装置230用于为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
该执行网页任务的设备200与上述执行网页任务的方法100相对应。以上对方法100的具体描述和解释同样适用于装置200,在此不再赘述。
图4是根据本发明的一种具体实施例的详细流程。需要指出的是,该详细流程只是示例,并不限制本发明的范围,其它实施例的步骤可以多于或少于该具体实施例的步骤,并且还可通过其它步骤对该具体实施例的步骤进行替换以实现同样的功能。
-在流程开始后,把需要顺序控制的任务定义成函数,为系统添加任务。添加每个任务时需要指定任务类型、前驱和后继任务列表、任务的执行条件等。
-任务添加完毕后,执行启动操作。优选地,根据所有任务创建保存任务依赖关系的有向无环图,记录任务的前驱任务和后继任务。
-接下来,扫描任务依赖关系图,取出可以执行的任务(即前驱任务已经完成或不存在),创建任务代理进行执行。任务代理的作用不仅包含执行任务,而且在任务执行完毕后保存执行结果、并且发消息通知。如果是异步任务,通过注册事件的方式,使任务执行完毕后发出消息通知。
-任何任务执行完毕后,都会发出通知,通知通过再次触发之前的流程,重新对可执行任务列表进行计算。通过这种方式,每个任务执行完毕后,才重新计算可执行任务列表,使任务队列不断向前推进,比采用定期任务扫描更高效。
-任务执行完毕后,通过标志位记录其状态,根据该状态判断当前哪些任务可以执行。
-全部任务执行完毕后,销毁内存结构。
尽管以上已经结合本发明的优选实施例示出了本发明,但是本领域的技术人员将会理解,在不脱离本发明的精神和范围的情况下,可以对本发明进行各种修改、替换和改变。因此,本发明不应由上述实施例来限定,而应由所附权利要求及其等同来限定。
Claims (16)
1.一种用于执行网页任务的方法,包括:
步骤a,确定任务队列中的各个任务的任务关系;
步骤b,根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务,所述可执行的任务包括多个任务;以及
步骤c,为每个可执行的任务分别创建任务代理,得到多个任务代理,并通过所述多个任务代理并行地执行所述多个任务代理各自对应的任务。
2.根据权利要求1所述的方法,所述方法在所述步骤c之后还包括:
步骤d,当任何一个任务执行完毕后,返回执行所述步骤b。
3.根据权利要求1所述的方法,所述方法在所述步骤a之前还包括:
步骤e,创建任务队列或更新已有的任务队列。
4.根据权利要求3所述的方法,其中为所述任务队列中的每个任务指定以下各项中的至少一个:任务类型、前驱任务列表、后继任务列表以及执行条件。
5.根据权利要求4所述的方法,其中所述任务类型包括:同步任务和/或异步任务。
6.根据权利要求1-3中的任一项所述的方法,其中所述任务关系包括:依赖关系和/或执行条件。
7.根据权利要求6所述的方法,其中所述依赖关系是基于前驱任务列表和/或后继任务列表确定的。
8.根据权利要求1-3中的任一项所述的方法,其中所述步骤b包括:
如果存在针对任务的执行条件,则只有当所述执行条件被满足时,所述任务才被确定为可执行的任务。
9.一种用于执行网页任务的设备,包括:
关系确定装置,用于确定任务队列中的各个任务的任务关系;
可执行任务确定装置,用于根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务,所述可执行的任务包括多个任务;以及
执行装置,用于为每个可执行的任务分别创建任务代理,得到多个任务代理,并通过所述多个任务代理并行地执行所述多个任务代理各自对应的任务。
10.根据权利要求9所述的设备,其中:
当所述执行装置执行了任何一个任务后,所述可执行任务确定装置重新扫描可执行的任务。
11.根据权利要求9所述的设备,还包括:
队列创建装置,用于创建任务队列或更新已有的任务队列。
12.根据权利要求11所述的设备,其中为所述任务队列中的每个任务指定以下各项中的至少一个:任务类型、前驱任务列表、后继任务列表以及执行条件。
13.根据权利要求12所述的设备,其中所述任务类型包括:同步任务和/或异步任务。
14.根据权利要求9-11中的任一项所述的设备,其中所述任务关系包括:依赖关系和/或执行条件。
15.根据权利要求14所述的设备,其中所述依赖关系是基于前驱任务列表和/或后继任务列表确定的。
16.根据权利要求9-11中的任一项所述的设备 ,其中:
如果存在针对任务的执行条件,则只有当所述执行条件被满足时,所述可执行任务确定装置才将所述任务确定为可执行的任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510454235.2A CN105068912B (zh) | 2015-07-29 | 2015-07-29 | 用于执行网页任务的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510454235.2A CN105068912B (zh) | 2015-07-29 | 2015-07-29 | 用于执行网页任务的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105068912A CN105068912A (zh) | 2015-11-18 |
CN105068912B true CN105068912B (zh) | 2020-05-01 |
Family
ID=54498289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510454235.2A Active CN105068912B (zh) | 2015-07-29 | 2015-07-29 | 用于执行网页任务的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105068912B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124388B (zh) * | 2016-02-25 | 2020-10-30 | 创新先进技术有限公司 | 一种业务与算法解耦的方法、装置及系统 |
CN107943577B (zh) * | 2016-10-12 | 2022-03-04 | 上海优扬新媒信息技术有限公司 | 用于调度任务的方法和装置 |
CN107526631B (zh) * | 2017-09-01 | 2021-01-08 | 百度在线网络技术(北京)有限公司 | 一种任务监控方法、装置、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853182A (zh) * | 2010-05-05 | 2010-10-06 | 中兴通讯股份有限公司 | 基于数据库的任务执行方法及装置 |
CN103164273A (zh) * | 2012-09-06 | 2013-06-19 | 佳都新太科技股份有限公司 | 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法 |
CN104133724A (zh) * | 2014-04-03 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 并发任务调度方法及装置 |
CN104391917A (zh) * | 2014-11-19 | 2015-03-04 | 四川长虹电器股份有限公司 | 一种增量抓取网页内容的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8079025B2 (en) * | 2007-06-08 | 2011-12-13 | Apple Inc. | Asynchronous load of source dependencies |
US8701096B2 (en) * | 2009-10-15 | 2014-04-15 | Adobe Systems Incorporated | In-order execution in an asynchronous programming environment |
CN102455933B (zh) * | 2010-10-22 | 2014-01-15 | 深圳市科陆电子科技股份有限公司 | 一种通过线程管理提高多任务处理效率的方法 |
CN102932390B (zh) * | 2011-08-11 | 2015-07-08 | 阿里巴巴集团控股有限公司 | 一种网络请求的处理方法和系统、网络服务提供装置 |
CN102508716B (zh) * | 2011-09-29 | 2015-04-15 | 用友软件股份有限公司 | 任务控制装置和任务控制方法 |
CN103780635B (zh) * | 2012-10-17 | 2017-08-18 | 百度在线网络技术(北京)有限公司 | 云环境中的分布式异步任务队列执行系统和方法 |
CN104572036B (zh) * | 2013-10-12 | 2020-08-11 | 腾讯科技(深圳)有限公司 | 事件的处理方法及装置 |
-
2015
- 2015-07-29 CN CN201510454235.2A patent/CN105068912B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853182A (zh) * | 2010-05-05 | 2010-10-06 | 中兴通讯股份有限公司 | 基于数据库的任务执行方法及装置 |
CN103164273A (zh) * | 2012-09-06 | 2013-06-19 | 佳都新太科技股份有限公司 | 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法 |
CN104133724A (zh) * | 2014-04-03 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 并发任务调度方法及装置 |
CN104391917A (zh) * | 2014-11-19 | 2015-03-04 | 四川长虹电器股份有限公司 | 一种增量抓取网页内容的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105068912A (zh) | 2015-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8572618B2 (en) | Event driven change injection and dynamic extensions to a business process execution language process | |
US11188380B2 (en) | Method and apparatus for processing task in smart device | |
CN107016480B (zh) | 任务调度方法、装置及系统 | |
CN108008950B (zh) | 一种用户界面更新的实现方法及装置 | |
CN105068912B (zh) | 用于执行网页任务的方法和装置 | |
CN110609755A (zh) | 跨区块链节点的消息处理方法及装置、设备、介质 | |
KR20150022849A (ko) | 핸드세이크를 이용한 클라이언트 인터페이스 실행 중의 자동 업데이트 기법 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN112379993A (zh) | 一种机器人流程自动化处理系统、方法及装置 | |
CN112783568A (zh) | 应用程序的初始化方法、装置、设备和存储介质 | |
US10303558B2 (en) | Checkpointing higher order query operators | |
US11500652B2 (en) | Method and system for application loading | |
CN107463390B (zh) | 一种软件升级方法及升级服务器 | |
CN111200651A (zh) | 定时调用微服务的方法、系统、设备和介质 | |
CN115390897B (zh) | 微前端管理的方法、装置、电子设备及存储介质 | |
CN113419829B (zh) | 作业调度方法、装置、调度平台及存储介质 | |
CN111381976A (zh) | 消息提示数据的更新方法、装置、存储介质及计算机设备 | |
CN111338775B (zh) | 一种执行定时任务的方法及设备 | |
CN114816866A (zh) | 故障处理方法、装置、电子设备和存储介质 | |
CN114884906A (zh) | 基于快速恢复的失败重试通知方法及装置 | |
CN114237775A (zh) | 一种并行执行方法、装置、电子设备及存储介质 | |
CN112799684B (zh) | 业务包获取和加载方法及装置 | |
CN113687882B (zh) | 基于activiti的流程回退方法、装置和存储介质 | |
US11693739B2 (en) | Hang detection and remediation in a multi-threaded application process | |
CN112650573B (zh) | 一种任务调度方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |