CN103092693B - 一种用于计算机的任务调度方法和*** - Google Patents
一种用于计算机的任务调度方法和*** Download PDFInfo
- Publication number
- CN103092693B CN103092693B CN201310034790.0A CN201310034790A CN103092693B CN 103092693 B CN103092693 B CN 103092693B CN 201310034790 A CN201310034790 A CN 201310034790A CN 103092693 B CN103092693 B CN 103092693B
- Authority
- CN
- China
- Prior art keywords
- time
- task
- perform
- parameters
- execution
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种用于计算机的任务调度方法和***,***包括时间触发单元、判断单元以及任务调度单元,方法包括:S1、经过第一时间间隔从任务调度配置文件中读取配置参数;S2、判断当前时间是否符合运行时间且不符合拒绝时间,是则执行步骤S3,否则执行步骤S1;S3、带入任务参数,运行执行文件参数对应的执行文件。本发明的方法和***集成了对多个任务的调度服务框架,降低了编写调度服务的难度,通过对配置参数的设置,允许在调度服务运行的状态下进行任务的增加和修改。允许设置拒绝时间,当当前时间符合运行时间且不符合拒绝时间时执行任务调度,实现更灵活的任务调度。
Description
技术领域
本发明涉及计算机领域,更具体地说,涉及一种用于计算机的任务调度方法和***。
背景技术
操作***中通常有多个需要自动执行的任务,这些任务可能每隔一段时间就要执行一次,也可能需要在指定的时间点自动执行,因此,这些任务需要在一定的时间间隔后或者特点的时间点被自动调度并运行。
在现实项目中,特别是大型的项目,需要开发各种Windows服务来为业务***运行提供各种数据的同步与各种计算处理,如果在一台服务器中有多个Windows任务运行时,很难对多个任务同时进行监控,并即时地维护它们的运行状态。
现有的实现操作***任务调度的技术有Windows任务计划,其中,命令和程序将定期运行或在指定时间点运行,可以从计划表中添加或删除任务,也可以按照需要启动和停止任务,显示和更改计划任务。
现有的实现操作***任务调度的技术具有以下缺陷:
(1)配置不方便,不便于维护;
(2)无法设置拒绝运行任务的时间。
发明内容
本发明针对现有的任务调度方法配置不方便,不易于维护,并且无法设置拒绝运行任务的时间的缺陷提供一种用于计算机的任务调度方法和***,配置简单合理易于维护,并且设置了拒绝运行任务的时间。
本发明解决其技术问题采用的技术方案是:提供一种用于计算机的任务调度方法,包括以下步骤:
S1、经过一预定的第一时间间隔,从任务调度配置文件中读取配置参数,所述配置参数包括执行文件参数、运行时间、拒绝时间、以及任务参数;
S2、判断***当前时间是否符合所述运行时间且不符合所述拒绝时间,是则执行步骤S3,否则继续执行步骤S1;
S3、带入所述任务参数,运行所述执行文件参数对应的执行文件。
优选地,步骤S2包括以下步骤:
S2a、将所述运行时间和所述拒绝时间按照秒、分、时、日或星期、月、以及年进行拆分;
S2b、获取当前时间,并将当前时间按照秒、分、时、日或星期、月、以及年进行拆分;
S2c、判断当前时间拆分出的各部分是否符合所述运行时间拆分出的对应部分,且不符合所述拒绝时间拆分出的对应部分,是则执行步骤S3,否则执行步骤S1。
优选地,所述执行文件参数包括应用程序名称,步骤S3包括以下步骤:
S3a、根据所述应用程序名称查找对应的应用程序;
S3b、带入所述任务参数,运行所述应用程序。
优选地,所述执行文件参数包括程序集名称、需要执行的类的名称、以及需要执行的方法的名称,步骤S3包括以下步骤:
S3c、根据所述程序集名称、所述需要执行的类的名称、以及所述需要执行的方法的名称,查找对应的程序集、需要执行的类、以及需要执行的方法;
S3d、将所述程序集名称反射到调度任务程序中执行;
S3e、在反射出的对象中找到需要执行的类以及需要执行的方法,带入所述任务参数并执行。
优选地,所述配置参数还包括任务名称。
优选地,所述方法还包括步骤:
S4、记录执行日志以及本次执行的时间。
提供一种用于计算机的任务调度***,所述***包括:
时间触发单元,用于经过一预定的第一时间间隔,从任务调度配置文件中读取配置参数,所述配置参数包括执行文件参数、运行时间、拒绝时间、以及任务参数;
判断单元,用于判断***当前时间是否符合所述运行时间且不符合所述拒绝时间;
任务调度单元,用于在当前时间符合所述运行时间且不符合所述拒绝时间时,带入所述任务参数,运行所述执行文件参数对应的执行文件。
优选地,所述判断单元包括:
第一拆分模块,用于将所述运行时间和所述拒绝时间按照秒、分、时、日或星期、月、以及年进行拆分;
第二拆分模块,用于获取当前时间,并将当前时间按照秒、分、时、日或星期、月、以及年进行拆分;
比较模块,用于判断当前时间拆分出的各部分是否符合所述运行时间拆分出的对应部分,且不符合所述拒绝时间拆分出的对应部分。
优选地,所述执行文件参数包括应用程序名称,所述任务调度单元包括:
第一查找模块,用于根据所述应用程序名称查找对应的应用程序;
第一执行模块,用于带入所述任务参数,运行所述应用程序;
或者,所述执行文件参数包括程序集名称、需要执行的类的名称、以及需要执行的方法的名称,所述任务调度单元包括:
第二查找模块,用于根据所述程序集名称、所述需要执行的类的名称、以及所述需要执行的方法的名称,查找对应的程序集、需要执行的类、以及需要执行的方法;
反射模块,用于将所述程序集名称反射到调度任务程序中执行;
第二执行模块,用于在反射出的对象中找到需要执行的类以及需要执行的方法,带入所述任务参数并执行。
优选地,所述***还包括步骤:
记录单元,用于记录执行日志以及本次执行的时间。
本发明的用于计算机的任务调度方法和***具有以下有益效果:配置参数包括执行文件参数、运行时间、拒绝时间、以及任务参数,集成了对多个任务的调度服务框架,降低了编写调度服务的难度,通过对配置参数的设置,允许在调度服务运行的状态下进行任务的增加和修改;允许设置拒绝时间,在当前时间符合运行时间且不符合拒绝时间时执行任务调度,实现更灵活的任务调度。
另外,日志统一处理,方便调度服务的监控与问题排查。
附图说明
图1为本发明的用于计算机的任务调度方法第一实施例的流程图;
图2为本发明的用于计算机的任务调度方法第二实施例的流程图;
图3为本发明的用于计算机的任务调度***第一实施例的功能框图;
图4为本发明的用于计算机的任务调度***第二实施例的功能框图。
具体实施方式
以下结合附图和实施例对本发明作进一步的解释说明。
图1为本发明的用于计算机的任务调度方法第一实施例的流程图,如图1所示,在本实施例中,本发明的方法包括以下步骤:
S1、经过一预设的第一时间间隔(例如,以不小于0.5秒),从任务调度配置文件中读取配置参数,所述配置参数包括执行文件参数、运行时间、拒绝时间、以及任务参数;
S2、判断当前时间是否符合运行时间且不符合拒绝时间,是则执行步骤S3,否则执行步骤S1;
S3、带入所述任务参数,运行所述执行文件参数对应的执行文件。
其中,执行文件可以是应用程序“*.exe”,也可以是编译好的程序集“*.dll”,当执行文件为应用程序时,执行文件参数为应用程序名称。当执行文件为程序集时,执行文件参数包括程序集名称、需要执行的类的名称、以及需要执行的方法的名称。
以下以执行文件为程序集示例配置文件:
<Assembly=“Demo.dll”Class=“Demo.Configure”method=“UploadFile”RunRules=“00***2011”DenyRules=“**12,13**2011”Args=“fpt://192.168.1.100/file”/>
其中,Assembly:动态连接库名称,执行文件名称;Class:需要执行的类的名称;method:需要执行的方法的名称;RunRules:运行时间(规则);DenyRules:拒绝时间(规则);Args:为任务参数,可对任务设置初始化参数,如上配置参数中配置的上传文件的FTP地址。以上配置解释为在2011年整年中每小时(除中午12点和13点外)都执行上传文件任务。
可以多种方式来定义运行时间和拒绝时间,例如,用空格将运行时间和拒绝时间分成的六段,分别表示为“秒、分、时、日或者星期、月、年”。允许使用符号“*”、“0~9”、“,”、“-”、“W”、以及“1W~5W”。其中,“*”表示所有,“,”表示或的规则,“-”表示范围,“W”只用在第四位“日”上表示周天,如:W0表示星期天,W6表示星期六。
更多时间规则例子:“0*****”,表示每分钟都运行;“05-10****”表示在每天每小时的5到10分钟执行;“05,15,25****”,表示在每天每小时的5分,15分,25分执行;“0012W1-W5**”,表示每周的星期一到星期五中午12点执行;“00123W1-3W5”,表示每月的第三周的星期一到星期五中午12点执行;如果要配置多个时间段可用“|”分割,如:“001215*|0012110*”表示每年的5月1号中午12点和10月1号中午12点执行。
在本实施例中,步骤S2包括以下步骤:S2a、将运行时间和拒绝时间按照秒、分、时、日或星期、月、以及年进行拆分;S2b、获取当前时间,并将当前时间按照秒、分、时、日或星期、月、以及年进行拆分;S2c、判断当前时间拆分出的各部分是否符合(属于)运行时间拆分出的对应部分,且不符合(不属于)拒绝时间拆分出的对应部分,若是则执行步骤S3,否则执行步骤S1。
例如,当前时间为2011-12-13、14:56:32,将当前时间、运行时间、以及拒绝时间按照“秒、分、时、日或星期、月、以及年”,如下表所示进行逐位比较。
表1当前时间、运行时间以及拒绝时间的对比表
规则是滴是 | 当前时间 | 运行规则 | 拒绝规则 | 是否通过 |
秒 | 32 | 0 | * | False |
分 | 56 | 0 | * | False |
时 | 14 | * | 12,13 | True |
日/星期 | 13 | * | * | True |
月 | 12 | * | * | True |
年 | 2011 | 2011 | 2011 | True |
当前时间拆分出的六个部分,只有同时与运行时间以及拒绝时间拆分出的六个部分同时相同(True)时,才执行调度任务。拒绝时间的设置是为了进一步约束运行时间。
在本实施例中,当执行文件为应用程序时,步骤S3包括以下步骤:S3a、根据应用程序名称查找对应的应用程序;S3b、带入任务参数直接打开(运行)应用程序。
所述执行文件为程序集时,步骤S3包括以下步骤:S3c、根据程序集名称、需要执行的类的名称、以及需要执行的方法的名称,查找对应的程序集、需要执行的类、以及需要执行的方法;S3d、将程序集名称反射到调度任务程序中执行;S3e、在反射出的对象中找到需要执行的类以及需要执行的方法,带入所述任务参数并执行。
以C#语言为例,在步骤S3d中,再用Assembly中的程序加载方法Load把程序集反射到调度任务程序中执行,如Assembly.LoadFile(“Demo.dll”);在步骤S3e中,在反射出来的对象中找到需要执行的类以及需要执行的方法,带入参数Args用InvokeMember()方法执行。
程序集是包含一个或多个类型定义文件和资源文件的集合,本发明中指的是实现任务以完成某特定功能的集合,最终以调用应用程序文件或者反射dll动态链接库形式运行。反射:可以在运行时获得程序集中的成员,包括方法、属性、事件,以及构造函数等,本发明运用反射通过读取配置参数从程序集中获取指定方法执行。
以上以单个任务为例,当具有多个任务时,在配置文件中设置多个任务对应的多组配置参数,经过第一时间间隔后,使用本发明的方法对多组配置参数进行并行处理,实现多任务调度。本发明的方法实现集成了对多个任务的调度服务框架,降低了编写调度服务的难度,并可以在调度服务运行的状态下进行任务的增加和修改。
图2为本发明的用于计算机的任务调度方法第二实施例的流程图,在本实施例中,在步骤S1之前还包括步骤:S0,设置任务调度配置文件;在步骤S3之后还包括步骤:S4、结束本次任务,记录下执行日志,并记录本次执行的时间以避免下次相同时间重复执行。具有多个任务的情况下,将日志统一处理,方便调度服务的监控与问题排查。
在本实施例中,配置参数还可以包括任务名称(Task Title),通过设置任务名称,便于了解该调度任务的内容。例如,此时的任务调度配置文件为:
<Task Title=“上传文件”Assembly=“Demo.dll”Class=“Demo.Configure”method=“UploadFile”RunRules=“00***2011”DenyRules=“**12,13**2011”Args=“fpt://192.168.1.100/file”/>
在本实施例中,其余情况与本发明的方法的第一实施例相同,在此不再赘述。
图3为本发明的用于计算机的任务调度***第一实施例的功能框图,如图3所示,在本实施例中,本发明的***100包括:
时间触发单元110,用于经过一预设的第一时间间隔,从任务调度配置文件中读取配置参数,所述配置参数包括执行文件参数、运行时间、拒绝时间、以及任务参数;
判断单元120,用于判断当前时间是否符合运行时间且不符合拒绝时间;
任务调度单元130,用于在当前时间符合运行时间且不符合拒绝时间时,带入所述任务参数,运行所述执行文件参数对应的执行文件。
其中,第一时间间隔由一定时器进行计数,当完成一个第一时间间隔的技术时,定时器调用时间触发单元110执行任务。
在本实施例,判断单元120包括:
第一拆分模块121,用于将运行时间和拒绝时间按照秒、分、时、日或星期、月、以及年进行拆分;
第二拆分模块122,用于获取当前时间,并将当前时间按照秒、分、时、日或星期、月、以及年进行拆分;
比较模块123,用于判断当前时间拆分出的各部分是否符合运行时间拆分出的对应部分且不符合拒绝时间拆分出的对应部分。
在本实施例中,执行文件参数包括应用程序名称,任务调度单元130包括:
第一查找模块131,用于根据应用程序名称查找对应的应用程序;
第一执行模块132,用于带入所述任务参数,运行所述应用程序。
或者,执行文件参数包括程序集名称、需要执行的类的名称、以及需要执行的方法的名称,任务调度单元130包括:
第二查找模块133,用于根据程序集名称、需要执行的类的名称、以及需要执行的方法的名称,查找对应的程序集、需要执行的类、以及需要执行的方法;
反射模块134,用于将程序集名称反射到调度任务程序中执行;
第二执行模块135,用于在反射出的对象中找到需要执行的类以及需要执行的方法,带入任务参数并执行。
图4为本发明的用于计算机的任务调度***第二实施例的功能框图,如图4所示,在本实施例中,本发明的***100还包括:
记录单元140,用于记录执行日志以及本次执行的时间;
设置单元150,用于设置任务调度配置文件。
在本实施例中,配置参数还可以包括任务名称(Task Title),通过设置任务名称,便于了解该调度任务的内容。
在本实施例中,其余情况与本发明的***100第一实施例相同,在此不再赘述。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。另外,本发明各实施例中的技术特征可以单独使用,也可以组合使用。
Claims (8)
1.一种用于计算机的任务调度方法,其特征在于,包括以下步骤:
S1、经过一预定的第一时间间隔,从任务调度配置文件中读取配置参数,所述配置参数包括执行文件参数、运行时间、拒绝时间、以及任务参数,其中,所述执行文件参数包括应用程序名称,或者所述执行文件参数包括程序集名称、需要执行的类的名称、以及需要执行的方法的名称;
S2、判断***当前时间是否符合所述运行时间且不符合所述拒绝时间,是则执行步骤S3,否则继续执行步骤S1;
S3、带入所述任务参数,运行所述执行文件参数对应的执行文件;
其中,步骤S2包括以下步骤:
S2a、将所述运行时间和所述拒绝时间按照秒、分、时、日或星期、月、以及年进行拆分;
S2b、获取当前时间,并将当前时间按照秒、分、时、日或星期、月、以及年进行拆分;
S2c、判断当前时间拆分出的各部分是否符合所述运行时间拆分出的对应部分,且不符合所述拒绝时间拆分出的对应部分,是则执行步骤S3,否则执行步骤S1。
2.根据权利要求1所述的任务调度方法,其特征在于,所述步骤S3包括以下步骤:
S3a、根据所述应用程序名称查找对应的应用程序;
S3b、带入所述任务参数,运行所述应用程序。
3.根据权利要求1所述的任务调度方法,其特征在于,所述步骤S3包括以下步骤:
S3c、根据所述程序集名称、所述需要执行的类的名称、以及所述需要执行的方法的名称,查找对应的程序集、需要执行的类、以及需要执行的方法;
S3d、将所述程序集名称反射到调度任务程序中执行;
S3e、在反射出的对象中找到需要执行的类以及需要执行的方法,带入所述任务参数并执行。
4.根据权利要求2或3所述的任务调度方法,其特征在于,所述配置参数还包括任务名称。
5.根据权利要求1-3中任一项所述的任务调度方法,其特征在于,所述方法还包括步骤:
S4、记录执行日志以及本次执行的时间。
6.一种用于计算机的任务调度***,其特征在于,所述***包括:
时间触发单元(110),用于经过一预定的第一时间间隔,从任务调度配置文件中读取配置参数,所述配置参数包括执行文件参数、运行时间、拒绝时间、以及任务参数,其中,所述执行文件参数包括应用程序名称,或者所述执行文件参数包括程序集名称、需要执行的类的名称、以及需要执行的方法的名称;
判断单元(120),用于判断***当前时间是否符合所述运行时间且不符合所述拒绝时间;
任务调度单元(130),用于在当前时间符合所述运行时间且不符合所述拒绝时间时,带入所述任务参数,运行所述执行文件参数对应的执行文件;
其中,所述判断单元(120)包括:
第一拆分模块(121),用于将所述运行时间和所述拒绝时间按照秒、分、时、日或星期、月、以及年进行拆分;
第二拆分模块(122),用于获取当前时间,并将当前时间按照秒、分、时、日或星期、月、以及年进行拆分;
比较模块(123),用于判断当前时间拆分出的各部分是否符合所述运行时间拆分出的对应部分,且不符合所述拒绝时间拆分出的对应部分。
7.根据权利要求6所述的任务调度***,其特征在于,所述任务调度单元(130)包括:
第一查找模块(131),用于根据所述应用程序名称查找对应的应用程序;
第一执行模块(132),用于带入所述任务参数,运行所述应用程序;
或者,所述任务调度单元(130)包括:
第二查找模块(133),用于根据所述程序集名称、所述需要执行的类的名称、以及所述需要执行的方法的名称,查找对应的程序集、需要执行的类、以及需要执行的方法;
反射模块(134),用于将所述程序集名称反射到调度任务程序中执行;
第二执行模块(135),用于在反射出的对象中找到需要执行的类以及需要执行的方法,带入所述任务参数并执行。
8.根据权利要求7所述的任务调度***,其特征在于,所述***还包括步骤:
记录单元(140),用于记录执行日志以及本次执行的时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310034790.0A CN103092693B (zh) | 2013-01-30 | 2013-01-30 | 一种用于计算机的任务调度方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310034790.0A CN103092693B (zh) | 2013-01-30 | 2013-01-30 | 一种用于计算机的任务调度方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103092693A CN103092693A (zh) | 2013-05-08 |
CN103092693B true CN103092693B (zh) | 2016-08-31 |
Family
ID=48205303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310034790.0A Active CN103092693B (zh) | 2013-01-30 | 2013-01-30 | 一种用于计算机的任务调度方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103092693B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677391A (zh) * | 2015-12-30 | 2016-06-15 | 深圳联友科技有限公司 | 一种定时插件的实现方法及装置 |
CN106775964A (zh) * | 2016-11-11 | 2017-05-31 | 西北工业大学 | 时间/事件混合触发的操作***架构及任务调度方法 |
CN110018906B (zh) * | 2019-02-26 | 2020-11-27 | 上海丽人丽妆网络科技有限公司 | 调度方法、服务器及调度*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106734A (zh) * | 2007-08-09 | 2008-01-16 | 中兴通讯股份有限公司 | 智能网***任务调度***及方法 |
CN101706742A (zh) * | 2009-11-20 | 2010-05-12 | 北京航空航天大学 | 一种基于多核动态划分的非对称虚拟机i/o调度方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1331046C (zh) * | 2004-03-24 | 2007-08-08 | 联想(北京)有限公司 | 一种家电设备完成定时任务的方法 |
-
2013
- 2013-01-30 CN CN201310034790.0A patent/CN103092693B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106734A (zh) * | 2007-08-09 | 2008-01-16 | 中兴通讯股份有限公司 | 智能网***任务调度***及方法 |
CN101706742A (zh) * | 2009-11-20 | 2010-05-12 | 北京航空航天大学 | 一种基于多核动态划分的非对称虚拟机i/o调度方法 |
Non-Patent Citations (2)
Title |
---|
《动态可重构片上***的任务在线调度算法》;彭日光等;《计算机工程》;20100331;第36卷(第5期);第284页第3节 * |
《可重构***在线任务预约重调度算法》;刘沙;《计算机工程》;20110430;第37卷(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103092693A (zh) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cranshaw et al. | Calendar. help: Designing a workflow-based scheduling agent with humans in the loop | |
Sedano et al. | Software development waste | |
Mäntylä et al. | On rapid releases and software testing: a case study and a semi-systematic literature review | |
Van der Aalst et al. | Business process simulation | |
Spector et al. | Methodologies for the study of organizational behavior processes: How to find your keys in the dark | |
US7840944B2 (en) | Analytical regression testing on a software build | |
US20130218622A1 (en) | Aggregating availability status information on shared calendars | |
US20140344119A1 (en) | Apparatus and method for generating a chronological timesheet | |
Pravilovic et al. | Process mining to forecast the future of running cases | |
US20080010535A1 (en) | Automated and configurable system for tests to be picked up and executed | |
CN113227978B (zh) | 计算机处理管线中的自动异常检测 | |
US20130212157A1 (en) | Processing event instance data in a client-server architecture | |
CN103092693B (zh) | 一种用于计算机的任务调度方法和*** | |
US20120004941A1 (en) | Cycle planning tool with event conflict resolution for territory management | |
Yim et al. | Exploring the relationship between rework projects and risk indicators | |
CN102609789A (zh) | 图书馆信息监控与异常预测*** | |
CN109298929A (zh) | 定时任务执行时间推荐方法、装置、设备和存储介质 | |
Pufahl et al. | Batch activity: enhancing business process modeling and enactment with batch processing | |
US20120023454A1 (en) | Schedule management using linked events | |
US20130263033A1 (en) | Object tagging | |
EP1970845A1 (en) | Work analysis device and recording medium recording work analysis program | |
US20170315842A1 (en) | Resource consuming tasks scheduler | |
CN102096857A (zh) | 一种数据处理过程的协同方法和装置 | |
US9740540B2 (en) | Method of process context-awareness | |
US8700656B2 (en) | Method and system for implementing an on-demand scheduler |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |