CN102902572B - 一种基于消息分段式的工作流引擎以及集群系统 - Google Patents
一种基于消息分段式的工作流引擎以及集群系统 Download PDFInfo
- Publication number
- CN102902572B CN102902572B CN201210345577.7A CN201210345577A CN102902572B CN 102902572 B CN102902572 B CN 102902572B CN 201210345577 A CN201210345577 A CN 201210345577A CN 102902572 B CN102902572 B CN 102902572B
- Authority
- CN
- China
- Prior art keywords
- message
- engine
- set form
- module
- task
- 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.)
- Expired - Fee Related
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供了一种基于消息分段式的工作流引擎以及集群系统,该系统包括:渠道层,通过第一输出管道与所述渠道层相连的引擎层,通过第二输出管道与所述引擎层相连的应用调用层。采用本发明实施例提供的基于消息分段式的工作流引擎以及集群系统,由于将工作流引擎分为三段,所以在集群时可以根据需要来增加工作流引擎中的不同部分,从而避免了资源的浪费。
Description
技术领域
本发明涉及一种基于消息分段式的工作流引擎以及集群系统。
背景技术
在企业应用中,流程引擎经常处理大批量的流程,高并发的处理可能会导致流程引擎的吞吐量不够,从而使流程引擎响应不及时,导致流程处理速度慢。解决该问题的一个途径是搭建集群,做负载均衡。
现有技术中的集群是由两个或多个流程引擎通过相应的硬件及软件互联,每个流程引擎都运行自己的进程。
发明人在实现本发明创造的过程中发现如果对整个流程引擎做集群,会造成资源浪费。
发明内容
有鉴于此,本发明提供了一种基于消息分段式的工作流引擎以及集群系统,以克服现有技术中由于对整个流程引擎做集群,造成资源浪费的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于消息分段式的工作流引擎,包括:
渠道层,用于接收用户的请求,将所述用户请求转换为具有固定格式的消息,并将所述具有固定格式的消息通过第一输出管道发送至引擎层;
所述引擎层,用于从第一输出管道中获取所述具有固定格式的消息,并判断所述固定格式的消息是否为第三方应用,如果否,则将所述具有固定格式的消息转换成引擎的API调用任务,根据所述引擎的API调用任务,执行相应的操作,并将所述任务完成的消息通过第一输入管道返回至所述渠道层,如果是,则将所述具有固定格式的消息通过第二输出管道发送至应用调用层;
所述应用调用层,用于接收所述具有固定格式的消息,并将所述具有固定格式的消息引转化为引擎的API调用任务,根据所述引擎的API调用任务,执行相应的操作,并通过所述消息组件将所述任务完成的消息通过第二输入管道返回至所述引擎层,以使所述引擎层将所述任务完成的消息返回至所述渠道层。
其中,所述渠道层包括:
请求代理模块,用于接收用户的请求,并将所述用户请求转换为具有固定格式的消息;
第一消息处理模块,用于将所述具有固定格式的消息通过第一输出管道发送至引擎层。
其中,所述渠道层还包括:
第一判断模块,用于判断所述具有固定格式的消息对应的流程是否为请求回调流程,如果是,则将所述具有固定格式的消息进行存储;
第一标记模块,用于在接收到所述引擎层返回的所述任务完成的消息后,将存储的所述具有固定格式的消息的状态更改为已完成状态。
其中,所述引擎层包括:
第二判断模块,用于判断所述具有固定格式的消息是否为第三方应用,如果是,则触发第二消息处理模块,如果否,则触发第二发送模块;
所述第二消息处理模块,用于将所述具有固定格式的消息引转化为引擎的API调用任务;
引擎线程管理模块,用于存储所述引擎的API调用任务;
引擎核心模块,用于根据所述引擎线程管理模块存储的所述引擎的API调用任务,执行相应的操作;
第一发送模块,用于将所述任务完成的消息通过第一输入管道返回至所述渠道层;
所述第二发送模块,用于将所述具有固定格式的消息通过第二输出管道发送至应用调用层。
其中,所述应用调用层包括:
第三消息处理模块,用于将所述具有固定格式的消息引转化为引擎的API调用任务;
调用层程管理模块,用于存储所述引擎的API调用任务;
调度模块,用于根据所述调用层程管理模块中的所述引擎的API调用任务,执行相应的操作;
第二标记模块,用于将存储的所述引擎的API调用任务的状态更改为已完成状态;
第三发送模块,用于将所述任务完成的消息通过第二输入管道返回至所述引擎层。
其中,所述应用调用层还包括:
第三判断模块,用于判断所述具有固定格式的消息对应的流程是否为异步调用流程,如果是,则触发所述第二标记模块,如果否,则触发所述调度模块。
一种集群系统,包括:第一预设值个如权利要求1中所述的渠道层,第二预设值个如权利要求1中所述的引擎层以及第三预设值个如权利要求1中所述应用调用层。
经由上述的技术方案可知,采用本发明实施例提供的基于消息分段式的工作流引擎,由于将工作流引擎分为三段,在集群时可以根据需要来增加工作流引擎中的不同部分,从而避免了资源的浪费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的第一种基于消息分段式的工作流引擎的结构示意图;
图2为本发明实施例提供的第二种基于消息分段式的工作流引擎的结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下:
API:Application Programming Interface,应用程序的调用接口。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在企业应用中,工作流引擎经常遇到的问题就是大批量的流程处理,高并发的处理可能会导致工作流引擎的吞吐量不够,从而使工作流引擎响应不及时,用户体验下降。解决该问题的一个途径是搭建集群,做负载均衡。但是如果对整个工作流引擎做集群,则有可能造成资源浪费。本发明采用异步请求的策略,将引擎分为三段,实际部署过程中可以根据实际情况来增加引擎中的不同的部分,从而对系统性能的提高更有针对性。
实施例一
请参阅附图1,为本发明实施例提供的第一种基于消息分段式的工作流引擎的结构示意图,该工作流引擎包括:
渠道层101、引擎层102以及应用调用层103,其中:
渠道层101,用于接收用户的请求,将所述用户请求转换为具有固定格式的消息,并将所述具有固定格式的消息通过第一输出管道发送至引擎层。
引擎层102,用于从第一输出管道中获取所述具有固定格式的消息,并判断所述固定格式的消息是否为第三方应用,如果否,则将所述具有固定格式的消息转换成引擎的API调用任务,根据所述引擎的API调用任务,执行相应的操作,并将所述任务完成的消息通过第一输入管道返回至所述渠道层,如果是,则将所述具有固定格式的消息通过第二输出管道发送至应用调用层。
应用调用层103,用于接收所述具有固定格式的消息,并将所述具有固定格式的消息引转化为引擎的API调用任务,根据所述引擎的API调用任务,执行相应的操作,并通过所述消息组件将所述任务完成的消息通过第二输入管道返回至所述引擎层,以使所述引擎层将所述任务完成的消息返回至所述渠道层。
采用本发明实施例提供的基于消息分段式的工作流引擎,由于将工作流引擎分为三段,在集群时可以根据需要来增加工作流引擎中的不同部分,从而避免了资源的浪费。
实施例二
请参阅图2,为本发明实施例提供的第二种基于消息分段式的工作流引擎的结构示意图,该工作流引擎包括:渠道层、引擎层以及应用调用层,其中:
渠道层101包括:请求代理模块201,用于接收用户的请求,并将所述用户请求转换为具有固定格式的消息。
以及第一消息处理模块202,用于将所述具有固定格式的消息通过第一输出管道发送至引擎层。
所述渠道层还可以包括:第一判断模块203,用于判断所述具有固定格式的消息对应的流程是否为请求回调流程,如果是,则将所述具有固定格式的消息进行存储,以及第一标记模块204,用于在接收到所述引擎层返回的所述任务完成的消息后,将存储的所述具有固定格式的消息的状态更改为已完成状态。
当所述具有固定格式的消息对应的流程为请求回调流程时,在将所述具有固定格式的消息通过第一输出管道发送至引擎层后,将所述具有固定格式的消息进行持久化,即具有固定格式的消息保存到可永久保存的存储设备中(如磁盘)。并且处理线程可以以阻塞的方式轮询第一标记模块204,直至接收到所述引擎层返回的所述任务完成的消息。
对于同步请求,渠道层是线程阻塞的运行机制。当大量、复杂同步请求达到时,渠道层的接入能力将会降低。
引擎层可以划分为第二判断模块205,用于判断所述具有固定格式的消息是否为第三方应用,如果是,则触发第二消息处理模块,如果否,则触发第二发送模块;所述第二消息处理模块206,用于将所述具有固定格式的消息引转化为引擎的API调用任务;引擎线程管理模块207,用于存储所述引擎的API调用任务;引擎核心模块208,用于根据所述引擎线程管理模块存储的所述引擎的API调用任务,执行相应的操作;第一发送模块209,用于将所述任务完成的消息通过第一输入管道返回至所述渠道层;以及所述第二发送模块210,用于将所述具有固定格式的消息通过第二输出管道发送至应用调用层。
应用调用层可以划分为第三消息处理模块211,用于将所述具有固定格式的消息引转化为引擎的API调用任务;调用层程管理模块212,用于存储所述引擎的API调用任务;调度模块213,用于根据所述调用层程管理模块中的所述引擎的API调用任务,执行相应的操作;第二标记模块214,用于将存储的所述引擎的API调用任务的状态更改为已完成状态;以及第三发送模块215,用于将所述任务完成的消息通过第二输入管道返回至所述引擎层。
应用调用层还可以包括:第三判断模块216,用于判断所述具有固定格式的消息对应的流程是否为异步调用流程,如果是,则触发所述第二标记模块,如果否,则触发所述调度模块。
本发明实施例与实施例一具有相同的有益效果。
本发明实施例还提供了一种集群系统,其特征在于,包括:第一预设值个如上述实施例中所述的渠道层,第二预设值个如上述实施例中所述的引擎层以及第三预设值个如上述实施例中所述应用调用层。
第一预设值、第二预设值以及第三预设值可以根据实际情况而定。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种基于消息分段式的工作流引擎,其特征在于,包括:
渠道层,用于接收用户的请求,将所述用户请求转换为具有固定格式的消息,并将所述具有固定格式的消息通过第一输出管道发送至引擎层;
所述引擎层,用于从第一输出管道中获取所述具有固定格式的消息,并判断所述固定格式的消息是否为第三方应用,如果否,则将所述具有固定格式的消息转换成引擎的API调用任务,根据所述引擎的API调用任务,执行相应的操作,并将所述任务完成的消息通过第一输入管道返回至所述渠道层,如果是,则将所述具有固定格式的消息通过第二输出管道发送至应用调用层;
所述应用调用层,用于接收所述具有固定格式的消息,并将所述具有固定格式的消息转化为引擎的API调用任务,根据所述引擎的API调用任务,执行相应的操作,并通过消息组件将所述任务完成的消息通过第二输入管道返回至所述引擎层,以使所述引擎层将所述任务完成的消息返回至所述渠道层;
所述应用调用层包括:
第三消息处理模块,用于将所述具有固定格式的消息引转化为引擎的API调用任务;
调用层程管理模块,用于存储所述引擎的API调用任务;
调度模块,用于根据所述调用层程管理模块中的所述引擎的API调用任务,执行相应的操作;
第二标记模块,用于将存储的所述引擎的API调用任务的状态更改为已完成状态;
第三发送模块,用于将所述任务完成的消息通过第二输入管道返回至所述引擎层。
2.根据权利要求1所述工作流引擎,其特征在于,所述渠道层包括:
请求代理模块,用于接收用户的请求,并将所述用户请求转换为具有固定格式的消息;
第一消息处理模块,用于将所述具有固定格式的消息通过第一输出管道发送至引擎层。
3.根据权利要求2所述工作流引擎,其特征在于,所述渠道层还包括:
第一判断模块,用于判断所述具有固定格式的消息对应的流程是否为请求回调流程,如果是,则将所述具有固定格式的消息进行存储;
第一标记模块,用于在接收到所述引擎层返回的所述任务完成的消息后,将存储的所述具有固定格式的消息的状态更改为已完成状态。
4.根据权利要求1所述工作流引擎,其特征在于,所述引擎层包括:
第二判断模块,用于判断所述具有固定格式的消息是否为第三方应用,如果是,则触发第二消息处理模块,如果否,则触发第二发送模块;
所述第二消息处理模块,用于将所述具有固定格式的消息转化为引擎的API调用任务;
引擎线程管理模块,用于存储所述引擎的API调用任务;
引擎核心模块,用于根据所述引擎线程管理模块存储的所述引擎的API调用任务,执行相应的操作;
第一发送模块,用于将所述任务完成的消息通过第一输入管道返回至所述渠道层;
所述第二发送模块,用于将所述具有固定格式的消息通过第二输出管道发送至应用调用层。
5.根据权利要求1所述工作流引擎,其特征在于,所述应用调用层还包括:
第三判断模块,用于判断所述具有固定格式的消息对应的流程是否为异步调用流程,如果是,则触发所述第二标记模块,如果否,则触发所述调度模块。
6.一种集群系统,其特征在于,包括:第一预设值个如权利要求1中所述的渠道层,第二预设值个如权利要求1中所述的引擎层以及第三预设值个如权利要求1中所述应用调用层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210345577.7A CN102902572B (zh) | 2012-09-17 | 2012-09-17 | 一种基于消息分段式的工作流引擎以及集群系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210345577.7A CN102902572B (zh) | 2012-09-17 | 2012-09-17 | 一种基于消息分段式的工作流引擎以及集群系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102902572A CN102902572A (zh) | 2013-01-30 |
CN102902572B true CN102902572B (zh) | 2015-06-10 |
Family
ID=47574818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210345577.7A Expired - Fee Related CN102902572B (zh) | 2012-09-17 | 2012-09-17 | 一种基于消息分段式的工作流引擎以及集群系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102902572B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11824941B2 (en) * | 2021-12-22 | 2023-11-21 | Oracle International Corporation | Accessing representational state transfer application programming interfaces using simple mail transfer protocol |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111861384A (zh) * | 2020-06-30 | 2020-10-30 | 深圳市中农易讯信息技术有限公司 | 多种工作流引擎设计方法、装置及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807272A (zh) * | 2010-03-24 | 2010-08-18 | 上海普元信息技术有限责任公司 | 工作流系统实现流程事务和业务事务完整性的系统结构及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7665093B2 (en) * | 2004-12-22 | 2010-02-16 | Microsoft Corporation | Synchronization of runtime and application state via batching of workflow transactions |
JP2006285435A (ja) * | 2005-03-31 | 2006-10-19 | Oki Electric Ind Co Ltd | 金融機関チャネル連携システム及びチャネル連携装置 |
-
2012
- 2012-09-17 CN CN201210345577.7A patent/CN102902572B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807272A (zh) * | 2010-03-24 | 2010-08-18 | 上海普元信息技术有限责任公司 | 工作流系统实现流程事务和业务事务完整性的系统结构及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11824941B2 (en) * | 2021-12-22 | 2023-11-21 | Oracle International Corporation | Accessing representational state transfer application programming interfaces using simple mail transfer protocol |
Also Published As
Publication number | Publication date |
---|---|
CN102902572A (zh) | 2013-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI694339B (zh) | 一種區塊鏈共識方法、設備及系統 | |
CN110096353B (zh) | 任务调度方法及装置 | |
CN102999386B (zh) | 一种通过在单进程中实现多消息队列机制提升性能的方法 | |
WO2019100921A1 (zh) | 消息推送方法及装置 | |
CN107391243B (zh) | 线程任务处理设备、装置及方法 | |
CN102662740B (zh) | 非对称多核系统及其实现方法 | |
CN103559093B (zh) | 一种服务器资源的配置方法及装置 | |
CN109324983A (zh) | 一种自动清理缓存文件的方法、存储介质、设备及系统 | |
US20180329750A1 (en) | Resource management method and system, and computer storage medium | |
CN110427257A (zh) | 多任务调度方法、装置及计算机可读存储介质 | |
CN107301087A (zh) | 一种多线程系统的性能提升方法和装置 | |
CN111026768A (zh) | 一种可实现数据快速装载的数据同步方法和装置 | |
CN112181378B (zh) | 业务流程的实现方法及装置 | |
US20180253313A1 (en) | Operation instruction response control method and terminal for human-machine interface | |
CN102902572B (zh) | 一种基于消息分段式的工作流引擎以及集群系统 | |
CN105847427A (zh) | 呼叫中心的话务分配系统及方法 | |
US20170134939A1 (en) | Method, device and terminal for processing communication event of terminal | |
CN106155796A (zh) | 一种基于队列的线程调度方法及装置 | |
CN105718304A (zh) | 虚拟机管理方法及系统 | |
CN111107012A (zh) | 一种多维度集中流量的控制方法及系统 | |
CN110401939A (zh) | 一种低功耗蓝牙控制器链路层装置 | |
CN106407020A (zh) | 一种移动终端的数据库处理方法及其移动终端 | |
CN104427106A (zh) | 提醒事件处理方法、装置、终端及服务器 | |
CN104281587A (zh) | 一种建立连接的方法及装置 | |
CN104519062A (zh) | 一种创建多对socket端口连接的方法及系统 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150610 |