工作流运行期的事件处理方法和装置的制造方法
【技术领域】
[0001] 本发明涉及数据处理技术领域,尤其涉及一种工作流运行期的事件处理方法和装 置。
【背景技术】
[0002] 工作流(WorkFlow)是工作流程的计算模型,即将工作流程中的工作如何前后组织 在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
[0003] 工作流按照编排好的业务流程自动触发任务,在工作流驱动业务流程流转过程 中,会产生大量的需要软件系统完成的业务事件,如发送邮件、银行转账、数据归档等。这些 业务事件类型不同、优先级不同、计算处理的耗时也不同,如何合理、高效的处理这些业务 事件,是工作流高效驱动业务流程流转过程中面临的一个重要问题。
[0004] 传统方案是将这些事件统一放在一个消息池中,然后由分发线程负责分发给线程 池中的每个线程或线程自由去消息池中领取事件执行。传统方案会存在如下无法对工作流 事件进行高效、稳定的处理,具体表现为:无法保证高优先级的事件被优先处理;无法有效 隔离不同事件的异常影响;优先级低的事件长时间得不到处理造成事件大量堵塞。
【发明内容】
[0005] 本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
[0006] 为此,本发明的一个目的在于提出一种工作流运行期的事件处理方法,该方法可 以实现对工作流事件的高效、稳定的处理,有效的平衡性能和资源利用。
[0007] 本发明的另一个目的在于提出一种工作流运行期的事件处理装置。
[0008] 为达到上述目的,本发明第一方面实施例提出的工作流运行期的事件处理方法, 包括:事件分发器根据事件读取分发算法,从事件池中获取事件,并将所述事件分发给不同 的事件处理器,每个事件处理器的执行互相独立;事件处理器根据事件队列排序算法,将事 件分发器分发的事件存放在事件队列中,并在事件队列中选取事件由线程池中的线程进行 处理,其中,根据线程池自调整算法调整线程池内的线程个数。
[0009] 本发明第一方面实施例提出的工作流运行期的事件处理方法,通过将事件分发给 不同的事件处理器,事件处理器的执行互相独立,可以隔离事件发生异常后的影响范围,提 高了事件处理的稳定性。通过根据事件队列排序算法存放以及选取事件,可以既保证了高 优先级的事件快速处理,也兼顾了低优先级事件的响应时间,不同优先级的事件得到合理 的调度处理。通过根据线程池自调整算法调整线程池内线程的个数,可以在保障工作流事 件得到高效处理的前提下,也平衡了资源的利用。综上,上述对工作流运行期的事件处理方 法,可以实现对工作流事件的高效、稳定的处理,有效的平衡了性能和资源的利用。
[0010]为达到上述目的,本发明第二方面实施例提出的工作流运行期的事件处理装置, 包括:事件分发器,用于根据事件读取分发算法,从事件池中获取事件,并将所述事件分发 给不同的事件处理器,每个事件处理器的执行互相独立;事件处理器,用于根据事件队列排 序算法,将事件分发器分发的事件存放在事件队列中,并在事件队列中选取事件由线程池 中的线程进行处理,其中,根据线程池自调整算法调整线程池内的线程个数。
[0011] 本发明第二方面实施例提出的工作流运行期的事件处理装置,通过将事件分发给 不同的事件处理器,事件处理器的执行互相独立,可以隔离事件发生异常后的影响范围,提 高了事件处理的稳定性。通过根据事件队列排序算法存放以及选取事件,可以既保证了高 优先级的事件快速处理,也兼顾了低优先级事件的响应时间,不同优先级的事件得到合理 的调度处理。通过根据线程池自调整算法调整线程池内线程的个数,可以在保障工作流事 件得到高效处理的前提下,也平衡了资源的利用。综上,上述对工作流运行期的事件处理装 置,可以实现对工作流事件的高效、稳定的处理,有效的平衡了性能和资源的利用。
[0012] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变 得明显,或通过本发明的实践了解到。
【附图说明】
[0013] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得 明显和容易理解,其中:
[0014] 图1是本发明一实施例提出的工作流运行期的事件处理方法的流程示意图;
[0015] 图2是本发明实施例中事件分发处理系统的示意图;
[0016] 图3是本发明实施例中事件读取分发的流程示意图;
[0017]图4是本发明实施例中事件排序和选取的流程示意图;
[0018] 图5是本发明实施例中自调整线程池的流程示意图;
[0019] 图6是本发明另一实施例提出的工作流运行期的事件处理装置的结构示意图;
[0020] 图7是本发明另一实施例提出的工作流运行期的事件处理装置的结构示意图。
【具体实施方式】
[0021] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终 相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附 图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本 发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同 物。
[0022] 图1是本发明一实施例提出的工作流运行期的事件处理方法的流程示意图,该方 法包括:
[0023] SI 1:事件分发器根据事件读取分发算法,从事件池中获取事件,并将所述事件分 发给不同的事件处理器,每个事件处理器的执行互相独立。
[0024]如图2所示,本实施例对应的事件分发处理系统包括:事件21、事件池22、事件分发 器23和事件处理器24四个对象以及事件读取分发算法25、事件队列排序算法26和线程池自 调整算法2 7二个算法。
[0025] 事件是工作流驱动业务流程过程中产生的需要软件系统完成的业务活动。事件主 要包括如表1所示的属性:
[0026] 表 1
[0028]其中,各参数含义如下:
[0029] ID:事件的标识;
[0030] CreateTime:事件的创建时间;
[0031 ] Priority:事件的优先级,数字类型,越大优先级越高;
[0032] State:状态,分为待处理、正在处理和处理完毕三种状态;
[0033] Type:类型,根据类型的不同,分配到不同的事件处理器;
[0034] AppType:事件处理类型,根据该类型调用不同的处理程序;
[0035] Locker:事件锁,事件分发器从事件池中获取事件之后,需要将自己获得的事件标 记锁住,避免其他的分发器取走重复执行。
[0036]业务流程流转过程中产生的所有事件都会被放在事件池中等待调度执行,事件池 可以理解为后台的一个数据库表,存放所有的事件。
[0037]事件分发器根据事件读取分发算法从事件池中获取事件,并分发给事件处理器。 [0038] -些实施例中,参见图3,根据事件读取分发算法,从事件池中获取事件,并将所述 事件分发给不同的事件处理器的流程包括:
[0039] S31:从事件池中获取预设个数的状态为待处理状态的事件。
[0040] 事件的状态有待处理、正在处理和已处理三种状态,此处只获取待处理状态的事 件。
[0041 ] 预设个数例如为20个。
[0042]例如,根据事件的生成时间,按时间先后顺序选择20个待处理状态的事件。
[0043] S32:将获取的事件的状态更新为正在处理状态。
[0044] S33:判断是否更新成功,若是,执行S34,否则,执行S35。
[0045] 由于事件池中的事件会被多个事件分发器分发处理,所以就会存在一个事件被多 个分发器同时读取处理的情况。为了避免事件重复处理,可以比较S31中获取的事件数目与 S32中更新的事件数目