工作流系统中业务的获取方法

文档序号:6655061阅读:184来源:国知局
专利名称:工作流系统中业务的获取方法
技术领域
本发明涉及工作流系统技术领域,具体讲是一种工作流系统中业务的获取方法。
背景技术
工作流系统为一重要的信息处理技术,广泛应用于各行各业,比如银行、保险等金融行业。目前在银行、保险等金融行业的业务趋势趋向于建立区域中心并集中处理,由于 金融行业的日业务量日益增大,对工作流系统的业务吞吐量和稳定性提出了更高的要求, 同时如何降低资源成本,提高资源利用率,也是工作流系统性能的重要考量点,为了实现上 述技术要求,传统的方式是基于数据库的优化方式,但是该方式有以下局限
(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操作。数据库表设计为(此处只列出与本发明有关的主要字段)
权利要求
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操作。
全文摘要
本发明公开了一种能够降低成本,提高系统可靠性,运行效率高的工作流系统中业务的获取方法,获取业务过程为,1、根据参与者的识别码到第一哈希表中相应的业务列表,2、在该业务列表中取一个业务编号,同时将该业务编号从所述业务列表中删除,3、在第二哈希表中查找并判断上述业务编号是否存在,3.1、若存在,则向参与者返回该业务编号所指向的业务并将数据库表中的该业务编号更新为已被获取状态,同时将该业务编号从第二哈希表删除,并退出获取业务过程,3.2、若不存在,则重复步骤2、3直到获取业务,或者取完所述业务列表的所有业务编号后仍然没有业务可以获取时,则向参与者返回没有业务可获取,并退出获取业务过程。
文档编号G06Q10/00GK102136004SQ20111007707
公开日2011年7月27日 申请日期2011年3月30日 优先权日2011年3月30日
发明者丁一, 姚辉, 李峰, 林路, 陈铭, 魏致善, 鲍锋彬 申请人:信雅达系统工程股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1