CN109101191A - 数据存储方法、装置和存储介质以及电子设备 - Google Patents
数据存储方法、装置和存储介质以及电子设备 Download PDFInfo
- Publication number
- CN109101191A CN109101191A CN201810644392.3A CN201810644392A CN109101191A CN 109101191 A CN109101191 A CN 109101191A CN 201810644392 A CN201810644392 A CN 201810644392A CN 109101191 A CN109101191 A CN 109101191A
- Authority
- CN
- China
- Prior art keywords
- storage region
- template
- storage
- flow
- work item
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据存储方法、装置和存储介质以及电子设备,该方法包括:获取当前流程实例生成的目标节点实例;确定所述当前流程实例对应的流程模板,并获取所述流程模板对应的模板存储区域;从所述模板存储区域中确定存储所述当前流程实例的当前实例存储区域,并从所述当前实例存储区域中确定存储所述目标节点实例的节点存储区域;将所述目标节点实例存储至对应的所述节点存储区域。
Description
技术领域
本公开涉及计算机处理技术领域,具体地,涉及一种数据存储方法、装置和存储介质以及电子设备。
背景技术
流程引擎对象包括了流程模板、流程实例、节点实例以及工作项等数据,考虑到目前采用关系型数据库(如Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等)的存储结构对上述流程引擎对象进行存储,但是,由于关系型数据库通常存放在磁盘中,由磁盘的特性可知:在磁盘随机读写时,磁盘的磁针需要频繁的转动,这样,磁针移动至目标磁道上可能耗费时间,并降低了硬盘的随机读写速度,可见,硬盘的连续读写性能较好,但随机读写性能较差。
对于流程引擎而言,关系型数据库中的流程引擎对象并非是连续存储的,目前通常将磁盘划分为几个独立的存储区域(如包括模板存储区域、实例存储区域、节点存储区域以及工作项存储区域等),基于此,在根据流程模板生成流程实例后,可以将流程模板存储至模板存储区域中,将流程实例存储至实例存储区域中,并在流程实例启动后,将节点实例存储至节点存储区域,将工作项存储至工作项存储区域,这样,在存储上述流程引擎对象时磁针需要来回跳跃至对应的存储区域,从而降低了存储效率。
发明内容
为了解决上述问题,本公开提出了一种数据存储方法、装置和存储介质以及电子设备。
根据本公开实施例的第一方面,提供一种数据存储方法,包括:
获取当前流程实例生成的目标节点实例;
确定所述当前流程实例对应的流程模板,并获取所述流程模板对应的模板存储区域;
从所述模板存储区域中确定存储所述当前流程实例的当前实例存储区域,并从所述当前实例存储区域中确定存储所述目标节点实例的节点存储区域;
将所述目标节点实例存储至对应的所述节点存储区域。
可选地,在所述获取当前流程实例生成的目标节点实例前,还包括:
创建所述流程模板对应的所述模板存储区域;所述模板存储区域中存储有模板头信息,所述模板头信息包括模板信息、根据所述流程模板创建的全部历史流程实例在所述模板存储区域中对应的第一存储位置以及每一所述历史流程实例的实例索引信息;所述实例索引信息包括每一所述历史流程实例的实例存储区域在所述模板存储区域中对应的第二存储位置;
将所述模板存储区域划分为多个连续分布的实例存储区域;所述实例存储区域按照所述实例存储区域的地址顺序依次存储有全部所述历史流程实例;
根据所述流程模板中流程节点的节点数量将每一所述实例存储区域划分为多个连续分布的节点存储区域。
可选地,在所述获取所述当前流程实例生成的节点实例后,还包括:
获取所述当前流程实例生成的工作项;
获取所述工作项的执行状态;
根据所述执行状态将所述工作项存储至工作项存储区域。
可选地,所述执行状态包括运行态、完成态以及废弃态;所述工作项存储区域包括运行态存储子区域、完成态存储子区域以及废弃态存储子区域;所述根据所述执行状态将所述工作项存储至工作项存储区域包括:
在所述执行状态为运行态时,将运行态的工作项存储至所述运行态存储子区域;
在所述执行状态为完成态时,将完成态的工作项存储至所述完成态存储子区域;
在所述执行状态为废弃态时,将废弃态的工作项存储至所述废弃态存储子区域。
可选地,所述从所述模板存储区域中确定存储所述当前流程实例的当前实例存储区域包括:
获取所述模板存储区域中存储的所述模板头信息;
根据所述模板头信息中的第一存储位置从所述模板存储区域中确定所述当前流程实例对应的当前实例存储区域。
可选地,所述根据所述模板头信息中的第一存储位置从所述模板存储区域中确定所述当前流程实例对应的当前实例存储区域包括:
从所述模板存储区域中获取与所述第一存储位置相邻的空白存储位置;
确定所述空白存储位置为所述当前实例存储区域。
可选地,在所述根据所述执行状态将所述工作项存储至工作项存储区域后,还包括:
获取处于运行态的新工作项;
从所述运行态存储区域中获取空白区域;所述空白区域为运行态的工作项被移除后在所述运行态存储区域中对应的区域;
将所述新工作项按照所述空白区域的地址顺序进行存储。
可选地,在所述根据所述执行状态将所述工作项存储至工作项存储区域后,还包括:
从运行态的工作项中获取目标工作项;
获取所述目标工作项对应的工作项信息;所述工作项信息包括所述目标工作项对应的流程模板标识和流程实例标识;
根据所述流程模板标识确定目标模板存储区域,并从所述目标模板存储区域中获取所述目标工作项对应的目标流程模板;
根据所述流程实例标识以及所述目标模板存储区域存储的目标模板头信息中包括的目标实例索引信息获取目标流程实例;
根据所述目标流程模板和所述目标流程实例执行所述目标工作项对应的流程引擎操作。
根据本公开实施例的第二方面,提供一种数据存储装置,包括:
第一获取模块,用于获取当前流程实例生成的目标节点实例;
第一确定模块,用于确定所述当前流程实例对应的流程模板;
第二获取模块,用于获取所述流程模板对应的模板存储区域;
第二确定模块,用于从所述模板存储区域中确定存储所述当前流程实例的当前实例存储区域,并从所述当前实例存储区域中确定存储所述目标节点实例的节点存储区域;
第一存储模块,用于将所述目标节点实例存储至对应的所述节点存储区域。
可选地,还包括:
创建模块,用于创建所述流程模板对应的所述模板存储区域;所述模板存储区域中存储有模板头信息,所述模板头信息包括模板信息、根据所述流程模板创建的全部历史流程实例在所述模板存储区域中对应的第一存储位置以及每一所述历史流程实例的实例索引信息;所述实例索引信息包括每一所述历史流程实例的实例存储区域在所述模板存储区域中对应的第二存储位置;
第一划分模块,用于将所述模板存储区域划分为多个连续分布的实例存储区域;所述实例存储区域按照所述实例存储区域的地址顺序依次存储有全部所述历史流程实例;
第二划分模块,用于根据所述流程模板中流程节点的节点数量将每一所述实例存储区域划分为多个连续分布的节点存储区域。
可选地,还包括:
第三获取模块,用于获取所述当前流程实例生成的工作项;
第四获取模块,用于获取所述工作项的执行状态;
第二存储模块,用于根据所述执行状态将所述工作项存储至工作项存储区域。
可选地,所述执行状态包括运行态、完成态以及废弃态;所述工作项存储区域包括运行态存储子区域、完成态存储子区域以及废弃态存储子区域;所述第二存储模块包括:
第一存储子模块,用于在所述执行状态为运行态时,将运行态的工作项存储至所述运行态存储子区域;
第二存储子模块,用于在所述执行状态为完成态时,将完成态的工作项存储至所述完成态存储子区域;
第三存储子模块,用于在所述执行状态为废弃态时,将废弃态的工作项存储至所述废弃态存储子区域。
可选地,所述第二确定模块包括:
获取子模块,用于获取所述模板存储区域中存储的所述模板头信息;
确定子模块,用于根据所述模板头信息中的第一存储位置从所述模板存储区域中确定所述当前流程实例对应的当前实例存储区域。
可选地,所述确定子模块,用于从所述模板存储区域中获取与所述第一存储位置相邻的空白存储位置;并确定所述空白存储位置为所述当前实例存储区域。
可选地,还包括:
第五获取模块,用于获取处于运行态的新工作项;
第六获取模块,用于从所述运行态存储区域中获取空白区域;所述空白区域为运行态的工作项被移除后在所述运行态存储区域中对应的区域;
第三存储模块,用于将所述新工作项按照所述空白区域的地址顺序进行存储。
可选地,还包括:
第七获取模块,用于从运行态的工作项中获取目标工作项;
第八获取模块,用于获取所述目标工作项对应的工作项信息;所述工作项信息包括所述目标工作项对应的流程模板标识和流程实例标识;
处理模块,用于根据所述流程模板标识确定目标模板存储区域,并从所述目标模板存储区域中获取所述目标工作项对应的目标流程模板;
第九获取模块,用于根据所述流程实例标识以及所述目标模板存储区域存储的目标模板头信息中包括的目标实例索引信息获取目标流程实例;
执行模块,用于根据所述目标流程模板和所述目标流程实例执行所述目标工作项对应的流程引擎操作。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述所述方法的步骤。
通过上述技术方案,获取当前流程实例生成的目标节点实例,确定所述当前流程实例对应的流程模板,并获取所述流程模板对应的模板存储区域,从所述模板存储区域中确定存储所述当前流程实例的当前实例存储区域,并从所述当前实例存储区域中确定存储所述目标节点实例的节点存储区域,将所述目标节点实例存储至对应的所述节点存储区域,这样,可以将该流程模板、流程实例以及节点实例均存储在该模板存储区域中,使得流程引擎在存储流程引擎对象时可以对磁盘进行连续存储,避免了现有技术中磁针需要在不同存储区域中跳跃,从而提高了存储效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开示例性实施例示出的一种数据存储方法的流程示意图;
图2是根据本公开示例性实施例示出的另一种数据存储方法的流程示意图;
图3是根据本公开示例性实施例示出的第一种数据存储装置的框图;
图4是根据本公开示例性实施例示出的第二种数据存储装置的框图;
图5是根据本公开示例性实施例示出的第三种数据存储装置的框图;
图6是根据本公开示例性实施例示出的第四种数据存储装置的框图;
图7是根据本公开示例性实施例示出的第五种数据存储装置的框图;
图8是根据本公开示例性实施例示出的第六种数据存储装置的框图;
图9是根据本公开示例性实施例示出的第七种数据存储装置的框图;
图10是根据本公开示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
本公开提出了一种数据存储方法、装置和存储介质以及电子设备,可以在模板存储区域中获取当前流程实例对应的当前实例存储区域,并在该当前实例存储区域中确定目标节点实例对应的节点存储区域,这样,可以将该流程模板、流程实例以及节点实例均存储在该模板存储区域中,使得流程引擎在存储流程引擎对象时可以对磁盘进行连续存储,避免了现有技术中磁针需要在不同存储区域中跳跃,从而提高了存储效率。
下面结合具体的实施例对本公开进行详细说明。
图1是根据本公开示例性实施例示出的一种数据存储方法的流程示意图,如图1所示,包括:
S101、获取当前流程实例生成的目标节点实例。
在本步骤中,可以接收用户对该当前流程实例的启动操作,并根据该启动操作获取该当前流程实例生成的目标节点实例。
S102、确定该当前流程实例对应的流程模板,并获取该流程模板对应的模板存储区域。
在本公开中,每一流程模板存在对应的模板存储文件,该模板存储文件在磁盘中对应的存储区域即为该模板存储区域,另外,该模板存储区域中存储有模板头信息,该模板头信息包括模板信息、根据该流程模板创建的全部历史流程实例的第一存储位置以及每一该历史流程实例的实例索引信息,该实例索引信息包括每一该历史流程实例的实例存储区域在该模板存储区域中对应的第二存储位置,示例地,该模板信息可以包括该流程模板的标识信息、该流程模板的用途、该流程模板中需要的审批材料、该流程模板中设置的审批人以及使用期限等信息。
S103、从该模板存储区域中确定存储该当前流程实例的当前实例存储区域,并从该当前实例存储区域中确定存储该目标节点实例的节点存储区域。
其中,该模板存储区域可以划分为多个连续分布的实例存储区域,并且该实例存储区域可以按照该实例存储区域的地址顺序依次存储该流程模板生成的多个历史流程实例,因此,本步骤可以根据全部历史流程实例在该模板存储区域中对应的第一存储位置从该模板存储区域中确定该当前流程实例对应的当前实例存储区域。另外,该当前实例存储区域中存储有实例头信息,该实例头信息可以包括该当前流程实例的实例信息、该当前流程实例中的全部节点实例的节点存储位置,从而在后续可以根据该节点存储位置读取该全部节点实例,示例地,该实例信息可以包括该流程实例的标识信息、该流程实例的发起人以及流程运转条件等信息,上述示例只是举例说明,本公开对此不作限定。
S104、将该目标节点实例存储至对应的节点存储区域。
在一种可能的实现方式中,在确定该当前流程实例对应的当前实例存储区域后,可以根据该流程模板中流程节点的节点数量将该当前实例存储区域划分为多个连续分布的节点存储区域,这样,可以将目标节点实例存储至对应的节点存储区域。
采用上述方法,可以在模板存储区域中获取当前流程实例对应的当前实例存储区域,并在该当前实例存储区域中确定目标节点实例对应的节点存储区域,这样,可以将该流程模板、流程实例以及节点实例均存储在该模板存储区域中,使得流程引擎在存储流程引擎对象时可以对磁盘进行连续存储,避免了现有技术中磁针需要在不同存储区域中跳跃,从而提高了存储效率。
图2是根据本公开示例性实施例示出的一种数据存储方法的流程示意图,如图2所示,包括:
S201、创建流程模板对应的模板存储区域。
其中,该模板存储区域中存储有模板头信息,该模板头信息包括模板信息、根据该流程模板创建的全部历史流程实例在该模板存储区域中对应的第一存储位置以及每一该历史流程实例的实例索引信息,该实例索引信息包括每一该历史流程实例的实例存储区域在该模板存储区域中对应的第二存储位置,示例地,该模板信息可以包括该流程模板的标识信息、该流程模板的用途、该流程模板中需要的审批材料、该流程模板中设置的审批人以及使用期限等信息,该第一存储位置可以为全部历史流程实例的实例开始存储位置和全部历史流程实例的实例截止存储位置,如该实例开始存储位置为rowid1,该实例截止存储位置为rowid30,此时,若全部历史流程实例包括历史流程实例a1,历史流程实例a2以及历史流程实例a3,则历史流程实例a1对应的第二存储位置可以为rowid1-rowid10,历史流程实例a2对应的第二存储位置可以为rowid11-rowid20,历史流程实例a3对应的第二存储位置可以为rowid21-rowid30,上述示例只是举例说明,本公开对此不作限定。
由于对于每一个企业而言,流程模板的数量是有限的,因此,为了避免产生大量的数据碎片文件,本公开可以对每一流程模板设置对应的模板存储文件,该模板存储文件在磁盘中存在对应的模板存储区域,并且全部流程模板对应的模板存储区域在磁盘中可以为连续分布,这样,可以将每一流程模板对应的多个流程实例均存储至该每一流程模板对应的模板存储区域中,综上,通过连续分布的模板存储区域可以有效避免数据碎片化的问题。
S202、将该模板存储区域划分为多个连续分布的实例存储区域。
在本步骤中,该实例存储区域按照该实例存储区域的地址顺序依次存储有全部该历史流程实例,实例存储区域与历史流程实例存在一一对应关系,并且多个连续分布的实例存储区域可以具有相同存储容量,示例地,该实例存储区域的地址顺序可以是从低地址到高地址的顺序,或者从高地址到低地址的顺序,上述示例只是举例说明,本公开对此不作限定。
另外,该实例存储区域中存储有实例头信息,为了方便描述,以目标历史流程实例为例进行说明,该目标历史流程实例可以是全部历史流程实例中的任一流程实例,该实例头信息可以包括该目标历史流程实例的实例信息、该目标历史流程实例中的全部节点实例的节点存储位置,从而在后续可以根据该节点存储位置读取全部该节点实例,示例地,该实例信息可以包括该目标历史流程实例的标识信息、该目标历史流程实例的发起人以及流程运转条件等信息。
S203、根据该流程模板中流程节点的节点数量将每一该实例存储区域划分为多个连续分布的节点存储区域。
同理地,节点存储区域与节点实例存在一一对应关系,并且多个连续分布的节点存储区域可以具有相同存储容量,另外,可以根据流程模板中流程节点的节点顺序确定每一流程节点在该实例存储区域中对应的节点存储区域。
S204、获取当前流程实例生成的目标节点实例。
在本步骤中,可以根据流程模板生成该当前流程实例,并在生成该当前流程实例后,可以接收用户对该当前流程实例的启动操作,根据该启动操作获取该当前流程实例生成的目标节点实例,示例地,若该当前流程实例为用户发起的请假流程,则用户可以在请假页面中填写请假信息(如请假类型、请假事由、请假天数等信息),并执行启动操作,如点击“提交”按钮,这样,可以根据启动操作进行该当前流程实例的流转,若该请假流程存在三个流程节点,即组长审批、部门经理审批以及总经理审批,则当组长完成该请假流程的审批时,该目标节点实例即为“组成审批”对应的节点实例,上述示例只是举例说明,本公开对此不作限定。
S205、确定该当前流程实例对应的流程模板,并获取该流程模板对应的模板存储区域。
由于每一流程模板存在对应的模板存储文件,该模板存储文件在磁盘中对应的存储区域即为该模板存储区域。
S206、从该模板存储区域中确定存储该当前流程实例的当前实例存储区域。
在本步骤中,可以获取该模板存储区域中存储的该模板头信息,并根据该模板头信息中的第一存储位置从该模板存储区域中确定该当前流程实例对应的当前实例存储区域,在一种可能的实现方式中,可以从该模板存储区域中获取与该第一存储位置相邻的空白存储位置,并确定该空白存储位置为该当前实例存储区域,此外,在将该当前流程实例存储至当前实例存储区域后,可以根据空白存储位置更新该模板头信息。
示例地,继续以S201中的示例为例进行说明,若该第一存储位置包括rowid1-rowid30(即全部历史流程实例的该实例开始存储位置rowid1,该实例截止存储位置rowid30),历史流程实例a1对应的第二存储位置可以为rowid1-rowid10,历史流程实例a2对应的第二存储位置可以为rowid11-rowid20,历史流程实例a3对应的第二存储位置可以为rowid21-rowid30,若该模板存储区域中的多个实例存储区域具有相同存储容量,则与该第一存储位置相邻的空白存储位置可以为rowid31-rowid40,即可以确定rowid31-rowid40为当前实例存储区域,此时,可以根据该空白存储位置更新该模板头信息,如该第一存储位置中的实例截止存储位置更新为rowid40,且在实例索引信息中增加当前流程实例在该模板存储区域中对应的第二存储区域(即rowid31-rowid40),上述示例只是举例说明,本公开对此不作限定。
S207、从该当前实例存储区域中确定存储该目标节点实例的节点存储区域。
其中,该当前实例存储区域可以包括该当前流程实例中的节点实例分别对应的节点存储区域,由于可以根据流程模板中流程节点的节点顺序确定每一流程节点在该当前实例存储区域中对应的节点存储区域,在一种可能的实现方式中,可以对该流程节点设置节点标识,从而建立该节点标识与节点存储区域之间的关联关系,这样,本步骤可以首先确定该目标节点实例在该流程模板中对应的目标流程节点,并确定该目标流程节点对应的目标节点标识,从而根据关联关系确定该目标节点标识对应的节点存储区域,上述示例只是举例说明,本公开对此不作限定。
在本公开中,由于现有技术中在存储流程引擎对象时,通常根据流程引擎对象的存储容量大小分配存储区域,这样,在后续过程中若对该流程引擎对象进行修改,则可能使得修改后的流程引擎对象的存储容量变大,此时,需要将修改后的流程引擎对象存储至新存储区域,从而导致行迁移问题,本公开可以将模板存储区域、实例存储区域以及节点存储区域等都设置为预设大小存储容量。示例地,若目标节点实例对应的节点存储区域即为10kb,修改后的目标节点实例的存储容量为15kb,由于10kb的节点存储区域无法存储修改后的目标节点实例,此时,需要将修改后的目标节点实例存储至新存储区域,从而造成行迁移问题,为了解决该问题,可以预先设置每一节点存储区域为20kb,从而使得修改后的目标节点实例无需进行行迁移。
S208、将该目标节点实例存储至对应的节点存储区域。
本步骤在将目标节点实例存储至对应的节点存储区域后,可以根据该目标实例对应的节点存储区域更新该目标流程实例的实例头信息。
由于该模板存储区域中包括多个连续分布的实例存储区域,该实例存储区域包括多个连续分布的节点存储区域,这样,可以将该当前流程实例以及该当前流程实例包括的全部节点实例均连续存储在该当前实例存储区域中,这样,通过层层包含的方式存储,避免数据重复的问题。
S209、获取该当前流程实例生成的工作项。
由于每一节点实例包括至少一个工作项,这样,本步骤可以在该当前流程实例流转至目标节点实例后,获取该目标节点实例中的工作项。
S210、获取该工作项的执行状态。
其中,该执行状态可以包括运行态、完成态以及废弃态,该运行态表示工作项处于待处理状态,该完成态表示工作项处于处理完成状态,该废弃态表示工作项被驳回状态,上述示例只是举例说明,本公开对此不作限定。
S211、根据该执行状态将该工作项存储至工作项存储区域。
其中,该工作项存储区域包括运行态存储子区域、完成态存储子区域以及废弃态存储子区域,这样,在该执行状态为运行态时,将运行态的工作项存储至该运行态存储子区域;在该执行状态为完成态时,将完成态的工作项存储至该完成态存储子区域;在该执行状态为废弃态时,将废弃态的工作项存储至该废弃态存储子区域。
另外,在该当前流程实例生成运行态的新工作项时,可以获取处于运行态的新工作项,并从该运行态存储子区域中获取空白区域,该空白区域为运行态的工作项被移除后在该运行态存储子区域中对应的区域,将该新工作项按照该空白区域的地址顺序进行存储,这样,可以使得该运行态存储子区域中的空白区域减少,避免在该运行态存储区域中存在较多空白区域时由于读取空白区域中的无效信息而耗费时间,示例地,在运行态存储子区域中存在3个空白区域时,即空白区域1、空白区域2和空白区域3,且空白区域1对应的存储地址为rowid2,空白区域2对应的存储地址为rowid7,空白区域3对应的存储地址为rowid12,若空白区域的地址顺序为低地址到高地址的顺序,则可以将新工作项存储至空白区域1中,若空白区域的地址顺序为高地址到低地址的顺序,则可以将新工作项存储至空白区域3中,上述示例只是举例说明,本公开对此不作限定。
需要说明的是,对于上述数据存储方法的实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行,例如,步骤S209-S211也可以在步骤S204之后执行;其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在本公开中,在运行态的工作项的总数量小于或者等于预设阈值时,由于将工作项按照执行状态进行存储,在查找运行态的目标工作项时,可以直接在运行态存储子区域中查找,避免在磁盘中的全部工作项中依次查找目标工作项,从而加快了查找速度,这样,相比较于相关技术中通过索引方式获取目标工作项,通过读取运行态的全部工作项的读取效率更高,另外,在运行态存储子区域、完成态存储子区域以及废弃态存储子区域中均存储有对应的工作项头信息,例如,对于运行态存储子区域,对应的工作项头信息中存储有运行态存储子区域中存储的运行态的全部工作项的第三存储位置,由此可见,在读取运行态中的目标工作项时,可以根据该第三存储位置读取运行态存储子区域中的运行态的全部工作项,完成态存储子区域和废弃态存储子区域设置的工作项头信息可以参考运行态存储子区域,不再赘述;在运行态的工作项的总数量大于该预设阈值时,可以在磁盘中存储有索引文件,该索引文件的索引模式可以为Hashmap,该索引文件包括每一流程实例包含的全部工作项对应的工作项存储位置和模板存储位置、实例存储位置以及节点存储位置,这样,可以根据索引文件查找到目标工作项,以及查找到该目标工作项对应的流程模板、流程实例以及节点实例,上述生成索引文件的方法可以参考现有技术。
此外,基于上述方式存储流程引擎对象,可以通过以下方式根据存储的流程引擎对象进行流程引擎操作:从运行态的工作项中获取目标工作项,其中,由于每一个工作项都存在工作项标识,这样,可以通过工作项标识依次识别运行态的工作项,从而实现从运行态的工作项中查找到该目标工作项;并获取该目标工作项对应的工作项信息,该工作项信息包括该目标工作项对应的流程模板标识和流程实例标识,根据该流程模板标识确定目标模板存储区域,并从该目标模板存储区域中获取该目标工作项对应的目标流程模板;根据该流程实例标识以及该目标模板存储区域存储的目标模板头信息中包括的目标实例索引信息获取目标流程实例,根据该目标流程模板和该目标流程实例执行该目标工作项对应的流程引擎操作,这样,可以快速从目标模板存储区域中获取到该目标工作项对应的目标流程模板和模板流程实例。
采用上述方法,可以在模板存储区域中获取当前流程实例对应的当前实例存储区域,并在该当前实例存储区域中确定目标节点实例对应的节点存储区域,这样,可以将该流程模板、流程实例以及节点实例均存储在该模板存储区域中,使得流程引擎在存储流程引擎对象时可以对磁盘进行连续存储,避免了现有技术中磁针需要在不同存储区域中跳跃,从而提高了存储效率。
图3是根据本公开示例性实施例示出的一种数据存储装置的框图,如图3所示,包括:
第一获取模块301,用于获取当前流程实例生成的目标节点实例;
第一确定模块302,用于确定该当前流程实例对应的流程模板;
第二获取模块303,用于获取该流程模板对应的模板存储区域;
第二确定模块304,用于从该模板存储区域中确定存储该当前流程实例的当前实例存储区域,并从该当前实例存储区域中确定存储该目标节点实例的节点存储区域;
第一存储模块305,用于将该目标节点实例存储至对应的该节点存储区域。
图4是根据本公开示例性实施例示出的一种数据存储装置的框图,如图4所示,还包括:
创建模块306,用于创建该流程模板对应的该模板存储区域;该模板存储区域中存储有模板头信息,该模板头信息包括模板信息、根据该流程模板创建的全部历史流程实例在该模板存储区域中对应的第一存储位置以及每一该历史流程实例的实例索引信息;该实例索引信息包括每一该历史流程实例的实例存储区域在该模板存储区域中对应的第二存储位置;
第一划分模块307,用于将该模板存储区域划分为多个连续分布的实例存储区域;该实例存储区域按照该实例存储区域的地址顺序依次存储有全部该历史流程实例;
第二划分模块308,用于根据该流程模板中流程节点的节点数量将每一该实例存储区域划分为多个连续分布的节点存储区域。
图5是根据本公开示例性实施例示出的一种数据存储装置的框图,如图5所示,还包括:
第三获取模块309,用于获取该当前流程实例生成的工作项;
第四获取模块310,用于获取该工作项的执行状态;
第二存储模块311,用于根据该执行状态将该工作项存储至工作项存储区域。
图6是根据本公开示例性实施例示出的一种数据存储装置的框图,如图6所示,该执行状态包括运行态、完成态以及废弃态;该工作项存储区域包括运行态存储子区域、完成态存储子区域以及废弃态存储子区域;该第二存储模块311包括:
第一存储子模块3111,用于在该执行状态为运行态时,将运行态的工作项存储至该运行态存储子区域;
第二存储子模块3112,用于在该执行状态为完成态时,将完成态的工作项存储至该完成态存储子区域;
第三存储子模块3113,用于在该执行状态为废弃态时,将废弃态的工作项存储至该废弃态存储子区域。
图7是根据本公开示例性实施例示出的一种数据存储装置的框图,如图7所示,该第二确定模块304包括:
获取子模块3041,用于获取该模板存储区域中存储的该模板头信息;
确定子模块3042,用于根据该模板头信息中的第一存储位置从该模板存储区域中确定该当前流程实例对应的当前实例存储区域。
可选地,该确定子模块3042,用于从该模板存储区域中获取与该第一存储位置相邻的空白存储位置;并确定该空白存储位置为该当前实例存储区域。
图8是根据本公开示例性实施例示出的一种数据存储装置的框图,如图8所示,还包括:
第五获取模块312,用于获取处于运行态的新工作项;
第六获取模块313,用于从该运行态存储区域中获取空白区域;该空白区域为运行态的工作项被移除后在该运行态存储区域中对应的区域;
第三存储模块314,用于将该新工作项按照该空白区域的地址顺序进行存储。
图9是根据本公开示例性实施例示出的一种数据存储装置的框图,如图9所示,还包括:
第七获取模块315,用于从运行态的工作项中获取目标工作项;
第八获取模块316,用于获取该目标工作项对应的工作项信息;该工作项信息包括该目标工作项对应的流程模板标识和流程实例标识;
处理模块317,用于根据该流程模板标识确定目标模板存储区域,并从该目标模板存储区域中获取该目标工作项对应的目标流程模板;
第九获取模块318,用于根据该流程实例标识以及该目标模板存储区域存储的目标模板头信息中包括的目标实例索引信息获取目标流程实例;
执行模块319,用于根据该目标流程模板和该目标流程实例执行该目标工作项对应的流程引擎操作。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
采用上述装置,可以在模板存储区域中获取当前流程实例对应的当前实例存储区域,并在该当前实例存储区域中确定目标节点实例对应的节点存储区域,这样,可以将该流程模板、流程实例以及节点实例均存储在该模板存储区域中,使得流程引擎在存储流程引擎对象时可以对磁盘进行连续存储,避免了现有技术中磁针需要在不同存储区域中跳跃,从而提高了存储效率。
图10是根据本公开示例性实施例示出的一种电子设备1000的框图。如图10所示,该电子设备1000可以包括:处理器1001,存储器1002。该电子设备1000还可以包括多媒体组件1003,输入/输出(I/O)接口1004,以及通信组件1005中的一者或多者。
其中,处理器1001用于控制该电子设备1000的整体操作,以完成上述的数据存储方法中的全部或部分步骤。存储器1002用于存储各种类型的数据以支持在该电子设备1000的操作,这些数据例如可以包括用于在该电子设备1000上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器1002可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件1003可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1002或通过通信组件1005发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口1004为处理器1001和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1005用于该电子设备1000与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件1005可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备1000可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据存储方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据存储方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1002,上述程序指令可由电子设备1000的处理器1001执行以完成上述的数据存储方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
获取当前流程实例生成的目标节点实例;
确定所述当前流程实例对应的流程模板,并获取所述流程模板对应的模板存储区域;
从所述模板存储区域中确定存储所述当前流程实例的当前实例存储区域,并从所述当前实例存储区域中确定存储所述目标节点实例的节点存储区域;
将所述目标节点实例存储至对应的所述节点存储区域。
2.根据权利要求1所述的方法,其特征在于,在所述获取当前流程实例生成的目标节点实例前,还包括:
创建所述流程模板对应的所述模板存储区域;所述模板存储区域中存储有模板头信息,所述模板头信息包括模板信息、根据所述流程模板创建的全部历史流程实例在所述模板存储区域中对应的第一存储位置以及每一所述历史流程实例的实例索引信息;所述实例索引信息包括每一所述历史流程实例的实例存储区域在所述模板存储区域中对应的第二存储位置;
将所述模板存储区域划分为多个连续分布的实例存储区域;所述实例存储区域按照所述实例存储区域的地址顺序依次存储有全部所述历史流程实例;
根据所述流程模板中流程节点的节点数量将每一所述实例存储区域划分为多个连续分布的节点存储区域。
3.根据权利要求1或2所述的方法,其特征在于,在所述获取所述当前流程实例生成的节点实例后,还包括:
获取所述当前流程实例生成的工作项;
获取所述工作项的执行状态;
根据所述执行状态将所述工作项存储至工作项存储区域。
4.根据权利要求3所述的方法,其特征在于,所述执行状态包括运行态、完成态以及废弃态;所述工作项存储区域包括运行态存储子区域、完成态存储子区域以及废弃态存储子区域;所述根据所述执行状态将所述工作项存储至工作项存储区域包括:
在所述执行状态为运行态时,将运行态的工作项存储至所述运行态存储子区域;
在所述执行状态为完成态时,将完成态的工作项存储至所述完成态存储子区域;
在所述执行状态为废弃态时,将废弃态的工作项存储至所述废弃态存储子区域。
5.根据权利要求2所述的方法,其特征在于,所述从所述模板存储区域中确定存储所述当前流程实例的当前实例存储区域包括:
获取所述模板存储区域中存储的所述模板头信息;
根据所述模板头信息中的第一存储位置从所述模板存储区域中确定所述当前流程实例对应的当前实例存储区域。
6.根据权利要求5所述的方法,其特征在于,所述根据所述模板头信息中的第一存储位置从所述模板存储区域中确定所述当前流程实例对应的当前实例存储区域包括:
从所述模板存储区域中获取与所述第一存储位置相邻的空白存储位置;
确定所述空白存储位置为所述当前实例存储区域。
7.根据权利要求4所述的方法,其特征在于,在所述根据所述执行状态将所述工作项存储至工作项存储区域后,还包括:
获取处于运行态的新工作项;
从所述运行态存储区域中获取空白区域;所述空白区域为运行态的工作项被移除后在所述运行态存储区域中对应的区域;
将所述新工作项按照所述空白区域的地址顺序进行存储。
8.一种数据存储装置,其特征在于,包括:
第一获取模块,用于获取当前流程实例生成的目标节点实例;
第一确定模块,用于确定所述当前流程实例对应的流程模板;
第二获取模块,用于获取所述流程模板对应的模板存储区域;
第二确定模块,用于从所述模板存储区域中确定存储所述当前流程实例的当前实例存储区域,并从所述当前实例存储区域中确定存储所述目标节点实例的节点存储区域;
第一存储模块,用于将所述目标节点实例存储至对应的所述节点存储区域。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810644392.3A CN109101191B (zh) | 2018-06-21 | 2018-06-21 | 数据存储方法、装置和存储介质以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810644392.3A CN109101191B (zh) | 2018-06-21 | 2018-06-21 | 数据存储方法、装置和存储介质以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109101191A true CN109101191A (zh) | 2018-12-28 |
CN109101191B CN109101191B (zh) | 2021-07-16 |
Family
ID=64845014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810644392.3A Active CN109101191B (zh) | 2018-06-21 | 2018-06-21 | 数据存储方法、装置和存储介质以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109101191B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109977036A (zh) * | 2019-02-19 | 2019-07-05 | 东软集团股份有限公司 | 缓存流程模板的方法、装置、存储介质及电子设备 |
CN111144837A (zh) * | 2019-12-13 | 2020-05-12 | 东软集团股份有限公司 | 流程编排的方法、装置、存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314383A (zh) * | 2011-09-28 | 2012-01-11 | 成都市华为赛门铁克科技有限公司 | 数据索引的故障恢复方法和装置 |
CN102932416A (zh) * | 2012-09-26 | 2013-02-13 | 东软集团股份有限公司 | 一种信息流任务的中间数据存储方法、处理方法及装置 |
US20140344817A1 (en) * | 2013-05-17 | 2014-11-20 | Hewlett-Packard Development Company, L.P. | Converting a hybrid flow |
CN105589812A (zh) * | 2015-12-16 | 2016-05-18 | 成都华为技术有限公司 | 磁盘碎片整理方法、装置及主机 |
CN105955820A (zh) * | 2016-04-20 | 2016-09-21 | 北京云宏信达信息科技有限公司 | 作业流控制方法、装置和系统 |
CN106952024A (zh) * | 2017-03-01 | 2017-07-14 | 千寻位置网络有限公司 | 一种适用于地基增强网运维场景的工作流引擎方法及系统 |
-
2018
- 2018-06-21 CN CN201810644392.3A patent/CN109101191B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314383A (zh) * | 2011-09-28 | 2012-01-11 | 成都市华为赛门铁克科技有限公司 | 数据索引的故障恢复方法和装置 |
CN102932416A (zh) * | 2012-09-26 | 2013-02-13 | 东软集团股份有限公司 | 一种信息流任务的中间数据存储方法、处理方法及装置 |
US20140344817A1 (en) * | 2013-05-17 | 2014-11-20 | Hewlett-Packard Development Company, L.P. | Converting a hybrid flow |
CN105589812A (zh) * | 2015-12-16 | 2016-05-18 | 成都华为技术有限公司 | 磁盘碎片整理方法、装置及主机 |
CN105955820A (zh) * | 2016-04-20 | 2016-09-21 | 北京云宏信达信息科技有限公司 | 作业流控制方法、装置和系统 |
CN106952024A (zh) * | 2017-03-01 | 2017-07-14 | 千寻位置网络有限公司 | 一种适用于地基增强网运维场景的工作流引擎方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109977036A (zh) * | 2019-02-19 | 2019-07-05 | 东软集团股份有限公司 | 缓存流程模板的方法、装置、存储介质及电子设备 |
CN111144837A (zh) * | 2019-12-13 | 2020-05-12 | 东软集团股份有限公司 | 流程编排的方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109101191B (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108089893B (zh) | 冗余资源的确定方法、装置、终端设备与存储介质 | |
CN108460041B (zh) | 数据的处理方法和装置 | |
CN110471750B (zh) | 定时任务控制方法、装置、介质和计算机设备 | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
CN105608142A (zh) | 一种Json数据的存储方法及装置 | |
CN107451831A (zh) | 任务推送方法 | |
CN109240607B (zh) | 一种文件读取方法和装置 | |
CN111565112B (zh) | 创建群组的方法、装置、电子设备及可读存储介质 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
WO2016197814A1 (zh) | 垃圾文件识别及管理方法、识别装置、管理装置和终端 | |
CN106156070A (zh) | 一种查询方法、文件合并方法与相关装置 | |
CN109101191A (zh) | 数据存储方法、装置和存储介质以及电子设备 | |
CN109032533A (zh) | 一种数据存储方法、装置和设备 | |
CN103294799B (zh) | 一种数据并行批量导入只读查询系统的方法及系统 | |
CN111914020A (zh) | 数据同步方法及装置、数据查询方法及装置 | |
CN107896194B (zh) | 一种路由查找方法、装置和存储介质 | |
CN114253920A (zh) | 一种交易重新排序方法、装置、设备及可读存储介质 | |
CN110659295B (zh) | 一种基于hawq记录有效数据的方法、装置和介质 | |
CN108255486B (zh) | 用于表单设计的视图转换方法、装置和电子设备 | |
CN114564208B (zh) | 安卓应用程序的反编译方法、电子设备和介质 | |
CN107450859B (zh) | 一种读取文件数据的方法和装置 | |
WO2020018223A1 (en) | Binding query scope to directory attributes | |
CN115563116A (zh) | 一种数据库表扫描方法、装置以及设备 | |
CN109697234A (zh) | 实体的多属性信息存储、查询方法、装置、服务器和介质 | |
CN115270731A (zh) | 混合文档的协同编辑方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |