CN102136004A - 工作流系统中业务的获取方法 - Google Patents
工作流系统中业务的获取方法 Download PDFInfo
- Publication number
- CN102136004A CN102136004A CN 201110077073 CN201110077073A CN102136004A CN 102136004 A CN102136004 A CN 102136004A CN 201110077073 CN201110077073 CN 201110077073 CN 201110077073 A CN201110077073 A CN 201110077073A CN 102136004 A CN102136004 A CN 102136004A
- Authority
- CN
- China
- Prior art keywords
- business
- hash table
- numbering
- service
- professional
- 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
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种能够降低成本,提高系统可靠性,运行效率高的工作流系统中业务的获取方法,获取业务过程为,1、根据参与者的识别码到第一哈希表中相应的业务列表,2、在该业务列表中取一个业务编号,同时将该业务编号从所述业务列表中删除,3、在第二哈希表中查找并判断上述业务编号是否存在,3.1、若存在,则向参与者返回该业务编号所指向的业务并将数据库表中的该业务编号更新为已被获取状态,同时将该业务编号从第二哈希表删除,并退出获取业务过程,3.2、若不存在,则重复步骤2、3直到获取业务,或者取完所述业务列表的所有业务编号后仍然没有业务可以获取时,则向参与者返回没有业务可获取,并退出获取业务过程。
Description
技术领域:
本发明涉及工作流系统技术领域,具体讲是一种工作流系统中业务的获取方法。
背景技术:
工作流系统为一重要的信息处理技术,广泛应用于各行各业,比如银行、保险等金融行业。
目前在银行、保险等金融行业的业务趋势趋向于建立区域中心并集中处理,由于金融行业的日业务量日益增大,对工作流系统的业务吞吐量和稳定性提出了更高的要求,同时如何降低资源成本,提高资源利用率,也是工作流系统性能的重要考量点,为了实现上述技术要求,传统的方式是基于数据库的优化方式,但是该方式有以下局限:
(1) 业务处理集中在数据库,导致整个工作流系统的压力处在数据库服务器节点上。
(2) 数据库中的数据实质上是保存在硬盘介质中,故工作流系统的业务吞吐量受限于硬盘的性能。
而在实际应用中,由于所述业务需要操作员处理,工作流系统给操作员分配权限后,就可以指定多个操作员有权处理,但在处理前需要申请,最终一个业务只能被一个操作员获取(先来先服务原则),现有的工作流系统中业务的获取方法是,在数据库表中加入状态字段,来标示业务是否已被申请,每个申请请求必须在数据库中整表查询并核对该状态,导致该表成为热表,这样,再加上(1)、(2)的局限,数据库的性能就成为整个工作流系统处理效率提升的关键,也就是说要求对数据库服务器相关软硬件有较大投资,使数据库服务器有较高处理性能才能实现整个工作流系统的正常运作。
综合上述,现有的工作流系统中业务的获取方法在采用建立区域中心并集中处理方式的工作流系统中的应用会导致成本有较高的上升,并且,风险集中于数据库,导致工作流系统抵御业务量变化剧烈所产生冲击的能力降低,从而使工作流系统可靠性降低。
发明内容:
本发明要解决的技术问题是,克服以上现有技术的缺点,提供一种能够降低成本,提高系统可靠性,运行效率高的工作流系统中业务的获取方法。
本发明的技术方案是,提供一种工作流系统中业务的获取方法,它包括第一哈希表和第二哈希表,第一和第二哈希表均存放在内存中,第一哈希表的key部分存放参与者的识别码,第一哈希表的value部分存放由多个业务编号组成的单向链表,由key-value键值
对来确定所述参与者有权限处理的业务列表;第二哈希表存放所述第一哈希表所具有的所有的业务编号;
当工作流系统运作时,首先,从数据库表中读取指定个数的待申请状态的业务,并将读取到的业务编号、具有权限参与所述业务编号所指向的业务的参与者的识别码存入第一哈希表,同时将该次读取得到的业务编号全部存入第二哈希表;设置业务的刷新时间,根据该刷新时间,定时重新加载数据库表中最新的数据到第一和第二哈希表中;
当任一一个参与者要获取业务时,获取业务过程为,1、根据参与者的识别码确定第一哈希表中相应的业务列表, 2、在该业务列表中取一个业务编号,同时将该业务编号从所述业务列表中删除,3、在第二哈希表中查找并判断上述业务编号是否存在,3.1、若存在,则向参与者返回该业务编号所指向的业务并将数据库表中的该业务编号更新为已被获取状态,同时将该业务编号从第二哈希表删除,并退出获取业务过程,3.2、若不存在,则重复步骤2、3直到获取业务,或者取完所述业务列表的所有业务编号后仍然没有业务可以获取时,则向参与者返回没有业务可获取,并退出获取业务过程。
采用上述方法后,本发明与现有技术相比,具有以下显著优点及有益效果:因为本发明采用两个哈希表来判断业务是否能够被成功获取,避免现有技术中热表的产生,减少了数据库操作,在高并发下,数据库压力明显减小,从而降低对数据库的性能要求,能够降低对数据库的投入,进而降低成本,并且两个哈希表存在内存中,读取快速,运行效率高,又哈希表的查找效率和链表的删除效率高,则进一步提高了运行效率;除了运行效率的提升,通过两个哈希表的配合,能够在内存阶段防止已被参与者获取的业务再次被别的参与者获得,避免了到数据库层面的操作,这样,一方面提高了系统可靠性,出错少,另一方面也有利于降低对数据库的性能要求,有利于降低成本。综合上述,本发明具有能够降低成本,提高系统可靠性,运行效率高的优点。
作为改进,在数据库表中加入优先级及权重字段,用于区分业务的紧急程度;所述从数据库表中读取指定个数的待申请状态的业务,并将读取到的业务编号、具有权限参与所述业务编号所指向的业务的参与者的识别码存入第一哈希表,同时将该次读取得到的业务编号全部存入第二哈希表是指,通过编写SQL,SQL中根据业务优先级权重及业务创建时间由前向后排序,读取指定个数的待申请状态的业务,遍历SQL返回的结果集,将业务编号、参与者存入第一哈希表中,同时将当前读取的所有业务编号存入第二哈希表中,这样,在读取指定个数的待申请状态的业务过程中,业务编号就被排序了,那么在内存中判断业务是否能够被成功获取的过程中就无需再做优先级的查找判断,只要从各业务列表的第一位读取即可,总体来说简化了操作,更有利于本发明的性能的提高。
作为进一步改进,第二哈希表的key部分存放所述第一哈希表所具有的所有的业务编号,第二哈希表的value部分为空字符串,由于第二哈希表的value部分为空字符串,所以有利于节省内存空间。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本发明工作流系统中业务的获取方法,它包括第一哈希表和第二哈希表,第一和第二哈希表均存放在内存中,第一哈希表的key部分存放参与者的识别码,第一哈希表的value部分存放由多个业务编号组成的单向链表,由key-value键值对来确定所述参与者有权限处理的业务列表;第二哈希表存放所述第一哈希表所具有的所有的业务编号;
当工作流系统运作时,首先,从数据库表中读取指定个数的待申请状态的业务,并将读取到的业务编号、具有权限参与所述业务编号所指向的业务的参与者的识别码存入第一哈希表,同时将该次读取得到的业务编号全部存入第二哈希表;设置业务的刷新时间,根据该刷新时间,定时重新加载数据库表中最新的数据到第一和第二哈希表中;
当任一一个参与者要获取业务时,获取业务过程为,1、根据参与者的识别码到第一哈希表中相应的业务列表, 2、在该业务列表中取一个业务编号,同时将该业务编号从所述业务列表中删除,3、在第二哈希表中查找并判断上述业务编号是否存在,3.1、若存在,则向参与者返回该业务编号所指向的业务并将数据库表中的该业务编号更新为已被获取状态,同时将该业务编号从第二哈希表删除,并退出获取业务过程,3.2、若不存在,则重复步骤2、3直到获取业务,或者取完所述业务列表的所有业务编号后仍然没有业务可以获取时,则向参与者返回没有业务可获取,并退出获取业务过程。
在数据库表中加入优先级及权重字段,用于区分业务的紧急程度;所述从数据库表中读取指定个数的待申请状态的业务,并将读取到的业务编号、具有权限参与所述业务编号所指向的业务的参与者的识别码存入第一哈希表,同时将该次读取得到的业务编号全部存入第二哈希表是指,通过编写SQL,SQL中根据业务优先级权重及业务创建时间由前向后排序,读取指定个数的待申请状态的业务,遍历SQL返回的结果集,将业务编号、参与者存入第一哈希表中,同时将当前读取的所有业务编号存入第二哈希表中。
第二哈希表的key部分存放所述第一哈希表所具有的所有的业务编号,第二哈希表的value部分为空字符串。
在步骤2中取业务编号是由前向后依序取,排在第一位的业务编号首先被取得并进行步骤3操作。
数据库表设计为(此处只列出与本发明有关的主要字段):
业务表与参与者表示一对多的关系。
编写SQL时,SQL条件中,通过Task_ID= Exe_TaskID条件关联表,指定Task_State为待申请状态,指定读取n条记录,最后根据优先级权重及业务创建时间已降序的方式排序。
所述定时重新加载数据库表中最新的数据到第一和第二哈希表中指设计一个轮询线程,根据SQL定时刷新业务,在默认情况下不开启该轮询线程,只有在第一次申请业务时才开启,最大化地节省服务器资源;建立一个配置文件用于配置轮询线程的刷新时间,刷新时间根据业务压力、服务器性能以及每天需要处理的业务量而定,一般在20秒-30秒间调整。
当轮询线程工作时,先将数据库中的业务读取到两个临时变量中,读取完后分别赋值给第一哈希表缓存及第二哈希表缓存,这样,做到读取数据库数据时,仍能接受应用的业务申请请求,避免读取大量数据导致请求排队,同时,为了控制业务缓存的个数,建立一个配置文件用于配置每次读取的个数参数,可以根据业务量合理调整每次读取的业务个数。
在应用系统端通过远程协议调用获取业务的服务,当第一次调用时,在服务器端才开启读取业务的定时轮询线程用于将业务读取到内存中(节省服务器资源),之后定时读取。
Claims (4)
1.一种工作流系统中业务的获取方法,其特征在于,它包括第一哈希表和第二哈希表,第一和第二哈希表均存放在内存中,第一哈希表的key部分存放参与者的识别码,第一哈希表的value部分存放由多个业务编号组成的单向链表,由key-value键值对来确定所述参与者有权限处理的业务列表;第二哈希表存放所述第一哈希表所具有的所有的业务编号;
当工作流系统运作时,首先,从数据库表中读取指定个数的待申请状态的业务,并将读取到的业务编号、具有权限参与所述业务编号所指向的业务的参与者的识别码存入第一哈希表,同时将该次读取得到的业务编号全部存入第二哈希表;设置业务的刷新时间,根据该刷新时间,定时重新加载数据库表中最新的数据到第一和第二哈希表中;
当任一一个参与者要获取业务时,获取业务过程为,1、根据参与者的识别码到第一哈希表中相应的业务列表, 2、在该业务列表中取一个业务编号,同时将该业务编号从所述业务列表中删除,3、在第二哈希表中查找并判断上述业务编号是否存在,3.1、若存在,则向参与者返回该业务编号所指向的业务并将数据库表中的该业务编号更新为已被获取状态,同时将该业务编号从第二哈希表删除,并退出获取业务过程,3.2、若不存在,则重复步骤2、3直到获取业务,或者取完所述业务列表的所有业务编号后仍然没有业务可以获取时,则向参与者返回没有业务可获取,并退出获取业务过程。
2. 根据权利要求1所述的工作流系统中业务的获取方法,其特征在于,在数据库表中加入优先级及权重字段,用于区分业务的紧急程度;所述从数据库表中读取指定个数的待申请状态的业务,并将读取到的业务编号、具有权限参与所述业务编号所指向的业务的参与者的识别码存入第一哈希表,同时将该次读取得到的业务编号全部存入第二哈希表是指,通过编写SQL,SQL中根据业务优先级权重及业务创建时间由前向后排序,读取指定个数的待申请状态的业务,遍历SQL返回的结果集,将业务编号、参与者存入第一哈希表中,同时将当前读取的所有业务编号存入第二哈希表中。
3.根据权利要求1所述的工作流系统中业务的获取方法,其特征在于,第二哈希表的key部分存放所述第一哈希表所具有的所有的业务编号,第二哈希表的value部分为空字符串。
4.根据权利要求1所述的工作流系统中业务的获取方法,其特征在于,在步骤2中取业务编号是由前向后依序取,排在第一位的业务编号首先被取得并进行步骤3操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100770737A CN102136004B (zh) | 2011-03-30 | 2011-03-30 | 工作流系统中业务的获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100770737A CN102136004B (zh) | 2011-03-30 | 2011-03-30 | 工作流系统中业务的获取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102136004A true CN102136004A (zh) | 2011-07-27 |
CN102136004B CN102136004B (zh) | 2012-11-21 |
Family
ID=44295790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100770737A Active CN102136004B (zh) | 2011-03-30 | 2011-03-30 | 工作流系统中业务的获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102136004B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530111A (zh) * | 2013-08-20 | 2014-01-22 | 山东中创软件工程股份有限公司 | 一种流程定义的获取方法及装置 |
CN104267946A (zh) * | 2014-09-23 | 2015-01-07 | 中国南方电网有限责任公司 | 一种基于soa大并发高性能工作流程服务器系统 |
CN105427031A (zh) * | 2015-11-06 | 2016-03-23 | 中国南方电网有限责任公司 | 三方数据核对方法及系统 |
CN111031567A (zh) * | 2020-01-14 | 2020-04-17 | 南通先进通信技术研究院有限公司 | 一种核心网设备的流量统计方法 |
CN111199386A (zh) * | 2019-12-27 | 2020-05-26 | 天阳宏业科技股份有限公司 | 一种工作流引擎及其实现方法 |
CN111198546A (zh) * | 2020-01-02 | 2020-05-26 | 北京众信易保科技有限公司 | 一种数据采集控制的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005117549A2 (en) * | 2004-05-26 | 2005-12-15 | Pegasystems Inc. | Method and apparatus for integration of declarative rule-based processing with procedural programming in a digital data-processing environment |
CN1912840A (zh) * | 2006-08-25 | 2007-02-14 | 上海普元信息技术有限责任公司 | 构件化软件系统中实现分布式业务逻辑计算的方法 |
CN101257661A (zh) * | 2008-04-09 | 2008-09-03 | 中兴通讯股份有限公司 | 一种大容量用户业务信息加载方法及其系统 |
-
2011
- 2011-03-30 CN CN2011100770737A patent/CN102136004B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005117549A2 (en) * | 2004-05-26 | 2005-12-15 | Pegasystems Inc. | Method and apparatus for integration of declarative rule-based processing with procedural programming in a digital data-processing environment |
CN1912840A (zh) * | 2006-08-25 | 2007-02-14 | 上海普元信息技术有限责任公司 | 构件化软件系统中实现分布式业务逻辑计算的方法 |
CN101257661A (zh) * | 2008-04-09 | 2008-09-03 | 中兴通讯股份有限公司 | 一种大容量用户业务信息加载方法及其系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530111A (zh) * | 2013-08-20 | 2014-01-22 | 山东中创软件工程股份有限公司 | 一种流程定义的获取方法及装置 |
CN104267946A (zh) * | 2014-09-23 | 2015-01-07 | 中国南方电网有限责任公司 | 一种基于soa大并发高性能工作流程服务器系统 |
CN104267946B (zh) * | 2014-09-23 | 2016-07-06 | 中国南方电网有限责任公司 | 一种基于soa的工作流程服务器系统 |
CN105427031A (zh) * | 2015-11-06 | 2016-03-23 | 中国南方电网有限责任公司 | 三方数据核对方法及系统 |
CN105427031B (zh) * | 2015-11-06 | 2017-03-15 | 中国南方电网有限责任公司 | 三方数据核对方法及系统 |
CN111199386A (zh) * | 2019-12-27 | 2020-05-26 | 天阳宏业科技股份有限公司 | 一种工作流引擎及其实现方法 |
CN111198546A (zh) * | 2020-01-02 | 2020-05-26 | 北京众信易保科技有限公司 | 一种数据采集控制的方法及系统 |
CN111031567A (zh) * | 2020-01-14 | 2020-04-17 | 南通先进通信技术研究院有限公司 | 一种核心网设备的流量统计方法 |
CN111031567B (zh) * | 2020-01-14 | 2022-06-24 | 南通先进通信技术研究院有限公司 | 一种核心网设备的流量统计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102136004B (zh) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102136004B (zh) | 工作流系统中业务的获取方法 | |
CN109493076B (zh) | 一种Kafka消息唯一消费方法、系统、服务器及存储介质 | |
CN102073540A (zh) | 分布式事务提交方法和装置 | |
US20080140627A1 (en) | Method and apparatus for aggregating database runtime information and analyzing application performance | |
CN104765840B (zh) | 一种大数据分布式存储的方法和装置 | |
CN106599043A (zh) | 用于多级数据库的中间件和多级数据库系统 | |
US20140129597A1 (en) | Document Merging Method | |
US8650224B2 (en) | Batching content management operations to facilitate efficient database interactions | |
CN111460023A (zh) | 基于Elasticsearch的业务数据处理方法、装置、设备及存储介质 | |
DE202012013469U1 (de) | Datenverarbeitungsdienst | |
CN106777270A (zh) | 一种基于提交点时间线同步的异构数据库复制并行执行系统及方法 | |
CN103399856A (zh) | 面向scada系统的爆发式数据缓存处理系统及其方法 | |
US8549192B2 (en) | Stream data control server, stream data control method, and stream data controlling program | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN111914294B (zh) | 一种数据库敏感数据识别方法及系统 | |
JP2019204474A (ja) | ユーザアクセスプリファレンスモデルを用いたストレージ方法 | |
DE202021004295U1 (de) | Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem | |
US11726975B2 (en) | Auto unload | |
CN103902592A (zh) | 基于MapReduce实现分析函数的方法及系统 | |
CN109344137A (zh) | 一种日志存储方法及系统 | |
CN102262636B (zh) | 生成数据库分区执行计划的方法及装置 | |
WO2018090557A1 (zh) | 查询数据表的方法和装置 | |
US11853229B2 (en) | Method and apparatus for updating cached information, device, and medium | |
CN107203890B (zh) | 凭证数据发放方法、装置及系统 | |
US8229946B1 (en) | Business rules application parallel processing system |
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 | ||
CP03 | Change of name, title or address |
Address after: Xinyada technology building, 3888 Jiangnan Avenue, Binjiang District, Hangzhou City, Zhejiang Province 310051 Patentee after: Sinyada Technology Co.,Ltd. Address before: Xinyada technology building, 3888 Jiangnan Avenue, Hangzhou (Binjiang District), Zhejiang Province 310053 Patentee before: SUNYARD SYSTEM ENGINEERING Co.,Ltd. |
|
CP03 | Change of name, title or address |