一种流程定义的获取方法及装置制造方法
【专利摘要】本申请公开了一种流程定义的获取方法及装置,预先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中,所述方法包括获取业务流程运行生成的对象获取指令,所述对象获取指令中至少包括所述业务流程所需要的流程定义对象所对应的待获取关键值;在所述内存中查询是否含有与所述待获取关键值相对应的第一目标关键值,如果是,在所述内存中提取与查询到的第一目标关键值相对应的流程定义对象。本申请实施例通过预先将预设数量值的流程定义置于具有高速读写功能的内存中,进而在业务流程需要获取流程定义时,首先在内存中对所需的流程定义进行查询获取,无需频繁对数据库中进行查询访问,提高流程定义的获取效率及业务流程的运行速率。
【专利说明】一种流程定义的获取方法及装置
【技术领域】
[0001]本申请涉及计算机应用【技术领域】,特别涉及一种流程定义的获取方法及装置。
【背景技术】
[0002]工作流是指工作流程及其各操作步骤之间业务规则的抽象、概括、描述。而流程定义,也称为流程模板,描述一个完整的业务过程,它由若干活动组成,包括了流程的基本信息、流程的开始条件和结束条件、组成的活动、活动间流转的规则、需要用户执行的工作任务(工作项)、可能调用的应用程序以及流程相关数据等信息。
[0003]其中,每个流程定义均可以有多个版本,而这多个版本之间使用一个唯一的字符串进行标示,同一标识的流程定义可以对应多个不同的流程定义编号ID,每个编号ID表明该流程定义的版本。
[0004]在业务流程的生命周期中,几乎业务流程运行的每一步都需要访问流程实例对应的流程定义。不论是流程图的展示、任务和活动的创建、任务的接收和提交、活动跳转、流程是否结束的判断都需要根据流程定义进行判断或展示,因此,流程定义获取的效率决定工作流产品的质量。
[0005]目前的流程定义的获取通常是通过动态加载的方式进行获取,即为,每次均从流程定义存储的数据库中获取相应的流程定义,但这种方案在每次获取流程定义时均需要查询数据库,由此导致流程定义的获取效率较低。
【发明内容】
[0006]本申请所要解决的技术问题是提供一种流程定义的获取方法及装置,用以解决现有技术中获取流程定义时需要频繁查询数据库,导致流程定义的获取效率较低的技术问题。
[0007]本申请提供了一种流程定义的获取方法,预先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中,所述方法包括:
[0008]获取业务流程运行生成的对象获取指令,所述对象获取指令中至少包括所述业务流程所需要的流程定义对象所对应的待获取关键值;
[0009]在所述内存中查询是否含有与所述待获取关键值相对应的第一目标关键值,如果是,在所述内存中提取与查询到的第一目标关键值相对应的流程定义对象。
[0010]上述方法,优选的,所述在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中,包括:
[0011]依据数据库中每个流程定义对象各自的被更新时间值的大小顺序,对所述数据库中的流程定义对象进行排序;
[0012]将所述数据库中排序在预设数量值以及该预设数量值之前的流程定义对象及其关键值置于预设的内存中。
[0013]上述方法,优选的,若在所述内存中未查询到与所述待获取关键值相对应的第一目标关键值,所述方法还包括:
[0014]在所述数据库中查询与所述待获取关键值相对应的第二目标关键值;
[0015]提取所述数据库中与查询到的第二目标关键值相对应的流程定义对象。
[0016]上述方法,优选的,在所述提取所述数据库中与所述查询到的第二目标关键值相对应的流程定义的流程定义对象之后,所述方法还包括:
[0017]依据所述第二目标关键值及其对应的流程定义对象,按照预设的内存更新规则更新所述内存;
[0018]其中,所述依据所述第二目标关键值及其对应的流程定义对象,按照预设的内存更新规则更新所述内存,具体包括:
[0019]判断所述内存是否存在所述第二目标关键值及其对应的流程定义对象的存储空间,如果是,将所述第二目标关键值及其对应的流程定义对象存储至所述内存中,否则,删除所述内存中被访问率值最小的目标流程定义对象及其关键值,将所述第二目标关键值及其对应的流程定义对象存储至所述内存中。
[0020]上述方法,优选的,在所述在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中之后,所述方法还包括:
[0021 ] 获取待更新流程定义对象及其关键值;
[0022]将所述待更新流程定义对象及其关键值写入至所述数据库中;
[0023]判断所述内存中是否含有与所述待更新流程定义对象的标识信息相对应的目标流程定义对象,如果是,将所述待更新流程定义对象代替所述目标流程定义对象,否则,依据所述待更新流程定义对象及其关键值,按照预设的内存更新规则更新所述内存。
[0024]本申请还提供了一种流程定义的获取装置,所述装置包括:
[0025]对象预存单元,用于预先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中;
[0026]指令获取单元,用于获取业务流程运行生成的对象获取指令,所述对象获取指令中至少包括所述业务流程所需要的流程定义对象所对应的待获取关键值;
[0027]第一查询单元,用于在所述内存中查询是否含有与所述待获取关键值相对应的第一目标关键值,如果是,触发第一对象提取单元;
[0028]第一对象提取单元,用于在所述内存中提取与查询到的第一目标关键值相对应的流程定义对象。
[0029]上述装置,优选的,所述对象预存单元包括:
[0030]对象排序子单元,用于依据数据库中每个流程定义对象各自的被更新时间值的大小顺序,对所述数据库中的流程定义对象进行排序;
[0031]对象预置子单元,用于将所述数据库中排序在预设数量值以及该预设数量值之前的流程定义对象及其关键值置于预设的内存中。
[0032]上述装置,优选的,还包括:
[0033]第二查询单元,用于在所述第一查询单元在所述内存中未查询到与所述待获取关键值相对应的第一目标关键值时,在所述数据库中查询与所述待获取关键值相对应的第二目标关键值;
[0034]第二对象提取单元,用于提取所述数据库中与查询到的第二目标关键值相对应的流程定义对象。
[0035]上述装置,优选的,还包括:
[0036]第一内存更新单元,用于在所述第二对象提取单元提取到所述数据库中与所述查询到的第二目标关键值相对应的流程定义的流程定义对象之后,依据所述第二目标关键值及其对应的流程定义对象,按照预设的内存更新规则更新所述内存;
[0037]其中,所述第一内存更新单元包括:
[0038]空间判断子单元,用于判断所述内存中是否存在所述第二目标关键值及其对应的流程定义对象的存储空间,如果是,触发对象存储子单元,否则,触发对象删除子单元;
[0039]对象存储子单元,用于将所述第二目标关键值及其对应的流程定义对象存储至所述内存中;
[0040]对象删除子单元,用于删除所述内存中被访问值最小的目标流程定义对象及其关键值,触发所述对象存储子单元。
[0041]上述装置,优选的,还包括:
[0042]更新对象获取单元,用于获取待更新流程定义对象及其关键值;
[0043]数据库写入单元,用于将所述待更新流程定义对象及其关键值写入至所述数据库中;
[0044]内存存储判定单元,用于判断所述内存中是否含有与所述待更新流程定义对象的标识信息相对应的目标流程定义对象,如果是,触发对象更新单元,否则,触发第二内存更新单元;
[0045]对象更新单元,用于将所述待更新流程定义对象代替所述目标流程定义对象;
[0046]第二内存更新单元,用于依据所述待更新流程定义对象及其关键值,按照预设的内存更新规则更新所述内存。
[0047]由上述方案可知,本申请提供的一种流程定义的获取方法及装置,通过预先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中,在业务流程运行过程中需要进行流程定义获取时,对业务流程运行生成的对象获取指令进行获取,而所述对象获取指令中至少包括所述业务流程所需要的流程定义对象所对应的待获取关键值,之后在所述内存中查询与所述待获取关键值相对应的第一目标关键值,由此在所述内存中提取与查询到的第一目标关键值相对应的流程定义对象,实现本申请目的。本申请通过预先将预设数量值的流程定义置于具有高速读写功能的内存中,进而在业务流程需要获取流程定义时,首先在内存中对所需的流程定义进行查询获取,无需频繁对数据库中进行查询访问,提高流程定义的获取效率及业务流程的运行速率。
【专利附图】
【附图说明】
[0048]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0049]图1为本申请提供的一种流程定义的获取方法实施例一的流程图;
[0050]图2为本申请提供的一种流程定义的获取方法实施例二的部分流程图;[0051]图3为本申请提供的一种流程定义的获取方法实施例三的流程图;
[0052]图4为本申请提供的一种流程定义的获取方法实施例四的流程图;
[0053]图5为本申请实施例四的部分流程图;
[0054]图6为本申请实施例四的另一流程图;
[0055]图7为本申请提供的一种流程定义的获取方法实施例五的部分流程图;
[0056]图8为本申请实施例五的流程图;
[0057]图9为本申请提供的一种流程定义的获取装置实施例六的结构示意图;
[0058]图10为本申请提供的一种流程定义的获取装置实施例七的部分结构示意图;
[0059]图11为本申请提供的一种流程定义的获取装置实施例八的结构示意图;
[0060]图12为本申请提供的一种流程定义的获取装置实施例九的结构示意图;
[0061]图13为本申请实施例九的部分结构示意图;
[0062]图14为本申请提供的一种流程定义的获取装置实施例十的部分结构示意图。【具体实施方式】
[0063]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0064]参考图1,为本申请提供的一种流程定义的获取方法实施例一的流程图,本申请实施例在处理流程定义的获取之前,在工作流引擎的启动完成时,本申请实施例首先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中,其中,所述预设数量值可以由用户进行自行设定,例如,cache.capacity=1000,即为将所述数量值设置为1000。
[0065]需要说明的是,所述预设的内存为具有高速读写性能的设备,在本申请实施例中,所述内存采用OSCache的方式存储流程定义对象及其关键值,其中,所述OSCache由OpenSymphony设计。Oscache是一个被广泛采用的高性能的J2EE缓存框架,oscache还能应用于任何java应用程序的普通缓冲解决方案。
[0066]在本申请实施例中,OSCache可以以map的形式实现,即key值及对应的value值,对应的,在本申请实施例中即前文中所述的内存中存储关键值及其对应流程定义对象值。
[0067]需要说明的是,所述关键值可以为流程定义的版本编号信息ID值,其value值即为该ID对应的流程定义对象;所述关键值也可以为流程定义的标识信息,其value值即为该标识信息对应的最新版本的流程定义对象。
[0068]所述方法可以包括以下步骤:
[0069]步骤101:获取业务流程运行生成的对象获取指令。
[0070]其中,所述对象获取指令中至少包括所述业务流程所需的流程定义对象所对应的待获取关键值。
[0071]需要说明的是,所述待获取关键值的性质与所述内存中存储的关键值的类型相一致,即若所述内存中的所述关键值以编号信息ID值的形式存储,那么所述待获取关键值即为所述业务流程所需的流程定义对象所对应的编号信息ID值;若所述内存中的所述关键值以所述标识信息的形式存储,那么所述待获取关键值即为所述业务流程所需的流程定义对象所对应的标识信息。
[0072]步骤102:在所述内存中查询是否含有与所述待获取关键值相对应的第一目标关键值,如果是,执行步骤103。
[0073]其中,所述步骤102中的查询方式可以通过二叉树的查询方式或遍历的方式实现。
[0074]步骤103:在所述内存中提取与查询到的第一目标关键值相对应的流程定义对象。
[0075]由上述方案可知,本申请提供的一种流程定义的获取方法实施例一,通过预先将预设数量值的流程定义置于具有高速读写功能的内存中,进而在业务流程需要获取流程定义时,首先在内存中对所需的流程定义进行查询获取,无需频繁对数据库中进行查询访问,提高流程定义的获取效率及业务流程的运行速率。
[0076]同时,相对于现有技术中,在业务流程引擎启动时将所有流程定义均加载到内存中,导致内存占用较多,出现物理内存不足无法正常运行业务流程的情况,本申请实施例只需将部分流程定义加载置于内存中,既提高流程处理的效率,同时不受物理内存的限值。
[0077]为了保证当前业务流程中所获取到的流程定义对象为版本最新,由此保证获取到的流程定义对象的时间有效性,本申请中可以在将预设数量值的流程定义对象及其关键值置于内存中时,可以通过将所述数据库中预设数量值的最新更新的流程定义对象及其关键值置于内存中。
[0078]由此,参考图2,为本申请提供的一种流程定义的获取方法实施例二的部分流程图,本申请实施例在实现预先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中时,可以通过以下步骤实现:
[0079]步骤201:依据数据库中每个流程定义对象各自的被更新时间值的大小顺序,对所述数据库中的流程定义对象进行排序。
[0080]其中,所述被更新时间是指,流程定义对象本身在数据库中的被更新的时间,该被更新时间对应的字段是记录在所述数据库中的,并非该流程定义对象的被访问时间,该流程定义对象的被访问时间可以不被记录。
[0081]需要说明的是,所述步骤201的执行结果即为:所述数据库中的每个流程定义对象以其各自的被更新时间依次排列,被更新时间值最大即最晚被更新或者可以理解为距离上次被更新时间最短的流程定义对象排序在最前,依次为被更新时间距离当前时间愈远的流程定义对象,最后被更新时间最前即最早被更新或者可以理解为距离上次被更新的时间最长的流程定义对象排序在最后。
[0082]步骤202:将所述数据库中排序在预设数量值以及该预设数量值之前的流程定义对象及其关键值置于预设的内存中。
[0083]其中,由所述步骤201中可知,所述数据库中的流程定义对象及其关键值以其各自的被更新时间值的大小顺序被排序,进而在所述步骤202中,选取前预设数量值的流程定义对象及其关键值置于内存中。
[0084]由上述方案中可知,本申请实施例通过将所述数据库中预设数量值的最新更新的流程定义对象及其关键值置于内存中,从而后续以高效率获取到的内存中的流程定义具有时间有效性,保证业务流程运行的准确性。[0085]参考图3,为本申请提供的一种流程定义的获取方法实施例三的流程图,其中,在所述步骤102中在所述内存中未查询到与所述待获取关键值相对应的第一目标关键值时,所述方法还可以包括以下步骤:
[0086]步骤104:在所述数据库中查询与所述待获取关键值相对应的第二目标关键值。
[0087]其中,所述步骤102中在所述内存中未查询到所述第一目标关键值时,表明所述内存中并未预先存储与所述待获取关键值相对应的流程定义对象,此时,为保证所述业务流程的正常运行,可以以动态加载的方式显示流程定义的获取,即为在所述数据库中查询与所述待获取关键值相对应的流程定义对象。
[0088]步骤105:提取所述数据库中与查询到的第二目标关键值相对应的流程定义对象。
[0089]由上述方案中可知,本申请提供的一种流程定义的获取方法实施例三中,在预设的内存中未查询到业务流程所需的流程定义对象时,可以在数据库中直接进行获取,保证业务流程的正常运行。
[0090]需要说明的是,在内存中为查询到所需的流程定义对象并在数据库中获取到所述业务流程所需的流程定义对象时,表明该流程定义对象为所述数据库中最新被更新的流程定义,此时需要对所述内存的存储内容进行更新,参考图4,为本申请提供的一种流程定义的获取方法实施例四的流程图,在所述步骤105之后,所述方法还可以包括以下步骤:
[0091]步骤106:依据所述第二目标关键值及其对应的流程定义对象,按照预设的内存更新规则更新所述内存。
[0092]其中,在实际实现中,所述内存更新规则可以为先进先出更新规则,即在所述内存中空间不足时,将第二目标关键值及其对应的流程定义对象代替所述内存中最先被置入的流程定义;另外,所述内存更新规则也可以为LRU (Lease Recently Used,最近最少使用算法)更新规则,即在所述内存空间不足时,将所述第二目标关键值及其对应的流程定义对象代替所述内存中被访问率最低的流程定义,此时,参考图5,为所述步骤106的流程图,所述步骤106可以通过以下步骤实现:
[0093]步骤601:判断所述内存是否存在所述第二目标关键值及其对应的流程定义对象的存储空间,如果是,执行步骤602,否则,执行步骤603。
[0094]步骤602:将所述第二目标关键值及其对应的流程定义对象存储至所述内存中。
[0095]步骤603:删除所述内存中被访问率值最小的目标流程定义对象及其关键值,执行所述步骤602。
[0096]其中,所述内存中被访问率值最小即为被访问率最低,可以理解为所述内存中最近最少被访问。所述步骤601是指,判断所述内存中是否有足够的剩余存储空间足以存储所述第二目标关键值及其对应的流程定义对象,在所述内存的存储空间充裕时,直接执行所述步骤602,将所述第二目标关键值及其对应的流程定义对象存储至所述内存中,而在所述内存中空间不足时,需要首先将所述内存中被访问率最低即最少被访问的流程定义对象及其关键值进行删除,进而再执行所述步骤602,将所述第二目标关键值及其对应的流程定义对象存储至所述内存中,实现本申请实施例中对所述内存的更新。如图6中所示,所述业务流程在需要访问流程定义时,首先待获取的流程定义是否在内存中即为所述步骤102的实现过程,而在所述内存中含有所述待获取流程定义时,直接获取该流程定义并返回,结束当前流程定义获取;在内存中并未查询到所述待获取流程定义时,在数据库中查询并获取该待获取流程定义即为所述步骤104及所述步骤105,之后,通过LRU规则策略,将该流程定义更新至内存中即为所述步骤106,结束当前流程定义获取。
[0097]需要说明的是,在所述数据库中加入新的流程定义时,需要同时对内存中的流程定义进行更新,此时,参考图7,为本申请提供的一种流程定义的获取方法实施例五的部分流程图,在所述在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中之后,所述方法还可以包括以下步骤:
[0098]步骤107:获取待更新流程定义对象及其关键值。
[0099]其中,所述待更新流程定义对象及其关键值即为需要加入数据库及内存中的新的流程定义。
[0100]步骤108:将所述待更新流程定义对象及其关键值写入至所述数据库中。
[0101]步骤109:判断所述内存中是否含有与所述待更新流程定义对象的标识信息相对应的目标流程定义对象,如果是,执行步骤110,否则,执行步骤111。
[0102]其中,所述步骤109是指,在所述内存中查询是否含有与该新的流程定义同一标识而不同版本编号ID值的目标流程定义。
[0103]步骤110:将所述待更新流程定义对象代替所述目标流程定义对象。
[0104]其中,所述步骤110即为,在所述内存中,将新版本的流程定义代替旧版本的流程定义。
[0105]步骤111:依据所述待更新流程定义对象及其关键值,按照预设的内存更新规则更新所述内存。
[0106]其中,所述内存更新规则可以与前文实施例四中的LRU更新规则相同,即在所述内存空间不足时,将所述待更新流程定义代替所述内存中最近最少被访问的流程定义,所述步骤111可以通过以下方式实现:
[0107]判断所述内存的存储空间是否足够存储所述待更新流程定义对象及其关键值,如果是,将所述待更新流程定义对象及其关键值存储至所述内存中,否则,删除所述内存中被访问率值最小的流程定义对象及其关键值,再将所述待更新流程定义对象及其关键值存储至所述内存中。
[0108]如图8中的流程示意图所示,在所述数据中导入新流程定义时,首先将新的流程定义置于所述数据库中即为所述步骤107及所述步骤108,其次,判定该新的流程定义是否有同一标识信息的流程定义存储在内存中,如果是即可更新该标识信息对应的流程定义即为所述步骤109及所述步骤110,否则,根据LRU策略规则将该新的流程定义更新至内存中替换旧的流程定义即为所述步骤111。
[0109]参考图9,为本申请提供的一种流程定义的获取装置实施例六的结构示意图,所述装置可以包括:
[0110]对象预存单元901,用于预先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中。
[0111]其中,本申请实施例在处理流程定义的获取之前,在工作流引擎的启动完成时,本申请实施例通过对象预存单元901首先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中,其中,所述预设数量值可以由用户进行自行设定,例如,cache.capacity=1000,即为将所述数量值设置为1000。
[0112]需要说明的是,所述预设的内存为具有高速读写性能的设备,在本申请实施例中,所述内存采用OSCache的方式存储流程定义对象及其关键值,其中,所述OSCache由OpenSymphony设计。Oscache是一个被广泛采用的高性能的J2EE缓存框架,oscache还能应用于任何java应用程序的普通缓冲解决方案。
[0113]在本申请实施例中,OSCache可以以map的形式实现,即key值及对应的value值,对应的,在本申请实施例中即前文中所述的内存中存储关键值及其对应流程定义对象值。
[0114]需要说明的是,所述关键值可以为流程定义的版本编号信息ID值,其value值即为该ID对应的流程定义对象;所述关键值也可以为流程定义的标识信息,其value值即为该标识信息对应的最新版本的流程定义对象。
[0115]指令获取单元902,用于获取业务流程运行生成的对象获取指令,所述对象获取指令中至少包括所述业务流程所需要的流程定义对象所对应的待获取关键值。
[0116]需要说明的是,所述待获取关键值的性质与所述内存中存储的关键值的类型相一致,即若所述内存中的所述关键值以编号信息ID值的形式存储,那么所述待获取关键值即为所述业务流程所需的流程定义对象所对应的编号信息ID值;若所述内存中的所述关键值以所述标识信息的形式存储,那么所述待获取关键值即为所述业务流程所需的流程定义对象所对应的标识信息。
[0117]第一查询单元903,用于在所述内存中查询是否含有与所述待获取关键值相对应的第一目标关键值,如果是,触发第一对象提取单元904。
[0118]其中,所述第一查询单元903中的查询方式可以通过二叉树的查询方式或遍历的方式实现。
[0119]第一对象提取单元904,用于在所述内存中提取与查询到的第一目标关键值相对应的流程定义对象。
[0120]由上述方案可知,本申请提供的一种流程定义的获取装置实施例六,通过预先将预设数量值的流程定义置于具有高速读写功能的内存中,进而在业务流程需要获取流程定义时,首先在内存中对所需的流程定义进行查询获取,无需频繁对数据库中进行查询访问,提高流程定义的获取效率及业务流程的运行速率。
[0121]同时,相对于现有技术中,在业务流程引擎启动时将所有流程定义均加载到内存中,导致内存占用较多,出现物理内存不足无法正常运行业务流程的情况,本申请实施例只需将部分流程定义加载置于内存中,既提高流程处理的效率,同时不受物理内存的限值。
[0122]为了保证当前业务流程中所获取到的流程定义对象为版本最新,由此保证获取到的流程定义对象的时间有效性,本申请中可以在将预设数量值的流程定义对象及其关键值置于内存中时,可以通过将所述数据库中预设数量值的最新更新的流程定义对象及其关键值置于内存中。
[0123]由此,参考图10,为本申请提供的一种流程定义的获取装置实施例七的部分结构示意图,其中,所述对象预存单元901可以包括:
[0124]对象排序子单元911,用于依据数据库中每个流程定义对象各自的被更新时间值的大小顺序,对所述数据库中的流程定义对象进行排序。
[0125]其中,所述被更新时间是指,流程定义对象本身在数据库中的被更新的时间,该被更新时间对应的字段是记录在所述数据库中的,并非该流程定义对象的被访问时间,该流程定义对象的被访问时间可以不被记录。
[0126]需要说明的是,所述对象排序子单元911的运行结果即为:所述数据库中的每个流程定义对象以其各自的被更新时间依次排列,被更新时间值最大即最晚被更新或者可以理解为距离上次被更新时间最短的流程定义对象排序在最前,依次为被更新时间距离当前时间愈远的流程定义对象,最后被更新时间最前即最早被更新或者可以理解为距离上次被更新的时间最长的流程定义对象排序在最后。
[0127]对象预置子单元912,用于将所述数据库中排序在预设数量值以及该预设数量值之前的流程定义对象及关键值置于预设的内存中。
[0128]其中,由所述对象预置子单元912中可知,所述数据库中的流程定义对象及其关键值以其各自的被更新时间值的大小顺序被排序,进而在所述步骤202中,选取前预设数量值的流程定义对象及其关键值置于内存中。
[0129]由上述方案中可知,本申请实施例通过将所述数据库中预设数量值的最新更新的流程定义对象及其关键值置于内存中,从而后续以高效率获取到的内存中的流程定义具有时间有效性,保证业务流程运行的准确性。
[0130]参考图11,为本申请提供的一种流程定义的获取装置实施例八的结构示意图,所述装置还可以包括:
[0131]第二查询单元905,用于在所述第一查询单元903在所述内存中未查询到与所述待获取关键值相对应的第一目标关键值时,在所述数据库中查询与所述待获取关键值相对应的第二目标关键值。
[0132]其中,所述第一查询单元903中在所述内存中未查询到所述第一目标关键值时,表明所述内存中并未预先存储与所述待获取关键值相对应的流程定义对象,此时,为保证所述业务流程的正常运行,本申请实施例可以以动态加载的方式显示流程定义的获取,即为所述第二查询单元905在所述数据库中查询与所述待获取关键值相对应的流程定义对象。
[0133]第二对象提取单元906,用于提取所述数据库中与查询到的第二目标关键值相对应的流程定义对象。
[0134]由上述方案中可知,本申请提供的一种流程定义的获取装置实施例八中,在预设的内存中未查询到业务流程所需的流程定义对象时,可以在数据库中直接进行获取,保证业务流程的正常运行。
[0135]需要说明的是,在内存中为查询到所需的流程定义对象并在数据库中获取到所述业务流程所需的流程定义对象时,表明该流程定义对象为所述数据库中最新被更新的流程定义,此时需要对所述内存的存储内容进行更新,参考图12,为本申请提供的一种流程定义的获取装置实施例九的结构示意图,所述装置还可以包括:
[0136]第一内存更新单元907,用于在所述第二对象提取单元906提取到所述数据库中与所述查询到的第二目标关键值相对应的流程定义的流程定义对象之后,依据所述第二目标关键值及其对应的流程定义对象,按照预设的内存更新规则更新所述内存。
[0137]其中,在实际实现中,所述内存更新规则可以为先进先出更新规则,即在所述内存中空间不足时,将第二目标关键值及其对应的流程定义对象代替所述内存中最先被置入的流程定义;另外,所述内存更新规则也可以为LRU (Lease Recently Used,最近最少使用算法)更新规则,即在所述内存空间不足时,将所述第二目标关键值及其对应的流程定义对象代替所述内存中被访问率最低的流程定义,此时,参考图13,为所述第一内存更新单元907的结构示意图,所述第一内存更新单元907可以包括:
[0138]空间判断子单元971,用于判断所述内存中是否存在所述第二目标关键值及其对应的流程定义对象的存储空间,如果是,触发对象存储子单元972,否则,触发对象删除子单元 973。
[0139]对象存储子单元972,用于将所述第二目标关键值及其对应的流程定义对象存储至所述内存中。
[0140]对象删除子单元973,用于删除所述内存中被访问率值最小的目标流程定义对象及其关键值,触发所述对象存储子单元972。
[0141]其中,所述内存中被访问率值最小即为被访问率最低,可以理解为所述内存中最近最少被访问。所述空间判断子单元971是指,判断所述内存中是否有足够的剩余存储空间足以存储所述第二目标关键值及其对应的流程定义对象,在所述内存的存储空间充裕时,直接触发所述对象存储子单元972,将所述第二目标关键值及其对应的流程定义对象存储至所述内存中,而在所述内存中空间不足时,需要首先将所述内存中被访问率最低即最少未被访问的流程定义对象及其关键值进行删除,进而再触发所述对象存储子单元972,将所述第二目标关键值及其对应的流程定义对象存储至所述内存中,实现本申请实施例中对所述内存的更新。
[0142]需要说明的是,在所述数据库中加入新的流程定义时,需要同时对内存中的流程定义进行更新,此时,参考图14,为本申请提供的一种流程定义的获取装置实施例十的部分结构示意图,所述装置还可以包括:
[0143]更新对象获取单元908,用于获取待更新流程定义对象及其关键值。
[0144]其中,所述更新对象获取单元908由所述对象预存单元901触发执行。
[0145]需要说明的是,所述待更新流程定义对象及其关键值即为需要加入数据库及内存中的新的流程定义。
[0146]数据库写入单元909,用于将所述待更新流程定义对象及其关键值写入至所述数据库中。
[0147]内存存储判定单元910,用于判断所述内存中是否含有与所述待更新流程定义对象的标识信息相对应的目标流程定义对象,如果是,触发对象更新单元911,否则,触发第二内存更新单元912。
[0148]其中,所述内存存储判定单元910中是指,在所述内存中查询是否含有与该新的流程定义同一标识而不同版本编号ID值的目标流程定义。
[0149]对象更新单元911,用于将所述待更新流程定义对象代替所述目标流程定义对象。
[0150]其中,所述对象更新单元911即为,在所述内存中,将新版本的流程定义代替旧版本的流程定义。
[0151]第二内存更新单元912,用于依据所述待更新流程定义对象及其关键值,按照预设的内存更新规则更新所述内存。
[0152]其中,所述内存更新规则可以与前文实施例九中的LRU更新规则相同,即在所述内存空间不足时,将所述待更新流程定义代替所述内存中最近最少被访问的流程定义,所述第二内存更新单元912可以通过以下方式实现:
[0153]判断所述内存的存储空间是否足够存储所述待更新流程定义对象及其关键值,如果是,将所述待更新流程定义对象及其关键值存储至所述内存中,否则,删除所述内存中被访问率值最小的流程定义对象及其关键值,再将所述待更新流程定义对象及其关键值存储至所述内存中。
[0154]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0155]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0156]以上对本发明所提供的一种流程定义的获取方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核 心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【权利要求】
1.一种流程定义的获取方法,其特征在于,预先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中,所述方法包括: 获取业务流程运行生成的对象获取指令,所述对象获取指令中至少包括所述业务流程所需要的流程定义对象所对应的待获取关键值; 在所述内存中查询是否含有与所述待获取关键值相对应的第一目标关键值,如果是,在所述内存中提取与查询到的第一目标关键值相对应的流程定义对象。
2.根据权利要求1所述的方法,其特征在于,所述在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中,包括: 依据数据库中每个流程定义对象各自的被更新时间值的大小顺序,对所述数据库中的流程定义对象进行排序; 将所述数据库中排序在预设数量值以及该预设数量值之前的流程定义对象及其关键值置于预设的内存中。
3.根据权利要求1或2所述的方法,其特征在于,若在所述内存中未查询到与所述待获取关键值相对应的第一目标关键值,所述方法还包括: 在所述数据库中查询与所述待获取关键值相对应的第二目标关键值; 提取所述数据库中与查询到的第二目 标关键值相对应的流程定义对象。
4.根据权利要求3所述的方法,其特征在于,在所述提取所述数据库中与所述查询到的第二目标关键值相对应的流程定义的流程定义对象之后,所述方法还包括: 依据所述第二目标关键值及其对应的流程定义对象,按照预设的内存更新规则更新所述内存; 其中,所述依据所述第二目标关键值及其对应的流程定义对象,按照预设的内存更新规则更新所述内存,具体包括: 判断所述内存是否存在所述第二目标关键值及其对应的流程定义对象的存储空间,如果是,将所述第二目标关键值及其对应的流程定义对象存储至所述内存中,否则,删除所述内存中被访问率值最小的目标流程定义对象及其关键值,将所述第二目标关键值及其对应的流程定义对象存储至所述内存中。
5.根据权利要求1或2所述的方法,其特征在于,在所述在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中之后,所述方法还包括: 获取待更新流程定义对象及其关键值; 将所述待更新流程定义对象及其关键值写入至所述数据库中; 判断所述内存中是否含有与所述待更新流程定义对象的标识信息相对应的目标流程定义对象,如果是,将所述待更新流程定义对象代替所述目标流程定义对象,否则,依据所述待更新流程定义对象及其关键值,按照预设的内存更新规则更新所述内存。
6.一种流程定义的获取装置,其特征在于,所述装置包括: 对象预存单元,用于预先在数据库中获取预设数量值的流程定义对象及其关键值置于预设的内存中; 指令获取单元,用于获取业务流程运行生成的对象获取指令,所述对象获取指令中至少包括所述业务流程所需要的流程定义对象所对应的待获取关键值; 第一查询单元,用于在所述内存中查询是否含有与所述待获取关键值相对应的第一目标关键值,如果是,触发第一对象提取单元; 第一对象提取单元,用于在所述内存中提取与查询到的第一目标关键值相对应的流程定义对象。
7.根据权利要求6所述的装置,其特征在于,所述对象预存单元包括: 对象排序子单元,用于依据数据库中每个流程定义对象各自的被更新时间值的大小顺序,对所述数据库中的流程定义对象进行排序; 对象预置子单元,用于将所述数据库中排序在预设数量值以及该预设数量值之前的流程定义对象及其关键值置于预设的内存中。
8.根据权利要求6或7所述的装置,其特征在于,还包括: 第二查询单元,用于在所述第一查询单元在所述内存中未查询到与所述待获取关键值相对应的第一目标关键值时,在所述数据库中查询与所述待获取关键值相对应的第二目标关键值; 第二对象提取单元,用于提取所述数据库中与查询到的第二目标关键值相对应的流程定义对象。
9.根据权利要求8所述的装置,其特征在于,还包括: 第一内存更新单元,用于在所述第二对象提取单`元提取到所述数据库中与所述查询到的第二目标关键值相对应的流程定义的流程定义对象之后,依据所述第二目标关键值及其对应的流程定义对象,按照预设的内存更新规则更新所述内存; 其中,所述第一内存更新单元包括: 空间判断子单元,用于判断所述内存中是否存在所述第二目标关键值及其对应的流程定义对象的存储空间,如果是,触发对象存储子单元,否则,触发对象删除子单元; 对象存储子单元,用于将所述第二目标关键值及其对应的流程定义对象存储至所述内存中; 对象删除子单元,用于删除所述内存中被访问率值最小的目标流程定义对象及其关键值,触发所述对象存储子单元。
10.根据权利要求6或7所述的装置,其特征在于,还包括: 更新对象获取单元,用于获取待更新流程定义对象及其关键值; 数据库写入单元,用于将所述待更新流程定义对象及其关键值写入至所述数据库中;内存存储判定单元,用于判断所述内存中是否含有与所述待更新流程定义对象的标识信息相对应的目标流程定义对象,如果是,触发对象更新单元,否则,触发第二内存更新单元; 对象更新单元,用于将所述待更新流程定义对象代替所述目标流程定义对象; 第二内存更新单元,用于依据所述待更新流程定义对象及其关键值,按照预设的内存更新规则更新所述内存。
【文档编号】G06F17/30GK103530111SQ201310363524
【公开日】2014年1月22日 申请日期:2013年8月20日 优先权日:2013年8月20日
【发明者】郑乃惠, 李治, 刘民, 温尚卓, 高隆林, 何忠胜, 车帅 申请人:山东中创软件工程股份有限公司, 山东中创软件商用中间件股份有限公司