CN1680923A - 一种工作流引擎高效处理的方法 - Google Patents

一种工作流引擎高效处理的方法 Download PDF

Info

Publication number
CN1680923A
CN1680923A CN 200410021268 CN200410021268A CN1680923A CN 1680923 A CN1680923 A CN 1680923A CN 200410021268 CN200410021268 CN 200410021268 CN 200410021268 A CN200410021268 A CN 200410021268A CN 1680923 A CN1680923 A CN 1680923A
Authority
CN
China
Prior art keywords
definition
flow definition
engine
handling
node
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.)
Granted
Application number
CN 200410021268
Other languages
English (en)
Other versions
CN1318969C (zh
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.)
Neusoft Corp
Original Assignee
DONGRUAN GROUP Co Ltd
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 DONGRUAN GROUP Co Ltd filed Critical DONGRUAN GROUP Co Ltd
Priority to CNB200410021268XA priority Critical patent/CN1318969C/zh
Publication of CN1680923A publication Critical patent/CN1680923A/zh
Application granted granted Critical
Publication of CN1318969C publication Critical patent/CN1318969C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

本发明属于工作流系统技术,具体地说是一种工作流引擎高效处理的方法。它以应用程序的方式运行工作流引擎,将引擎处理请求的过程划分为外部资源访问、对象逻辑转换和对象持久化三部分,其中:外部资源访问使用内存查找;执行过程中可能发生的错误全部在对象逻辑转换阶段检查;对象持久化操作在返回用户请求后执行。引擎使用本发明方法,将实现各处理阶段的有效分离,通过内存缓存、并发处理和缓存队列的结合,达到与内存处理相同的效果。由于引擎处理请求的响应时间都在内存操作级,用户可以得到极高的响应速度。并且处理的效率在增加引擎数量时会呈线性增长。

Description

一种工作流引擎高效处理的方法
技术领域
本发明属于工作流系统技术,具体地说是一种工作流引擎高效处理的方法。
技术背景
在现有技术中在工作流引擎在处理时,通常要处理工作流的内部逻辑转换,包括对象创建、状态转换、数据传递和条件解析等;逻辑处理过程中要访问外部资源信息;相关的对象逻辑处理完成后,需要对涉及的对象进行持久化处理,以便于随后用户可以访问和处理。即用户请求需要被同步执行,同时可能需要通过各种手段访问已经持久化了的对象。其执行过程如图1所示。由于在用户同步请求时,任何一个环节出现错误,都应该反馈用户错误结果。因此,需要等待各个阶段都完成,才返回用户请求。其中外部信息访问和对象持久化处理,将耗费很长的时间,从而导致对用户响应在时间上的延迟。
为了解决高效处理的问题,人们一般会考虑多引擎同时工作,但是在传统方法下,部署多引擎时,因为请求的处理各阶段是线性完成,用户请求的响应时间是所有过程结束的时间。这样,多引擎同时处理请求时,会导致在数据持久化阶段资源的占有和争抢,而持久化操作的延迟将直接反映到用户响应时间上,即,随着引擎的增加,单个引擎处理用户请求的时间将逐步变长,而整个引擎集群在单位时间内能够处理请求的数量不能达到有效的增长。
发明内容
为解决响应时间过长的问题,本发明的目的是提供一种工作流引擎高效处理的方法,采用本发明可以大大减少响应时间。
为了实现上述目的本发明技术方案是:以应用程序的方式运行工作流引擎,将引擎处理请求的过程划分为外部资源访问、对象逻辑转换和对象持久化三部分,其中:所述外部资源访问使用内存查找;执行过程中可能发生的错误全部在对象逻辑转换阶段检查;对象持久化操作在返回用户请求后执行;
本发明所述外部信息访问是得到处理请求所需的资源的过程,系指对‘流程定义’信息的访问;所述‘流程定义’为带‘节点’的有向树,该有向树是在标准有向树定义基础上允许使用回路,即:除根节点外,其它节点引入次数可以大于1;开始节点是树根,结束节点是树叶,其它节点是分支点;在内存中,每个‘流程定义’对应一棵‘树’,所有的‘树’构成‘森林’;在‘森林’之外定义‘树’的标识与其所在‘森林’中位置的一一对应关系,并在‘森林’之外,定义所述节点和流程的映射关系;
所述运行程序流程为:首先获取流程定义,引擎获得一条消息以后,根据消息包含的参数,得到流程定义的标识,根据该标识从内存中得到流程定义对象;然后对流程定义对象进行合法性检查,如果条件不满足,返回至发出处理失败消息;条件满足,向下流转至解析流程定义;解析流程定义过程中访问流程定义信息,并创建新的对象或修改已经存在的对象,将对应的操作以SQL语句的形式,缓存到内存中的SQL队列;当流程定义解析完成时即完成了当前消息的逻辑部分处理;如果流程定义解析没有完成,将继续解析流程定义;当消息的逻辑部分处理完成时,发出处理成功消息,否则发出处理失败消息;逻辑部分处理正确的情况下,在用户请求返回后调用持久化处理,从SQL缓存队列获得并执行缓存的SQL语句,SQL语句的执行以线程的方式进行;
引擎运行时,流程定义在内存中,流程定义的查找是在内存中进行。
本发明具有如下优点:
1.大大减少了响应时间。与现有技术方案相比,本发明通过流程定义内存化,减少了流程定义查找的时间;在对象逻辑转换阶段,检查所有可能发生的错误,保证对象持久化操作可以在返回用户请求后执行;持久化操作以线程的方式处理增强了并发性。从而消息响应时间大幅度加快(处理消息的速度可以达到每秒30~50条);并且多引擎并行工作时,回避了由于资源的争抢而造成的对效率的影响,效率可以达到线性的增长。
2.方法简单。使用该方法实现的引擎,只是一个简单的应用程序,不同于EJB架构的解决办法,部署要求低,简便灵活。
附图说明
图1现有技术下,传统的工作流引擎处理方法的执行过程。
图2本发明方法下的执行过程。
图3为本发明运行程序流程图。
具体实施方式
以应用程序的方式运行工作流引擎,采取各阶段分解的方式,将整个处理过程分为三个阶段:外部信息访问、对象逻辑转换、对象持久化处理,所述外部资源访问使用内存查找;执行过程中可能发生的错误全部在对象逻辑转换阶段检查;对象持久化操作在返回用户请求后执行。其执行过程如图2所示。以此来实现响应的高效;具体为:
所述外部信息访问是得到处理请求所需的资源的过程,主要指对‘流程定义’信息的访问,‘流程定义’本质是‘节点’的有向树表示,但该有向树在标准有向树定义基础上允许使用回路,即:除根节点外,其它节点引入次数可以大于1;开始节点是树根,结束节点是树叶,其它节点是分支点。引擎启动时,一次性加载所有流程定义信息;在内存中,每个‘流程定义’对应一棵‘树’,所有的‘树’构成‘森林’。为快速地在‘森林’中查找某一棵‘树’,在‘森林’之外维护‘树’的标识与其所在‘森林’中位置的映射关系。引擎的在消息处理过程中,也需要从节点开始访问‘森林’,即根据‘分支点’标识找到对应的‘树’,为达到快速访问,在‘森林’之外,定义节点和流程的映射关系,即‘分支点’标识和其所属的‘树’的映射关系;这样,任何‘树’和‘分支点’在整个‘森林’中的查找,通过‘森林’外的映射关系,都可以在毫秒内完成;内存中的流程定义在使用时,需要校验流程定义状态信息,如果外存流程定义修改,需要更新内存中的流程定义。
所述对象逻辑转换主要指完成请求所引起的对象逻辑处理。用户在发出请求后,一旦对象逻辑处理完成,引擎立即返回用户请求,通知完成。对象逻辑转换处理中,要校验所有可能发生的逻辑错误,比如对象状态异常、流程定义错误等,保证一旦对象逻辑处理完成,不会再发生任何与该请求有关的逻辑性错误。该方法不同于传统方式的异步请求,异步请求时,用户无法知道处理是否正确完成。
所述对象持久化处理在引擎对象逻辑处理结束时开始进行,在客户端等待响应的时间内,并不包含持久化的时间。多条请求同时处理时,引擎将缓存持久化操作请求,在缓存队列中通过数据库连接池并发执行。
如果多个引擎同时工作,将达到效率线性增长的效果,因为多引擎下,持久化操作将因为资源争抢而执行效率变低,但由于本发明用户请求的响应时间并不包括持久化操作的时间,因而,单个引擎处理请求的效率不会因为持久化效率的降低而下降,整个引擎集群的在单位时间内能够处理请求的能力能够有效的提高。
图3描述了本发明运行时的情况(图中的步骤以阿拉伯数字编号)。具体如下:
步骤1为获取流程定义,引擎获得一条消息(以‘流程定义实例化’为例。流程定义实例化是指流程定义产生应该新的流程实例,并产生待办的任务)以后,首先根据消息包含的参数,得到流程定义的标识,根据该标识从内存中得到流程定义对象。
步骤2为合法性检查,得到流程定义以后,进行校验操作,比如检验流程定义可实例化的权限是否满足,即是否有权限实例化该流程定义。如果各条件满足,向下流转,否则返回处理失败消息。
步骤3、4为解析流程定义,此期间将可能创建新的对象(例如,代办任务)或修改已经存在的对象,但对应的数据库操作并不直接执行,而只是将对应的操作以SQL语句的形式,缓存到内存中的SQL队列;解析过程中,需要访问流程定义信息;一般,对一条消息的处理,并不是解析完整个流程定义,而是达到某些条件(比如产生新的待办任务,而代办任务需要等待人的参与);当达到这样的条件时,该消息所引起的流程定义解析完成,即完成当前消息的逻辑部分处理;否则,将返回步骤3继续向下解析流程定义;当流程定义解析完成时(过程逻辑处理结果正确),发出处理成功消息,以通知请求者,处理成功,否则至步骤6发出处理失败消息。
步骤5为流程定义查找,即从内存中得到流程定义;该步骤对应整个工作流执行过程的流程定义访问部分,在对象逻辑处理过程中,可以调用该步骤。
步骤6为发出处理失败消息,逻辑处理中发生错误时,中断消息执行,通知请求者,处理失败,请求者可以从返回消息中得到错误原因。
步骤7为发出处理成功消息,逻辑处理正确结束时调用。
步骤8为持久化处理,持久化操作在用户请求返回后调用,从SQL缓存队列获得并执行缓存的SQL语句,SQL语句的执行应以线程的方式进行,以不影响下一条消息的处理。由于不存在逻辑的问题,SQL在数据库端的执行不会发生工作流相关的错误,除非硬件问题或底层系统问题;该步骤对应整个工作流执行过程的对象持久化部分。
本实施例所述步骤1~步骤4为整个工作流执行过程的对象逻辑转换部分。整个程序的逻辑以java语句实现,数据库操作使用JDBC。
本发明方法以应用程序的方式运行工作流引擎,响应用户同步请求在被引擎处理时,同时完成持久化操作。传统的方法在处理时,引擎要同时完成逻辑转换和持久化操作,如果逻辑复杂、涉及的持久化操作数量大,那么需要很长的处理时间。引擎使用本发明方法,将实现各处理阶段的有效分离,通过内存缓存、并发处理和缓存队列的结合,达到与内存处理相同的效果。由于引擎处理请求的响应时间都在内存操作级,用户可以得到极高的响应速度。一般其它工作流引擎在响应同步请求时,速度介于每秒0.5~5条之间,引擎在使用该方法时,速度可以达到每秒30~50条。并且处理的效率在增加引擎个数时会呈线性增长。
技术效果:引擎处理请求的响应时间接近对象逻辑处理时间,处理消息的速度可以达到每秒30~50条。

Claims (7)

1.一种工作流引擎高效处理的方法,其特征在于:以应用程序的方式运行工作流引擎,将引擎处理请求的过程划分为外部资源访问、对象逻辑转换和对象持久化三部分,其中:所述外部资源访问使用内存查找;执行过程中可能发生的错误全部在对象逻辑转换阶段检查;对象持久化操作在返回用户请求后执行。
2.按照权利要求1所述工作流引擎高效处理的方法,其特征在于:所述外部信息访问是得到处理请求所需的资源的过程,系指对‘流程定义’信息的访问。
3.按照权利要求2所述工作流引擎高效处理的方法,其特征在于:所述‘流程定义’为带‘节点’的有向树,该有向树是在标准有向树定义基础上允许使用回路,即:除根节点外,其它节点引入次数可以大于1;开始节点是树根,结束节点是树叶,其它节点是分支点。
4.按照权利要求1或2所述工作流引擎高效处理的方法,其特征在于:在内存中,每个‘流程定义’对应一棵‘树’,所有的‘树’构成‘森林’。
5.按照权利要求4所述工作流引擎高效处理的方法,其特征在于:在‘森林’之外定义‘树’的标识与其所在‘森林’中位置的一一对应关系;并在‘森林’之外,定义所述节点和流程的映射关系。
6.按照权利要求1所述工作流引擎高效处理的方法,其特征在于:所述运行程序流程为:首先获取流程定义,引擎获得一条消息以后,根据消息包含的参数,得到流程定义的标识,根据该标识从内存中得到流程定义对象;然后对流程定义对象进行合法性检查,如果条件不满足,返回至发出处理失败消息;条件满足,向下流转至解析流程定义;解析流程定义过程中访问流程定义信息,并创建新的对象或修改已经存在的对象,将对应的操作以SQL语句的形式,缓存到内存中的SQL队列;当流程定义解析完成时即完成了当前消息的逻辑部分处理;如果流程定义解析没有完成,将继续解析流程定义;当消息的逻辑部分处理完成时,发出处理成功消息,否则发出处理失败消息;逻辑部分处理正确的情况下,在用户请求返回后调用持久化处理,从SQL缓存队列获得并执行缓存的SQL语句,SQL语句的执行以线程的方式进行。
7.按照权利要求1或2述工作流引擎高效处理的方法,其特征在于:引擎运行时,流程定义在内存中,流程定义的查找是在内存中进行。
CNB200410021268XA 2004-04-09 2004-04-09 一种工作流引擎高效处理的方法 Expired - Fee Related CN1318969C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB200410021268XA CN1318969C (zh) 2004-04-09 2004-04-09 一种工作流引擎高效处理的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB200410021268XA CN1318969C (zh) 2004-04-09 2004-04-09 一种工作流引擎高效处理的方法

Publications (2)

Publication Number Publication Date
CN1680923A true CN1680923A (zh) 2005-10-12
CN1318969C CN1318969C (zh) 2007-05-30

Family

ID=35067522

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200410021268XA Expired - Fee Related CN1318969C (zh) 2004-04-09 2004-04-09 一种工作流引擎高效处理的方法

Country Status (1)

Country Link
CN (1) CN1318969C (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100367204C (zh) * 2006-06-27 2008-02-06 中国科学院软件研究所 从软件过程到工作流的模型转换方法和系统
CN102236679A (zh) * 2010-04-27 2011-11-09 杭州德昌隆信息技术有限公司 基于浏览器页面的工作流输出方法及装置
CN102419833A (zh) * 2011-09-23 2012-04-18 方欣科技有限公司 工作流引擎系统和工作流处理方法
CN102479354A (zh) * 2010-11-29 2012-05-30 平安科技(深圳)有限公司 一种基于工作流的数据处理方法以及系统
CN102521712A (zh) * 2011-12-27 2012-06-27 东软集团股份有限公司 一种流程实例数据处理方法和装置
CN105550319A (zh) * 2015-12-12 2016-05-04 天津南大通用数据技术股份有限公司 一种集群一致性服务高并发下持久化的优化方法
CN110135696A (zh) * 2019-04-12 2019-08-16 平安普惠企业管理有限公司 系统调用方法及装置
CN110348818A (zh) * 2019-07-17 2019-10-18 博仕瀚道(上海)信息科技有限公司 一种流程引擎的流程智能处理方法及系统
CN111445206A (zh) * 2020-03-26 2020-07-24 深圳壹账通智能科技有限公司 工作流控制方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001025906A1 (en) * 1999-10-01 2001-04-12 Global Graphics Software Limited Method and system for arranging a workflow using graphical user interface
US6640299B1 (en) * 2000-04-21 2003-10-28 Ati International Srl Method and apparatus for arbitrating access to a computational engine for use in a video graphics controller
US20020174002A1 (en) * 2001-05-18 2002-11-21 Huba Horompoly Method for parameter management for business process workflows

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100367204C (zh) * 2006-06-27 2008-02-06 中国科学院软件研究所 从软件过程到工作流的模型转换方法和系统
CN102236679A (zh) * 2010-04-27 2011-11-09 杭州德昌隆信息技术有限公司 基于浏览器页面的工作流输出方法及装置
CN102479354B (zh) * 2010-11-29 2015-10-07 平安科技(深圳)有限公司 一种基于工作流的数据处理方法以及系统
CN102479354A (zh) * 2010-11-29 2012-05-30 平安科技(深圳)有限公司 一种基于工作流的数据处理方法以及系统
CN102419833A (zh) * 2011-09-23 2012-04-18 方欣科技有限公司 工作流引擎系统和工作流处理方法
CN102521712A (zh) * 2011-12-27 2012-06-27 东软集团股份有限公司 一种流程实例数据处理方法和装置
CN102521712B (zh) * 2011-12-27 2015-09-23 东软集团股份有限公司 一种流程实例数据处理方法和装置
CN105550319A (zh) * 2015-12-12 2016-05-04 天津南大通用数据技术股份有限公司 一种集群一致性服务高并发下持久化的优化方法
CN105550319B (zh) * 2015-12-12 2019-06-25 天津南大通用数据技术股份有限公司 一种集群一致性服务高并发下持久化的优化方法
CN110135696A (zh) * 2019-04-12 2019-08-16 平安普惠企业管理有限公司 系统调用方法及装置
CN110348818A (zh) * 2019-07-17 2019-10-18 博仕瀚道(上海)信息科技有限公司 一种流程引擎的流程智能处理方法及系统
CN110348818B (zh) * 2019-07-17 2024-01-19 博仕瀚道(上海)信息科技有限公司 一种流程引擎的流程智能处理方法及系统
CN111445206A (zh) * 2020-03-26 2020-07-24 深圳壹账通智能科技有限公司 工作流控制方法和系统

Also Published As

Publication number Publication date
CN1318969C (zh) 2007-05-30

Similar Documents

Publication Publication Date Title
US5812996A (en) Database system with methods for optimizing query performance with a buffer manager
Rusinkiewicz et al. Specification and Execution of Transactional Workflows.
CN1897025A (zh) 海量数据处理中多线程工作包并行的etl技术
US7324985B2 (en) Methods and systems for database statement execution plan optimization
Larus et al. Using cohort scheduling to enhance server performance
WO2020228801A1 (zh) 一种多语言融合查询方法及多模数据库系统
US5574900A (en) System and method for optimizing parallel processing of database queries
US6009265A (en) Program product for optimizing parallel processing of database queries
EP2956862B1 (en) Call stacks for asynchronous programs
US8954971B2 (en) Data collecting method, data collecting apparatus and network management device
CN103136364B (zh) 集群数据库系统及其数据查询处理方法
US11169994B2 (en) Query method and query device
CN101021874A (zh) 一种对查询sql请求进行优化的方法及装置
Interlandi et al. Adding data provenance support to Apache Spark
CN101282300B (zh) 一种基于非阻塞机制的http报文处理方法
CN1318969C (zh) 一种工作流引擎高效处理的方法
US20090144528A1 (en) Method for running native code across single or multi-core hybrid processor achitecture
Harizopoulos et al. StagedDB: Designing Database Servers for Modern Hardware.
Delis et al. Performance comparison of three modern DBMS architectures
Azez et al. JOUM: an indexing methodology for improving join in hive star schema
US20110252425A1 (en) Executing operations via asynchronous programming model
CN106095535B (zh) 一种支持多核平台下数据流处理的线程管理系统
Pantilimonov et al. Machine code caching in postgresql query jit-compiler
Dieker Plug and play with query algebras: SECONDO
JPH0814800B2 (ja) データベース排他制御方法

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
ASS Succession or assignment of patent right

Owner name: SHENYANG NEUSOFT SOFTWARE CO., LTD.

Free format text: FORMER OWNER: DONGRUAN GROUP CO., LTD.

Effective date: 20080620

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20080620

Address after: Lane 3, Lane 11, Wenhua Road, Heping District, Shenyang

Patentee after: Shenyang Dongruan Software Co., Ltd.

Address before: Liaoning city of Shenyang Province Hunnan hi tech Industrial Development Zone, East Software Park

Patentee before: Dongruan Group Co., Ltd.

C56 Change in the name or address of the patentee

Owner name: NEUSOFT GROUP CO., LTD.

Free format text: FORMER NAME OR ADDRESS: SHENYANG NEUSOFT SOFTWARE CO., LTD.

CP03 Change of name, title or address

Address after: Hunnan rookie street Shenyang city Liaoning province 2 No.

Patentee after: Neusoft Group Corporation

Address before: Lane 3, Lane 11, Wenhua Road, Heping District, Shenyang

Patentee before: Shenyang Dongruan Software Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070530

Termination date: 20170409

CF01 Termination of patent right due to non-payment of annual fee