工作流表的数据保存方法、查询方法及装置的制作方法

文档序号:6426370阅读:246来源:国知局
专利名称:工作流表的数据保存方法、查询方法及装置的制作方法
技术领域
本申请涉及数据库技术领域,特别是涉及一种工作流表的数据保存方法、查询方法及装置。
背景技术
工作流是业务过程的部分或整体在计算机应用环境下的自动化实现,其可以使多个参与者之间按照预定义的规则自动传递文档、信息或任务,从而实现某个预期的业务目标。参见图1,为一种工作流的流程结构示意图,假设按照公司规定,员工出差申请借款的金额小于等于5000元,则需要主管审批,主管审批后由财务审批,最后将款项通过银 行打款到员工的工资卡中;如果员工借款的金额大于5000元,则需要主管审批,主管审批后需要经理再次审批,经理审批后由财务审批,最后将款项通过银行打款到员工的工资卡中。其中,如果主管、经理或财务中任一方不同意,则需要发邮件告知员工。在采用现有技术实现上述工作流设计时,需要采用JBPM3数据库中的三种类型的通用数据库表,包括流程配置类数据库表(共13张),流程运行类数据库表(共11张),角色权限数据库表(共8张)。另外,针对上述审批流程,需要存储申请人的IoginId(注册ID)、申请人角色、申请人组织名称、申请人组织路径等业务信息,针对每个审批任务,需要记录处理人的IoginID、计划处理人角色、计划处理人组织、计划处理人组织路径、预约时间、截止日期、接手时间、实际处理人相关信息等。为了记录上述信息,需要为审批流程再单独建立三张业务相关数据库表。基于上述的数据库表设计,在运行相应的工作流时,至少需要关联4张数据库表,并且在工作流运行结束后,流程运行类数据库表的11张表中都会新增表项数据。现有技术在实现工作流过程中,由于数据库中的数据表数量较多,因此在进行流程节点查询时,需要关联多张数据表,导致关联查询速度较慢;并且由于数据表数量较多,因此在工作流完成时,需要在数据表中增加的表项数量较多,从而降低了工作流性能。

发明内容
本申请实施例提供了一种工作流表的数据保存方法、查询方法及装置,以解决现有工作流流程中涉及数据表数量较多,导致查询性能不高的问题。为解决上述技术问题,本申请实施例提供一种工作流表的数据保存方法,是这样实现的一种工作流表的数据保存方法,预先设置工作流表,所述工作流表包括流程定义表、流程实例表和活动实例表,所述方法包括根据流程名称查找所述流程定义表,获取与所述流程名称对应的流程定义数据;解析所述流程定义数据,根据解析得到的流程描述数据启动流程实例;从所述流程实例的起始节点开始,按照所述流程描述数据运行所述流程实例;
其中,在运行所述流程实例的过程中,将在流程节点上生成的活动数据作为数据记录保存到所述活动实例表中;以及,将运行所述流程实例过程的描述信息作为一条数据记录保存到所述流程实例表中,所述流程实例表与所述活动实例表具有相同的流程ID。为解决上述技术问题,本申请实施例还提供ー种工作流表的数据查询方法,是这样实现的ー种工作流表的数据查询方法,用于对前述数据保存方法所保存的数据进行查询,包括获取查询条件,所述查询条件中包括流程ID和字段满足条件;根据所述流程ID关联流程实例表和活动实例表,获得所述活动实例表中具有所述流程ID的数据记录; 根据所述字段满足条件筛选所述数据记录,将筛选出的数据记录作为查询结果记求。为解决上述技术问题,本申请实施例提供ー种工作流表的数据保存装置,是这样实现的ー种工作流表的数据保存装置,包括预设单元,用于预先设置工作流表,所述工作流表包括流程定义表、流程实例表和活动实例表;查找单元,用于根据流程名称查找所述流程定义表,获取与所述流程名称对应的流程定义数据;解析単元,用于解析所述流程定义数据,根据解析得到的流程描述数据启动流程实例;执行单元,用于从所述流程实例的起始节点开始,按照所述流程描述数据运行所述流程实例;保存単元,用于在所述执行单元运行所述流程实例的过程中,将在流程节点上生成的活动数据作为数据记录保存到所述活动实例表中;以及,将运行所述流程实例过程的描述信息作为一条数据记录保存到所述流程实例表中,所述流程实例表与所述活动实例表具有相同的流程ID。为解决上述技术问题,本申请实施例还提供ー种工作流表的数据查询方法,是这样实现的—种工作流表的数据查询装置,用于对前述数据保存装置所保存的数据进行查询,包括获取单元,用于获取查询条件,所述查询条件中包括流程ID和字段满足条件;关联单元,用于根据所述流程ID关联流程实例表和活动实例表,获得所述活动实例表中具有所述流程ID的数据记录;筛选单元,用于根据所述字段满足条件筛选所述数据记录,将筛选出的数据记录作为查询结果记录。由上述实施例可以看出,本申请实施例中预先设置流程定义表、流程实例表和活动实例表,根据流程名称查找流程定义表,获取与流程名称对应的流程定义数据,解析流程定义数据,根据解析得到的流程描述数据启动流程实例,从流程实例的起始节点开始,按照流程描述数据运行所述流程实例,在运行流程实例的过程中,将在流程节点上生成的活动数据作为数据记录保存到所述活动实例表中,以及将运行流程实例过程的描述信息作为一条数据记录保存到流程实例表中,流程实例表与活动实例表具有相同的流程ID。本申请实施例在执行工作流过程中,仅需涉及四张数据表,相应的工作流执行的结果数据只需要保存到流程实例表和活动实例表中,因此数据记录保存方便,提高了工作流的运行性能;在后续基于流程实例表和活动实例表进行数据查询时,也仅需要关联两张数据表,因此关联查询速度较快,相应提高了系统性能。


为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I为一种工作流的流程结构示意图; 图2为本申请工作流表的数据保存方法的第一实施例流程图;图3为本申请工作流表的数据保存方法的第二实施例流程图;图4为本申请工作流表的数据保存方法的实施例流程图;图5为本申请工作流表的数据保存装置的第一实施例框图;图6为本申请工作流表的数据保存装置的第二实施例框图;图7为本申请工作流表的数据查询装置的实施例框图。
具体实施例方式本申请如下实施例提供了一种工作流表的数据保存方法、查询方法及装置。下面首先结合图I描述一下本申请工作流表的数据保存实施例中涉及的术语假设按照公司规定,员工出差申请借款的金额小于等于5000元,则需要主管审批,主管审批后由财务审批,最后将款项通过银行打款到员工的工资卡中;如果员工借款的金额大于5000元,则需要主管审批,主管审批后需要经理再次审批,经理审批后由财务审批,最后将款项通过银行打款到员工的工资卡中。其中,如果主管、经理或财务中任一方不同意,则需要发邮件告知员工。根据上述公司内部出差借款的流程对应示出图I中员工出差借款的工作流描述。图I中,每一个业务活动定义为一个“节点”。例如,“财务审批”就是一个节点,该节点的完成需要人的参与,定义为任务节点;“银行打款”也是一个节点,该节点的完成不需要人的参与,定义为自动节点;“判断借款金额”也是一个节点,经过该节点后流程需要进行判断并根据判断结果进行分支,定义为判断节点。图I中,用于连接节点的有向箭头线定义为“有向连接”,表示工作流从一个状态通过某种方式进入另一个状态。例如,在“财务审批”节点和“经理审批”节点之间存在一个名为“同意”的有向连接。图I中,用于描述某一个业务流程的符号表示定义为“流程定义”,其是由节点和有向连接组成的静态文件。
图I中,某一次具体业务请求经过的节点实例定义为“活动实例”。例如,小王计划2010年10月15日去北京出差,申请借款7000元。小王于2010年10月14上午9点,在系统中提交“出差借款”的申请流程。主管于2010年10月14日上午10点审批,以此类推直至走完所有流程。其中,用于描述“主管审批”这ー活动的为“活动实例”,活动实例包含该活动的开始时间、结束时间、计划处理人、实际处理人、预约时间等不同维度的描述信息。图I中,某一次具体的业务请求过程中的各个活动实例组成ー个“流程实例”。例如,仍然以小王计划2010年10月15日去北京出差为例,则在该流程实例中,如果最终审批通过,则整个流程实例包括开始节点“出差申请”活动实例,主管审批活动实例,判断借款金额活动实例,经理审批活动实例,财务审批活动实例,银行打款活动实例,结束节点活动实例。图I中,某一次具体的业务请求过程中,在节点之间传递信息的数据定义为“上下文变量实例”,上下文变量实例可以通过(key,value)的对应关系进行保存,其中key为关键字,value为关键字的属性值。例如,图I中判断借款金额节点上的金额数即为该工作流·
现有技术对工作流表进行保存吋,以任务节点为例,任务节点有単独的任务实例表和泳道实例表,而任务节点上执行的结果数据会保存在流程日志表和流程模块实例表中;而判断节点没有设置单独的表,其上执行的结果数据会保存到流程日志表和流程模块实例表中。由于现有工作流中不同类型的节点保存数据的方式有差异,没有建立统ー的数据保存机制。因此,现有技术在执行完ー个工作流后,需要采用大量的数据库表对结果数据进行保存,増加了数据库中工作流表的数量,且大量工作流表中还可能存储重复数据,例如,属于同一个工作流的各个工作流表中都要保存流程ID、流程版本号等;由于工作流表数量众多,因此也相应提高了后续查询过程中数据表之间的关联难度。本申请实施例仅需要通过流程定义表、流程实例表、活动实例表和上下文变量实例表四张表即可完成工作流的执行过程,以及对工作流的结果数据进行保存,后续查询过程通常仅需关联流程实例表和活动实例表两张表即可实现对目标数据的查询。为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进ー步详细的说明。參见图2,为本申请工作流表的数据保存方法的第一实施例流程图步骤201 :预先设置工作流表,该工作流表包括流程定义表、流程实例表和活动实例表。与现有技术相比,本申请实施例定义的工作流表数量大大減少。其中,本申请实施例仅需ー张流程定义表,而现有技术中通用的JBPM3工作流解决方案中,从流程功能角度出发设置的流程定义表为13张。本申请流程定义表可以用bpm_lob表示,其中流程定义数据以XML的形式存储在ー个CLOB类型的字段里。因此,本申请实施例在进行流程定义解析过程中,只需要查询ー张表即可,该流程定义表的数据结构可以如下表I所示表I
权利要求
1.一种工作流表的数据保存方法,其特征在于,预先设置工作流表,所述工作流表包括流程定义表、流程实例表和活动实例表,所述方法包括 根据流程名称查找所述流程定义表,获取与所述流程名称对应的流程定义数据; 解析所述流程定义数据,根据解析得到的流程描述数据启动流程实例; 从所述流程实例的起始节点开始,按照所述流程描述数据运行所述流程实例; 其中,在运行所述流程实例的过程中,将在流程节点上生成的活动数据作为数据记录保存到所述活动实例表中;以及, 将运行所述流程实例过程的描述信息作为一条数据记录保存到所述流程实例表中,所述流程实例表与所述活动实例表具有相同的流程ID。
2.根据权利要求I所述的方法,其特征在于,所述流程定义表中的字段包括流程版本、流程名称、流程定义数据、流程定义图片; 所述流程实例表中的字段包括流程ID、流程名称、流程实例的开始时间、结束时间、流程实例申请人、流程实例运行路径; 所述活动实例表中的字段包括流程ID、活动实例的开始时间、结束时间、流程节点执行人名称。
3.根据权利要求I所述的方法,其特征在于,所述流程定义数据为XML类型数据; 所述解析所述流程定义数据具体为将所述XML类型的流程定义数据转换为JAVA对象数据。
4.根据权利要求I所述的方法,其特征在于,所述按照所述流程描述数据运行所述流程实例包括 从所述起始节点开始,按照流程节点之间的有向连接的指示,顺序从当前流程节点执行到下一个流程节点,直至结束节点。
5.根据权利要求I所述的方法,其特征在于,还包括 预先设置需要保存数据记录的流程节点的类型; 当所述流程实例运行到每一个流程节点时,判断所述流程节点的类型是否为预先设置的流程节点的类型; 当判断结果为是,则保存在所述流程节点上生成的活动数据,否则,不保存在所述流程节点上生成的活动数据。
6.根据权利要求I所述的方法,其特征在于,还包括 预先设置上下文变量实例表,用于保存所述流程实例的普通上下文变量,所述普通上下文变量的保存形式为关键字和属性值的对应关系,所述关键字包括流程节点中判断节点的判断值,所述上下文变量实例表与所述流程实例表具有相同的流程ID。
7.根据权利要求I所述的方法,其特征在于所述活动实例表以横表的形式保存所述流程节点上生成的活动数据。
8.一种工作流表的数据查询方法,其特征在于,用于对如权利要求I至7任意一项所述数据保存方法所保存的数据进行查询,包括 获取查询条件,该查询条件中包括流程ID和字段满足条件; 根据流程ID关联流程实例表和活动实例表,获得活动实例表中具有该流程ID的数据记录;根据字段满足条件筛选数据记录,将筛选出的数据记录作为查询结果记录。
9.一种工作流表的数据保存装置,其特征在于,包括 预设单元,用于预先设置工作流表,所述工作流表包括流程定义表、流程实例表和活动实例表; 查找单元,用于根据流程名称查找所述流程定义表,获取与所述流程名称对应的流程定义数据; 解析单元,用于解析所述流程定义数据,根据解析得到的流程描述数据启动流程实例; 执行单元,用于从所述流程实例的起始节点开始,按照所述流程描述数据运行所述流程实例; 保存单元,用于在所述执行单元运行所述流程实例的过程中,将在流程节点上生成的活动数据作为数据记录保存到所述活动实例表中;以及,将运行所述流程实例过程的描述信息作为一条数据记录保存到所述流程实例表中,所述流程实例表与所述活动实例表具有相同的流程ID。
10.根据权利要求9所述的装置,其特征在于,所述解析单元具体用于,将XML类型的流程定义数据转换为JAVA对象数据。
11.根据权利要求9所述的装置,其特征在于,所述执行单元具体用于,从所述起始节点开始,按照流程节点之间的有向连接的指示,顺序从当前流程节点执行到下一个流程节点,直至结束节点。
12.根据权利要求9所述的装置,其特征在于,还包括 设置单元,用于预先设置需要保存数据记录的流程节点的类型; 判断单元,用于当所述流程实例运行到每一个流程节点时,判断所述流程节点的类型是否为预先设置的流程节点的类型; 所述保存单元,具体用于当所述判断单元的判断结果为是,则保存在所述流程节点上生成的活动数据。
13.根据权利要求9所述的装置,其特征在于,所述预设单元,还用于预先设置上下文变量实例表,用于保存所述流程实例的普通上下文变量,所述普通上下文变量的保存形式为关键字和属性值的对应关系,所述关键字包括流程节点中判断节点的判断值,所述上下文变量实例表与所述流程实例表具有相同的流程ID。
14.一种工作流表的数据查询装置,其特征在于,用于对如权利要求9至13任意一项所述数据保存装置所保存的数据进行查询,包括 获取单元,用于获取查询条件,所述查询条件中包括流程ID和字段满足条件; 关联单元,用于根据所述流程ID关联流程实例表和活动实例表,获得所述活动实例表中具有所述流程ID的数据记录; 筛选单元,用于根据所述字段满足条件筛选所述数据记录,将筛选出的数据记录作为查询结果记录。
全文摘要
本申请公开了一种工作流表的数据保存方法、查询方法及装置,数据保存方法包括预先设置工作流表;根据流程名称查找流程定义表,获取与流程名称对应的流程定义数据;解析流程定义数据,根据解析得到的流程描述数据启动流程实例;从流程实例的起始节点开始,按照流程描述数据运行流程实例;其中,在运行流程实例的过程中,将在流程节点上生成的活动数据作为数据记录保存到活动实例表中;以及,将运行流程实例过程的描述信息作为一条数据记录保存到流程实例表中,流程实例表与活动实例表具有相同的流程ID。本申请工作流执行的结果数据只需要保存到流程实例表和活动实例表中,因此数据记录保存方便,提高了工作流的运行性能。
文档编号G06F17/30GK102831122SQ20111016114
公开日2012年12月19日 申请日期2011年6月15日 优先权日2011年6月15日
发明者章向明 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1