本发明专利技术公开了一种事件驱动的高并发流程虚拟机实现方法,属于软件技术领域。本方法为:1)建立一基于事件驱动的流程运行时模型,用于描述目标流程语言的执行语义;2)流程解析器将目标流程语言描述的流程运行时模型转化为事件驱动的执行结构,由运行时引擎进行执行;3)运行时引擎采用两级事件队列-多调度器的调度方式执行转化后的执行结构。与现有技术相比,本发明专利技术面对流程语言的更新和变化,具有很高的扩展能力及灵活性,同时本发明专利技术提高了并发执行性能,能够应对高负载压力。
【技术实现步骤摘要】
本专利技术涉及ー种事件驱动的流程模型构造方法,以及ー种基于事件驱动的高并发流程运行环境实现方法,属于软件
技术介绍
对于商业软件系统来说,理解其系统功能和需求十分重要,软件系统的实际需求和功能通常可以通过业务流程建模(Business Process Modelling)来表示。一个业务流程(Business Process)可以被定义为“一系列相互关联的活动或者程序集合,它们有序的组合在一起以实现ー个完整的业务目标”(參见文献Business Process ModelingLanguages Sorting Through tne Alphabet Soup,ACM Computing Surveys, November2010)o 业务流程建模技术常用于描述和表达隐藏在软件系统功能后面的业务逻辑,并且已广泛应用于现在的软件系统中(包括电子商务系统,物流系统,企业管理系统等),按照其目标可以被划分为三个层次流程描述(Descripting a process),流程分析(Analyzinga process)和流程演练(Enacting a process)。其中,流程演练通常是指流程的模拟和执行。流程的可执行性对于业务流程的分析,调试和重构来说十分重要,只有在实际的执行中才能更好地发现,优化和解决问题。因而随着流程描述语言的发展,也促使了流程执行环境(流程引擎)的出现和发展。工作流系统是目前常用于业务流程建模和执行的系统,它将这些流程表示为一系列相互交互的片段(Segments)或者事务(Tansactions),通过各种控制逻辑将它们组合在一起以表达和实现ー个复杂的业务功能。工作流系统不仅提供了业务流程的描述和表示功能,通过将流程部署到对应的工作流引擎,进ー步实现了业务流程的模拟和执行功能。在软件系统web化的大趋势下,流程中的很多子功能活动通常都以服务的方式被实现和调用,因此从另ー个角度来说,这些流程也可以看做ー个组合服务,它按照业务逻辑组合了各个子服务以供复杂的复合服务功能。业务流程的执行在SOA的环境中也可看做组合服务的执行,例如 WS-BPEL (Business Processs Execution Language)。随着业务流程建模及工作流技术的发展,已陆续涌现出了大量流程描述语言,包括XPDL,BPMN, XLANG, WSFL, WS-BPEL, WS-CDL等等,它们用于描述不同的领域中各种各样的业务流程,然而当前传统的流程执行引擎通常只能服务于某ー种特定的流程语言,这就使得针对每一种流程语言都需要实现ー个专门引擎来支持它的执行。因而,JBoss将其流程建模系统实现于ー个抽象的模型层上,实现了支持四种流程语言(jBPM,BPEL, WSDL,JPDL)执行的通用内核,从而提出了流程虚拟机(PVM, Process Virtual Machine)的概念。如图I所示,一个流程虚拟机可以定义为“ー个同时支持多种流程语言执行的运行时环境”。另ー方面,为了能够应对企业级的业务流程,业务流程引擎需要具备较高的并发处理能力。最近的研究表明现在大部分的开源流程引擎(包括ApacheODE, ActiveBPEL,JBoss的JBPM)在高负载下都存在严重的性能问题,无法胜任企业级的应用(參见文献D. Bianculli, W. Binder, M. L. Drago !Automated Performance Assessment forService-Oriented Middleware a Case Study on BPEL Engines, Wffff 2010)。这些当前的主流的开源流程引擎都主要采用了线程驱动的架构。线程驱动和事件驱动是实现并发系统的两种常用泛型,当前主流的编程语言和操作系统都提供了对多线程的支持,线程驱动的特征是同步执行,架构简单,易于实现,容易维护,因此也普遍被应用于服务器端的引擎架构。事件驱动的架构将任务看做等待特定事件的操作或活动,任务的执行不再是同步的调用-返回过程,而是被动触发,异步执行的方式。这使得这种架构,耦合度比较低,灵活性高,同时在面对ー些高并发交互型负载时具有较强处理能力,这些优势使其适用于交互性较强的用户界面编程(如VB)及松散架构的环境(分布式系统)。但是事件驱动的架构较难于很好地设计实现,増加了系统结构的复杂度,这是很多系统没有采用这一架构的主要原因。 这两种并发泛型虽各有优劣但其本质上是等价的,选择哪一种架构,取决于软件系统的底层支持和应用环境特征(參见文献H. C. Lauer, R. M. Needham :0n the dualityof operatingsystem structures. In Second Internationa丄 Symposium on OperatingSystems, IRlA 1978)。通过对业务流程应用的观察和分析,我们觉得线程驱动的架构并不太适合工作流引擎的运行时环境,其原因主要包括以下几方面1)业务流程多处于ー种松散的执行环境中,执行流程中消息交互可能比较频繁,会有大量的消息被发出和接收,它们可能和多个第三方的服务进行交互与访问,同步的消息的交互会浪费大量CPU资源在忙等状态;2)业务流程的执行通常是ー个时间开销较大的过程,线程驱动独占式的分配方式会带来大量的资源浪费并成为并发性能瓶颈;3)在业务流程逻辑较为复杂的情况下,一个完整的流程实例是ー个十分重量级的执行単位,高负载情况下创建和维护这些实例会带来大量开销,同时也不利于性能优化。
技术实现思路
本专利技术的目的在于灵活支持多种流程语言的执行,同时针对线程驱动架构无法适应高并发压カ的主要问题,提出ー种事件驱动的流程执行架构,提供轻量级,高并发,同时又具有较强通用性的流程引擎实现方法。本专利技术采用的技术方案为ー种事件驱动的高并发流程虚拟机实现方法,其步骤为I)建立一基于事件驱动的流程运行时模型,用于描述目标流程语言的执行语义;2)流程解析器将目标流程语言描述的流程运行时模型转化为事件驱动的执行结构,由运行时引擎进行执行;3)所述运行时引擎采用两级事件队列-多调度器的调度方式执行转化后的执行结构。进ー步的,所述流程运行时模型包括活动、事件、端ロ、上下文;其中,活动的类型包括连接器和任务活动;所述连接器类型活动用于检查当前执行状态下的控制条件,以决定后续流程的执行方向;所述任务活动类型活动用于实现具体任务功能的操作;所述事件用于承载活动之间的通信消息;所述端ロ用于活动中接收和发送事件;所述上下文为用于保存流程当前执行状态。进ー步的,所述连接器类型包括与连接器、或连接器、条件选择连接器,所述连接器包括前置连接器和后置连接器;所述任务活动类型包括服务调用活动、赋值活动;所述事件包括开始事件、完成事件、外部事件、异常事件;所述上下文包括流程上下文、实例上下文;所述流程上下文用于维护当前执行流程的流程结构,变量和消息定义,并提供路由服务和对象池服务的访问接ロ,所述实例上下文负责维护每ー个运行时流程实例的执行状态信息,当前待执行或正在执行的活动及其状态,事件队列访问接ロ。进ー步的,一个活动与一个或多个端ロ对应。所述运行时引擎对每本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:窦文生,吴东尧,吴国全,魏峻,钟华,黄涛,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。