遵循xpdl规范工作流中间件流程定义管理方法

文档序号:6584228阅读:166来源:国知局
专利名称:遵循xpdl规范工作流中间件流程定义管理方法
技术领域
本发明涉及一种遵循XPDL规范工作流中间件流程定义管理方法,属于中间件技 术架构领域,特别是在工作流模板管理的技术架构领域。
背景技术
针对工作流中间件,目前国内大部分应用场景,仍然是需要人工参与流程的场景, 属于人机信息处理系统;例如政府、金融、电信等行业的办公自动化过程。这个实际情况 也注定国内多数工作流产品都基于XPDL规范进行实现。 XPDL(XML Process Definition Language)属于一种定义语言,需要工作流引擎 去解析才能确保流程按照此定义规则进行运行。工作流引擎解析这些XPDL流程定义过程, 需要遵循一个机制,实现针对某个流程定义进行不同版本的管理。 早期,工作流中间件发展尚不成熟,流程定义过程没有什么语言可遵循,流程定义 管理也没有什么版本的说法,各工作流产品按照各自对工作流定义模型的理解,分别创建 流程相关元素的表结构;定义过程直接通过操作数据库中流程定义表的方式对流程进行定 义,一般仅记录最新的流程定义;运行过程没有新老版本的区分,所有流程实例都依据数据 库中记录的流程定义信息进行运行。 随着工作流中间件技术的不断发展,XPDL规范的诞生,工作流产品逐渐走向标准 化、规范化,流程定义模板管理思想渐渐成熟,业界普遍遵循的方式为"老用老,新用新"的 规则,已创建的流程实例继续使用原流程定义模板,新创建的流程实例使用最新的流程定 义模板。此方式引入了流程定义模板管理的思想,同一个流程定义在不同时期的处理规则 不尽相同,而把每个时期的流程定义以模板的形式保存,方便以后追溯历史数据的时候有 当时的流程定义模板作为处理依据!这种方式被多数用户所认可,同时也被多数工作流产 品所采用。 然而,这种"老用老,新用新"的规则,在现实的生产环境下,有时无法满足复杂的 场景需求!例如某个企事业单位的审批流程,其中某个审批流程实例需要特事特办,需要 在其原有审批环节中增加一个新的环节,而这个环节又只有当前这个审批流程实例下才需 要执行,后续再发起的其他审批流程不一定走此新增环节。针对此需求进行分析,首先因为 此流程需要增加新的节点,必然要修改流程定义,否则流程实例运行过程中将无据可依;然 后,需要将此新定义的流程导入到数据库中(以模板形态保存),将新产生一个模板。如果 流程定义模板管理有"老用老,新用新"的规则限制,那么后续发起的流程实例都要走此特 事特办的流程定义模板,这样就违背了此特事特办需求的初衷,新创建的审批流程实例需 要仍然按照老的模板去运行! 为应对现实生活中的复杂需求,我们需要打破原有流程定义模板管理规则"老用 老,新用新"的禁锢,老的流程实例不一定非得使用老的流程定义模板,新创建的流程实例 不一定非得使用新的流程定义模板。
发明内容
本发明的目的就是针对上述的不足,打破原有流程定义模板管理规则"老用老,新 用新"的禁锢,提供了一种更好的流程定义模板管理规则,吸取已有"老用老,新用新"流程 定义模板管理规则的精华,加以改造更好地实现现实生活中对流程定义模板管理的复杂需 求。
—种遵循XPDL规范工作流中间件流程定义管理方法,包括如下步骤 1)流程定义导入将定义好的流程定义导入到工作流引擎数据库中,以供工作流
引擎通过此流程定义发起流程实例,运行时流程实例按照流程定义中的规则进行运行;一
个流程定义在不同的处理时期以不同的流程定义模板形式存在,运行时不同时期的流程实
例按照各自时期所对应流程定义模板运行; 2)流程实例创建按照流程定义模板的状态和版本标志查找出能够发起流程实 例的流程定义模板,发起流程实例; 3)流程定义模板禁用/启用对流程定义模板的有效性进行控制,以控制把哪些 流程定义模板加载到工作流引擎中; 4)流程实例模板修改动态修改某个流程实例模板的定义内容,以供流程实例运 行时按照新的流程定义模板运行; 5)流程定义模板卸载卸载掉不再使用的流程定义模板,避免垃圾流程定义模板 的存在。 具体来说,所述第1)步流程定义导入是这样的 1-1)不存在该流程定义的模板,则新增加一条流程定义模板,将该流程定义模板 的标志字段设置成已导入状态; 1-2)存在该流程定义的模板,并且该流程定义模板没有被流程实例引用,则覆盖 该流程定义模板; 1-3)存在该流程定义的模板,并且该流程定义模板的标志字段为已被单引用(已 被一个流程实例引用),则首先将该流程定义模板的标志字段设置成已被单实例化状态,然 后再增加一条新的流程定义模板,并将新增流程定义模板的标志字段设置成已导入状态;
1-4)存在该流程定义的模板,并且该流程定义模板的标志字段为已被多次引用 (已被多个流程实例引用),则首先将该流程定义模板的标志字段设置成已被多实例化状 态,然后再增加一条新的流程定义模板,并将新增流程定义模板的标志字段设置成已导入 状态。 所述第2)步是这样的相同的流程定义标识可能有多条流程定义模板,根据流程 定义标识查找已导入/已被单引用/已被多次引用状态的流程定义模板,发起流程实例
2-1)流程定义模板的标志字段为已导入状态,则将该流程定义模板的标志字段设 置成已被单引用状态; 2-2)流程定义模板的标志字段为已被单引用状态,则将该流程定义模板的标志字
段设置成已被多次引用状态。 所述第3)步是这样的 3-1)流程定义模板的标志字段为已导入状态,禁用该流程定义模板,将设置该流 程定义模板的标志字段为已禁用状态,该流程定义模板将无法被加载到引擎中,并且无法 根据该流程定义模板创建流程实例;
5
3-2)流程定义模板的标志字段为已禁用状态,启用该流程定义模板,将设置该流 程定义模板的标志字段为已导入状态。
所述第4)步是这样的 4-1)流程定义模板的标志字段为已被单引用状态,则首先新建一条该流程定义模
板的拷贝,并将该拷贝流程定义模板的标志字段设置成已导入状态,然后将原流程定义模
板的标志字段设置成已被单实例化状态,并根据修改命令修改原流程定义模板; 4-2)流程定义模板的标志字段为已被多次引用状态,则首先新建一条该流程定义
模板的拷贝,并将该拷贝流程定义模板的标志字段设置成已被单实例化状态,然后将发起
修改命令的流程实例的流程定义模板引用标识设置成新增流程定义模板的标识,并根据修
改命令修改新增流程定义模板;最后通过判断原流程定义模板被引用的次数,设置原流程
定义模板的标志字段为已被单引用/已被多次引用状态。 所述第5)步是这样的 5-1)流程定义模板的标志字段为已被单引用/已被多次引用状态,则将该流程定 义模板的标志字段设置成已被单实例化/已被多实例化状态; 5-2)流程定义模板的标志字段为已导入状态,则将该流程定义模板从工作流引擎 数据库中直接删除。 本发明提供的遵循XPDL规范工作流中间件流程定义管理方法具有如下优点
參吸取已有"老用老,新用新"流程定义模板管理规则的精华保证了一个流程定
义在不同的处理时期以不同的流程定义模板形式存在,运行时不同时期的流程实例按照各 自时期所对应流程定义模板运行; 參打破原有流程定义模板管理规则"老用老,新用新"的禁锢新创建的流程实例 不一定非得使用新的流程定义模板; 參优化流程定义的加载,避免加载无意义流程定义,空耗系统内存; 參打破原有流程定义模板管理规则"老用老,新用新"的禁锢老的流程实例不一
定非得使用老的流程定义模板; 參避免垃圾流程定义模板的存在,同时保证历史流程实例有历史流程定义模板可依。


图1是本发明实施例的流程图; 图2是本发明实施例中流程定义模版版本控制的状态转移图。
具体实施例方式
下面以非限定性的实施方式对本发明做进一步解释、说明。 —种遵循XPDL规范工作流中间件流程定义管理方法,如图1所示,包括如下步 骤 1)流程定义导入将定义好的流程定义导入到工作流引擎数据库中,以供工作流 引擎通过此流程定义发起流程实例,运行时流程实例按照流程定义中的规则进行运行;保 证一个流程定义在不同的处理时期以不同的流程定义模板形式存在,运行时不同时期的流程实例按照各自时期所对应流程定义模板运行; 2)流程实例创建按照流程定义模板的状态和版本标志查找出能够发起流程实 例的流程定义模板,发起流程实例; 3)流程定义模板禁用/启用对流程定义模板的有效性进行控制,以控制把哪些 流程定义模板加载到工作流引擎中; 4)流程实例模板修改动态修改某个流程实例模板的定义内容,以供流程实例运 行时按照新的流程定义模板运行; 5)流程定义模板卸载卸载掉不再使用的流程定义模板,避免垃圾流程定义模板 的存在。
图2是流程定义模版版本控制的状态转移图,图中解释如下 已导入id =新分配的id ;version = 0 ;d印artid =导入时指定的id。 已被引用wr—process表中引用了这个流程定义,也就引用了流程定义所属的包。 已被实例化,与已被引用的状态相同id =原id ;version =实例化之前的 version。 已被修改id =原id ;version = version+l。 已覆盖id =原id ;version = 0 ;d印artid =新指定的id。
已被删除记录被删除。 流程定义存储和维护的整个过程中,依据状态转移图,流程定义的管理方法如 下 所述第1)步流程定义导入是这样的 1-1)不存在该流程定义的模板,则新增加一条流程定义模板,将该流程定义模板 的标志字段设置成已导入状态; 1-2)存在该流程定义的模板,并且该流程定义模板没有被流程实例引用,则覆盖 该流程定义模板; 1-3)存在该流程定义的模板,并且该流程定义模板的标志字段为已被单引用(已 被一个流程实例引用),则首先将该流程定义模板的标志字段设置成已被单实例化状态,然 后再增加一条新的流程定义模板,并将新增流程定义模板的标志字段设置成已导入状态;
1-4)存在该流程定义的模板,并且该流程定义模板的标志字段为已被多次引用 (已被多个流程实例引用),则首先将该流程定义模板的标志字段设置成已被多实例化状 态,然后再增加一条新的流程定义模板,并将新增流程定义模板的标志字段设置成已导入 状态。 所述第2)步是这样的相同的流程定义标识可能有多条流程定义模板,根据流程 定义标识查找已导入/已被单引用/已被多次引用状态的流程定义模板,发起流程实例
2-1)流程定义模板的标志字段为已导入状态,则将该流程定义模板的标志字段设 置成已被单引用状态; 2-2)流程定义模板的标志字段为已被单引用状态,则将该流程定义模板的标志字
段设置成已被多次引用状态。 所述第3)步是这样的
7
3-1)流程定义模板的标志字段为已导入状态,禁用该流程定义模板,将设置该流 程定义模板的标志字段为已禁用状态,该流程定义模板将无法被加载到引擎中,并且无法 根据该流程定义模板创建流程实例; 3-2)流程定义模板的标志字段为已禁用状态,启用该流程定义模板,将设置该流 程定义模板的标志字段为已导入状态。
所述第4)步是这样的 4-1)流程定义模板的标志字段为已被单引用状态,则首先新建一条该流程定义模
板的拷贝,并将该拷贝流程定义模板的标志字段设置成已导入状态,然后将原流程定义模
板的标志字段设置成已被单实例化状态,并根据修改命令修改原流程定义模板; 4-2)流程定义模板的标志字段为已被多次引用状态,则首先新建一条该流程定义
模板的拷贝,并将该拷贝流程定义模板的标志字段设置成已被单实例化状态,然后将发起
修改命令的流程实例的流程定义模板引用标识设置成新增流程定义模板的标识,并根据修
改命令修改新增流程定义模板;最后通过判断原流程定义模板被引用的次数,设置原流程
定义模板的标志字段为已被单引用/已被多次引用状态。 所述第5)步是这样的 5-1)流程定义模板的标志字段为已被单引用/已被多次引用状态,则将该流程定 义模板的标志字段设置成已被单实例化/已被多实例化状态; 5-2)流程定义模板的标志字段为已导入状态,则将该流程定义模板从工作流引擎 数据库中直接删除。
8
权利要求
一种遵循XPDL规范工作流中间件流程定义管理方法,其特征在于包括如下步骤1)流程定义导入将定义好的流程定义导入到工作流引擎数据库中,以供工作流引擎通过此流程定义发起流程实例,运行时流程实例按照流程定义中的规则进行运行;保证一个流程定义在不同的处理时期以不同的流程定义模板形式存在,运行时不同时期的流程实例按照各自时期所对应流程定义模板运行;2)流程实例创建按照流程定义模板的状态和版本标志查找出能够发起流程实例的流程定义模板,发起流程实例;3)流程定义模板禁用/启用对流程定义模板的有效性进行控制,以控制把哪些流程定义模板加载到工作流引擎中;4)流程实例模板修改动态修改某个流程实例模板的定义内容,以供流程实例运行时按照新的流程定义模板运行;5)流程定义模板卸载卸载掉不再使用的流程定义模板,避免垃圾流程定义模板的存在。
2. 根据权利要求1所述的遵循XPDL规范工作流中间件流程定义管理方法,其特征在 于所述第1)步流程定义导入是这样的1-1)不存在该流程定义的模板,则新增加一条流程定义模板,将该流程定义模板的标 志字段设置成已导入状态;1-2)存在该流程定义的模板,并且该流程定义模板没有被流程实例引用,则覆盖该流 程定义模板;1-3)存在该流程定义的模板,并且该流程定义模板的标志字段为已被单引用(已被一 个流程实例引用),则首先将该流程定义模板的标志字段设置成已被单实例化状态,然后再 增加一条新的流程定义模板,并将新增流程定义模板的标志字段设置成已导入状态;1- 4)存在该流程定义的模板,并且该流程定义模板的标志字段为已被多次引用(已被 多个流程实例引用),则首先将该流程定义模板的标志字段设置成已被多实例化状态,然后 再增加一条新的流程定义模板,并将新增流程定义模板的标志字段设置成已导入状态。
3. 根据权利要求1所述的遵循XPDL规范工作流中间件流程定义管理方法,其特征在 于所述第2)步是这样的相同的流程定义标识可能有多条流程定义模板,根据流程定义 标识查找已导入/已被单引用/已被多次引用状态的流程定义模板,发起流程实例2- 1)流程定义模板的标志字段为已导入状态,则将该流程定义模板的标志字段设置成 已被单引用状态;2- 2)流程定义模板的标志字段为已被单引用状态,则将该流程定义模板的标志字段设 置成已被多次引用状态。
4. 根据权利要求1所述的遵循XPDL规范工作流中间件流程定义管理方法,其特征在 于所述第3)步是这样的3- 1)流程定义模板的标志字段为已导入状态,禁用该流程定义模板,将设置该流程定 义模板的标志字段为已禁用状态,该流程定义模板将无法被加载到引擎中,并且无法根据 该流程定义模板创建流程实例;3-2)流程定义模板的标志字段为已禁用状态,启用该流程定义模板,将设置该流程定 义模板的标志字段为已导入状态。
5. 根据权利要求1所述的遵循XPDL规范工作流中间件流程定义管理方法,其特征在于所述第4)步是这样的4-1)流程定义模板的标志字段为已被单引用状态,则首先新建一条该流程定义模板的拷贝,并将该拷贝流程定义模板的标志字段设置成已导入状态,然后将原流程定义模板的标志字段设置成已被单实例化状态,并根据修改命令修改原流程定义模板;4- 2)流程定义模板的标志字段为已被多次引用状态,则首先新建一条该流程定义模板 的拷贝,并将该拷贝流程定义模板的标志字段设置成已被单实例化状态,然后将发起修改 命令的流程实例的流程定义模板引用标识设置成新增流程定义模板的标识,并根据修改命 令修改新增流程定义模板;最后通过判断原流程定义模板被引用的次数,设置原流程定义 模板的标志字段为已被单引用/已被多次引用状态。
6. 根据权利要求1所述的遵循XPDL规范工作流中间件流程定义管理方法,其特征在 于所述第5)步是这样的5- 1)流程定义模板的标志字段为已被单引用/已被多次引用状态,则将该流程定义模 板的标志字段设置成已被单实例化/已被多实例化状态;5-2)流程定义模板的标志字段为已导入状态,则将该流程定义模板从工作流引擎数据 库中直接删除。
全文摘要
一种遵循XPDL规范工作流中间件流程定义管理方法,依据状态转移图,吸取已有“老用老,新用新”流程定义模板管理规则的精华,保证了一个流程定义在不同的处理时期以不同的流程定义模板形式存在,运行时不同时期的流程实例按照各自时期所对应流程定义模板运行;同时又打破原有流程定义模板管理规则“老用老,新用新”的禁锢,实现了老的流程实例不一定非得使用老的流程定义模板,新创建的流程实例不一定非得使用新的流程定义模板。
文档编号G06Q10/00GK101702217SQ200910230969
公开日2010年5月5日 申请日期2009年11月27日 优先权日2009年11月27日
发明者何忠胜, 姜健, 戴海宏 申请人:山东中创软件工程股份有限公司;山东中创软件商用中间件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1