CN109582446A - 准实时异步批量处理系统、方法、装置和存储介质 - Google Patents

准实时异步批量处理系统、方法、装置和存储介质 Download PDF

Info

Publication number
CN109582446A
CN109582446A CN201811183708.XA CN201811183708A CN109582446A CN 109582446 A CN109582446 A CN 109582446A CN 201811183708 A CN201811183708 A CN 201811183708A CN 109582446 A CN109582446 A CN 109582446A
Authority
CN
China
Prior art keywords
asynchronous
message queue
real time
distributed
queue
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
Application number
CN201811183708.XA
Other languages
English (en)
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.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
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 China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN201811183708.XA priority Critical patent/CN109582446A/zh
Publication of CN109582446A publication Critical patent/CN109582446A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种准实时异步批量处理系统,所述系统包括:异步调度模块,用于通过异步调度接口对应用数据进行预约调度处理;分布式队列模块,用于对所述应用数据进行分布式消息队列处理;以及异步执行模块,用于触发和执行所述分布式消息队列。本发明通过利用分库分表、分布式缓存、分布式队列和流式处理技术等技术对现有框架进行改造,以解决当前调度处理中效率不高且可扩展性较差的问题。

Description

准实时异步批量处理系统、方法、装置和存储介质
技术领域
本发明涉及数据处理领域,具体而言,涉及一种准实时异步批量处理系统、方法、装置和存储介质。
背景技术
为了实现高效、快速、稳定的调度和执行,需要将调度和执行进行解耦,使调度能够单方向地驱动执行,又能够顺利监控执行的进度和结果,还不能使调度的排队和等待占用执行的资源,也不能使执行的过程占用调度的资源,所以目前主要的解决思路是将调度和执行放到不同的线程、进程、进程池乃至不同的计算机或是计算机集群上,根据需要也可以采用一些商业化的调度框架和执行框架,这就需要解决调度和执行之间高效通信和协调的问题,同时也必须考虑与日俱增的业务量对系统横向扩展能力的挑战。
目前的现有技术主要有两种常见方法:商业化的调度框架加小程序开发的模式。这种方法通过定义商业化调度框架中的执行流程,按照一定的顺序调起脚本、存储过程或是其他可执行程序,这种方式解决了调度与执行的解耦问题,但存在耦合过于松散的问题,对于执行结果的监控不够精确,不够灵活,且调度的可扩展性往往很差,且不能适应一些较为个性化的业务场景。
自己开发调度器和执行代码。这种方法往往调度和执行耦合严重,虽然能够较好地监控执行结果,控制执行流程,但是往往效率不高,且可扩展性较差。
发明内容
为解决上述技术问题,本发明提供了一种准实时异步批量处理系统、方法、装置和存储介质,解决当前调度处理中效率不高且可扩展性较差的问题。
根据本发明实施例的第一方面,提供了一种准实时异步批量处理系统,所述系统包括:
异步调度模块,用于通过异步调度接口对应用数据进行预约调度处理;
分布式队列模块,用于对所述应用数据进行分布式消息队列处理;以及
异步执行模块,用于触发和执行所述分布式消息队列。
根据本发明实施例的第二方面,提供一种准实时异步批量处理方法,所述方法包括:
异步调度模块通过异步调度接口对应用数据进行预约调度处理;
分布式队列模块对所述应用数据进行分布式消息队列处理;以及
异步执行模块触发和执行所述分布式消息队列。
根据本发明实施例的第三方面,提供一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,其中,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:
所述操作包括如上中任一项所述的准实时异步批量处理方法所包含的步骤。
根据本发明实施例的第四方面,提供一种准实时异步批量处理装置,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如上所述的准实时异步批量处理方法所包含的步骤。
实施本发明实施例提供的一种准实时异步批量处理系统、方法、装置和存储介质,具有以下优点:通过一种在准实时异步批量处理方式,实现了任务调度与执行的充分解耦,并对调度与执行都提供了强大的横向扩展能力,能够方便实现运行时的动态扩容。
附图说明
图1是本发明实施例的一种准实时异步批量处理系统1的结构示意图;
图2是本发明实施例的一种准实时异步批量处理方法的流程图。
具体实施方式
为使本发明的实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
图1是本发明实施例的一种准实时异步批量处理系统1的结构示意图,参见图1,所述系统1包括:
异步调度模块100,用于通过异步调度接口对应用数据进行预约调度处理;
分布式队列模块200,用于对所述应用数据进行分布式消息队列处理;以及
异步执行模块300,用于触发和执行所述分布式消息队列。
在本发明的实施方式中,所述预约调度处理包括:实时执行调度处理、定时执行调度处理或周期执行调度处理。
在本发明的实施方式中,所述分布式消息队列处理包括:将所述应用数据按优先级层级形成分布式消息队列,其中,所述分布式消息队列分为异步消息队列和异步结果队列。
在本发明的实施方式中,所述系统还包括:公共功能模块,用于根据常用功能的类别进行数据封装和数据管理。
需要说明的是,异步调度模块100供异步及批量任务使用方预约任务的接口存在于com.ccb.bkab.pub.s08.service.ITaskService接口中。这个接口提供了预约任务和取消任务的方法(详见下表),包括:
调度的功能是决定如何触发应用逻辑执行,应用逻辑在满足一组特定的先决条件后才被触发,而同步调度是由联机交易触发的、被动式的,异步调度是由自己触发的、主动式的。每个作业可以被调度需要满足这个作业被调起的条件,条件分为两大类:时间和信号。
每个作业的状态有:待执行、执行中、执行成功、标记成功(跳过执行)、执行失败、取消执行,此外还应当记录和控制失败重试次数。作业流是由具有相互依赖关系的一组作业组成的。每个作业执行成功后可以输出一个或多个信号,作为作业流中后续作业的调度依据。为了将调度与执行逻辑相解耦,每个作业调度起来后,通过异步触发这个作业执行,调度机制内本身不执行任何业务相关的操作。
调度时机主要分为3种:实时执行、定时执行、周期执行。实时执行的需求是在当前时间点调起一次。一般是由联机处理过程中实时指定的,指定方可以是客户,也可以是后端应用逻辑。定时执行的需求是在一个指定的时间点调起一次。一般是由联机处理过程中指定的,指定方可以是客户,也可以是后端应用逻辑。
周期执行的需求是以一个指定的频率反复调起,以下详细介绍。周期定义分为两部分:执行日的定义和日间频率的定义。定义周期任务的执行日的条件有:任务起始日期、任务结束日期执行周期。其中,执行周期支持以下几种周期种类:每N日(N>=1)是执行日。指定月份(可多选)的指定日期(可多选)是执行日,包括可定义月末,定义针对选定日期位29+后,某执行月内没有这个日期的处理策略(跳过、提前到上一天、推迟到下月1号)。补充:按季执行(注意返显),月末前N天,第几周的星期几。每N周(N>=1)的指定星期几(可多选)是执行日。指定年份的指定日期列表执行。原有日终批处理的调度可以映射到此处每天都是执行日,在每个执行日内以指定时间点调起一个作业流。此外,周期定义的条件还应当包括节假日的特殊处理,节假日处理方式包括:正常执行,提前到上一个工作日,推迟到下一个工作日,取消执行。其中,提前到上一个工作日或者推迟到下一个工作日如果碰到目标工作日本身是执行日的情形时,不再重复执行。补充:按日历调度,年或月份,考虑记录起始日期和日期偏移量,用来实现不满足上述条件的场景,并尽可能封装成独立可复用模块。日间频率的定义:日间频率也包括两类,一类是执行日只执行一次,一类是执行日内执行多次。日间执行一次的,只需定义执行时间点即可。日间执行多次的,需要定义的条件包括:日间起始时间和日间结束时间。
分布式队列模块200提供2套队列——异步消息队列和异步结果队列,将异步调度和异步执行两个模块完全解耦。其中,异步消息队列和异步结果队列分别按优先级层级提供配对的队列,例如3层优先级,实际实施中可以根据应用需求设定不同数量优先级层级的队列。对于异步消息队列而言,消息生产者是异步调度模块,消息消费者是异步执行模块;对于异步结果队列而言刚好相反,消息消费者是异步调度模块,消息生产者是异步执行模块。为了实现优先级调度,除了异步调度部分需要根据作业的优先级写入指定优先级的队列里,同时也需要异步执行模块根据优先级高低分别获取消息。接收消息配置部分,需要指定“At Most Once”来获取消息,保证消息不重复执行。
异步执行模块300可异步执行的触发来源于上述分布式消息队列的消息。一次异步执行的内容是一个作业。任务执行逻辑接口包括IPreTreatService接口、IPostTreatService接口、ISingleTreatService接口。接口中方法的具体功能如下表所示:
异步执行过程中,涉及调用的功能有:应用代码逻辑、联机交易、文件操作,包括与分布式文件系统的交互、公共组件调用,如文件传输、日期控制、分布式平台相关功能,如spark、storm等和数据加载下档操作其中,需要对常用的公共功能做标准的封装,应用开发时可直接使用无需再次开发,同时可以屏蔽掉底层技术变化对应用代码的影响。可封装的功能包括如下:调用交易:调用交易包括本地交易方法调用、外呼交易、内呼交易3类,封装。文件传输:调用文件传输组件等公共组件。更新数据库:对原有数据库表记录进行在线的插入、修改、删除操作。数据加载下档:数据库与文件数据互转的功能,数据备份,包括使用工具完成这些功能。数据库清理:按照周期和清理条件,对临时表或者数据表中过期内容进行清理。日期控制:控制系统营业日历切换,如:日切、月末、季末、年末控制。文件到达监测:监测一个指定文件是否存在,或文件夹中文件是否有新增(这些文件一般由外系统推送)。文件加工操作:通过工具或程序的方式,对输入的数据文件进行加工处理(如:转码、排序、筛选等),输出一个或者多个数据文件供后续作业使用。文件检核操作:对于接收的文件进行格式和内容合法性检查,供后续作业使用。文件/目录清理操作:按照周期和清理条件,对临时文件或者用于存储数据的数据文件内容进行清理。调用分布式平台功能:分布式平台技术可能会持续更新,此处进行封装后可尽量降低应用因为分布式平台技术更新导致调用代码修改的可能性。部分原有功能也可考虑在分布式平台上实现:更新数据库操作、文件加工操作、文件检核操作、报表生成。包括客户报表和业务部门报表的计算和生成。多法人支持:通过提供多法人相应的信息和调用公共方法帮助应用完成多法人相关的实现,包括:提供本地系统法人查询;查询指定法人行信息;获取当前本地/系统日期和时间;不同法人行之间日期时间转换。
执行本发明的实施方式,可具有如下优点:(1)准实时异步批量处理的调度与执行的解耦方式和协调方式,利用分布式缓存和消息队列进行解耦的方法。(2)异步调度的分库分表方式,达到调度的横向高度可扩展效果。(3)异步调度的周期调度方案,达到周期调度灵活可扩展,适应各种业务场景。(4)异步执行的分布式解决方案,达到执行的横向高度可扩展效果。
利用分库分表、分布式缓存、分布式队列和流式处理技术,实现了任务调度与执行的充分解耦,并对调度与执行都提供了强大的横向扩展能力,能够方便实现运行时的动态扩容。这套框架方案具有极强的适应能力和处理能力,能够适应各种不同应用场景和业务需求,对各种信息系统都有很好的示范作用和借鉴意义。
图2是本发明实施例的一种准实时异步批量处理方法的流程图,参见图2,所述方法包括:步骤S1,异步调度模块通过异步调度接口对应用数据进行预约调度处理;步骤S2,分布式队列模块对所述应用数据进行分布式消息队列处理;以及,步骤S3,异步执行模块触发和执行所述分布式消息队列。
在本发明的实施方式中,所述预约调度处理包括:实时执行调度处理、定时执行调度处理或周期执行调度处理。
在本发明的实施方式中,所述分布式消息队列处理包括:将所述应用数据按优先级层级形成分布式消息队列,其中,所述分布式消息队列分为异步消息队列和异步结果队列。
在本发明的实施方式中,所述系统还包括:公共功能模块,用于根据常用功能的类别进行数据封装和数据管理。
需要说明的是,所述准实时异步批量处理方法的操作包括如上所述的所包含的步骤与上述准实时异步批量处理系统的操作方式相同,具体内容在此不再赘述。
另外,本发明还提供一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:所述操作包括如上所述的准实时异步批量处理方法所包含的步骤,在此不再赘述。需要说明的是,所述计算机可读存储介质可包括例如ROM/RAM、磁碟、光盘、磁盘、闪存等多种存储介质,用以存储可执行上述计算机程序的存储介质。
另外,本发明还提供一种准实时异步批量处理装置,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如上所述的准实时异步批量处理方法所包含的步骤。需要说明的是,所述准实时异步批量处理装置包括:例如,智能终端、移动设备、笔记本电脑、台式计算机、服务器,或者网络设备等多种装置。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明的保护范围,因此依本发明权利要求的教导对上述实施例所作的等同变化,仍属于本发明权利要求所涵盖的范围内。

Claims (10)

1.一种准实时异步批量处理系统,其特征在于,所述系统包括:
异步调度模块,用于通过异步调度接口对应用数据进行预约调度处理;
分布式队列模块,用于对所述应用数据进行分布式消息队列处理;以及
异步执行模块,用于触发和执行所述分布式消息队列。
2.如权利要求1所述系统,其特征在于,所述预约调度处理包括:
实时执行调度处理、定时执行调度处理或周期执行调度处理。
3.如权利要求1所述系统,其特征在于,所述分布式消息队列处理包括:
将所述应用数据按优先级层级形成分布式消息队列,其中,所述分布式消息队列分为异步消息队列和异步结果队列。
4.如权利要求1-3任一项所述系统,其特征在于,所述系统还包括:
公共功能模块,用于根据常用功能的类别进行数据封装和数据管理。
5.一种准实时异步批量处理方法,其特征在于,所述方法包括:
异步调度模块通过异步调度接口对应用数据进行预约调度处理;
分布式队列模块对所述应用数据进行分布式消息队列处理;以及
异步执行模块触发和执行所述分布式消息队列。
6.如权利要求5所述方法,其特征在于,所述预约调度处理包括:
实时执行调度处理、定时执行调度处理或周期执行调度处理。
7.如权利要求6所述方法,其特征在于,所述分布式消息队列处理包括:
将所述应用数据按优先级层级形成分布式消息队列,其中,所述分布式消息队列分为异步消息队列和异步结果队列。
8.如权利要求5-7任一项所述方法,其特征在于,所述方法还包括:
公共功能模块根据常用功能的类别进行数据封装和数据管理。
9.一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,其特征在于,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:
所述操作包括如权利要求5-8中任一项所述的准实时异步批量处理方法所包含的步骤。
10.一种准实时异步批量处理装置,其特征在于,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如权利要求5-8中任一项所述的准实时异步批量处理方法所包含的步骤。
CN201811183708.XA 2018-10-11 2018-10-11 准实时异步批量处理系统、方法、装置和存储介质 Pending CN109582446A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811183708.XA CN109582446A (zh) 2018-10-11 2018-10-11 准实时异步批量处理系统、方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811183708.XA CN109582446A (zh) 2018-10-11 2018-10-11 准实时异步批量处理系统、方法、装置和存储介质

Publications (1)

Publication Number Publication Date
CN109582446A true CN109582446A (zh) 2019-04-05

Family

ID=65920011

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811183708.XA Pending CN109582446A (zh) 2018-10-11 2018-10-11 准实时异步批量处理系统、方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN109582446A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110365786A (zh) * 2019-07-19 2019-10-22 中国工商银行股份有限公司 作业处理系统、异步作业调度方法和计算机设备
CN110532044A (zh) * 2019-08-26 2019-12-03 锐捷网络股份有限公司 一种大数据批处理方法、装置、电子设备及存储介质
CN113312386A (zh) * 2021-05-10 2021-08-27 四川新网银行股份有限公司 一种基于分布式消息的批量入库方法
CN114449036A (zh) * 2021-12-27 2022-05-06 天翼云科技有限公司 一种定向分发消息的方法、装置及计算机设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102915254A (zh) * 2011-08-02 2013-02-06 中兴通讯股份有限公司 任务管理方法及装置
US20130144967A1 (en) * 2011-12-05 2013-06-06 International Business Machines Corporation Scalable Queuing System
CN104407922A (zh) * 2014-10-29 2015-03-11 中国建设银行股份有限公司 一种异步批处理调度方法及系统
CN107066339A (zh) * 2016-12-14 2017-08-18 中国航空结算有限责任公司 分布式作业管理器及分布式作业管理方法
CN107766136A (zh) * 2017-09-30 2018-03-06 南威软件股份有限公司 一种任务集群调度管理的方法
CN108287751A (zh) * 2017-01-09 2018-07-17 阿里巴巴集团控股有限公司 任务执行方法及装置、分布式系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102915254A (zh) * 2011-08-02 2013-02-06 中兴通讯股份有限公司 任务管理方法及装置
US20130144967A1 (en) * 2011-12-05 2013-06-06 International Business Machines Corporation Scalable Queuing System
CN104407922A (zh) * 2014-10-29 2015-03-11 中国建设银行股份有限公司 一种异步批处理调度方法及系统
CN107066339A (zh) * 2016-12-14 2017-08-18 中国航空结算有限责任公司 分布式作业管理器及分布式作业管理方法
CN108287751A (zh) * 2017-01-09 2018-07-17 阿里巴巴集团控股有限公司 任务执行方法及装置、分布式系统
CN107766136A (zh) * 2017-09-30 2018-03-06 南威软件股份有限公司 一种任务集群调度管理的方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110365786A (zh) * 2019-07-19 2019-10-22 中国工商银行股份有限公司 作业处理系统、异步作业调度方法和计算机设备
CN110365786B (zh) * 2019-07-19 2022-03-22 中国工商银行股份有限公司 作业处理系统、异步作业调度方法和计算机设备
CN110532044A (zh) * 2019-08-26 2019-12-03 锐捷网络股份有限公司 一种大数据批处理方法、装置、电子设备及存储介质
CN110532044B (zh) * 2019-08-26 2023-03-21 锐捷网络股份有限公司 一种大数据批处理方法、装置、电子设备及存储介质
CN113312386A (zh) * 2021-05-10 2021-08-27 四川新网银行股份有限公司 一种基于分布式消息的批量入库方法
CN114449036A (zh) * 2021-12-27 2022-05-06 天翼云科技有限公司 一种定向分发消息的方法、装置及计算机设备

Similar Documents

Publication Publication Date Title
CN109582446A (zh) 准实时异步批量处理系统、方法、装置和存储介质
US11422853B2 (en) Dynamic tree determination for data processing
CN109118347B (zh) 一种自动化协作方法及系统
CN100594498C (zh) 海量数据实时处理架构及用于该架构的实时随需处理平台
US8738645B1 (en) Parallel processing framework
CN107103064B (zh) 数据统计方法及装置
CN111352717B (zh) 一种实现kubernetes自定义调度器的方法
CN104216912A (zh) 一种无侵入式的业务表单工作流化的实现方法与装置
US7774798B2 (en) Systems and methods for providing an interaction between a status management service and an audit trail service
US8352958B2 (en) Systems and methods for providing a generic audit trail service
CN111338791A (zh) 集群队列资源的调度方法、装置、设备及存储介质
CN109901918A (zh) 一种处理超时任务的方法和装置
CN114816730A (zh) 一种机器人流程自动化云服务系统及实现方法
CN101446906A (zh) 一种多批处理任务的调度方法及系统
WO2022173589A1 (en) Near-real-time data processing with partition files
CN105550351A (zh) 旅客行程数据即席查询系统及方法
US8376749B2 (en) Milestone manager
CN111190731A (zh) 基于权重的集群任务调度系统
CN113837870B (zh) 金融风险数据审批方法及装置
CN114553959A (zh) 基于态势感知的云原生服务网格配置按需下发方法及应用
CN111199386A (zh) 一种工作流引擎及其实现方法
US20080147467A1 (en) Configuration Process Scheduling
CN113590299B (zh) 高并发高可用异构系统的转换调度框架算法
CN114817166B (zh) 一种取消文件操作的方法、装置及介质
CN114064643B (zh) 一种基于Oracle的任务式的数据转换系统

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: 20190405

RJ01 Rejection of invention patent application after publication