一种处理工作流的方法和系统的制作方法

文档序号:8208971阅读:212来源:国知局
一种处理工作流的方法和系统的制作方法
【技术领域】
[0001] 本发明涉及计算机技术领域,特别地涉及一种处理工作流的方法和系统。
【背景技术】
[0002]工作流(Workflow),就是业务过程的部分或整体在计算机应用环境下的自动化, 它主要解决的是使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程 自动进行,从而实现某个预期的业务目标,或者促使此目标的实现。
[0003] 现有工作流引擎技术方案中,使用关系型数据库作为工作流引擎的上下文存储系 统,工作流引擎会读取数据库中保存的工作流执行状态,指派给特定的任务执行器在本地 或者远程服务器节点执行这些任务,并且管理工作流中子任务的状态直到整个工作流执行 结束。
[0004] 上述现有技术方案中的工作流引擎存在以下不足:
[0005] 所有任务的工作状态和执行器的状态都由调度器来管理,容易形成在分布式系统 中的单点问题,如果调度器宕机,任务调度就可能停止,甚至造成任务状态丢失;
[0006] 存储在数据库中工作流数据,将工作流有向图结构存储为表结构,对数据的查询 和修改造成困难。

【发明内容】

[0007] 有鉴于此,本发明提供一种处理工作流的方法和系统,能够避免分布式系统中的 单点问题,提高任务执行的可靠性。
[0008] 为实现上述目的,根据本发明的一个方面,提供了一种处理工作流的方法。
[0009] 本发明的处理工作流的方法包括:保存由包含多个任务节点的工作流转换得到的 树型结构的执行计划,在该执行计划中,有多个父节点的任务节点重复地出现在其父节点 所在树支中,对于重复出现的任务节点,其中具有子节点的作为该任务节点的执行节点,其 他作为该任务节点的非执行节点;遍历所述执行计划,并且在遍历到任务未执行的任务节 点时占用此任务节点;确认该任务节点的所有父节点都执行完成,然后执行该任务节点的 执行节点。
[0010] 可选地,所述执行计划保存在zookeeper系统中,其中任务节点保存在zookeeper 系统的持久节点中。
[0011] 可选地,所述占用此任务节点的步骤包括:在此任务节点下注册子节点,该子节点 类型为zookeeper系统的临时节点。
[0012] 可选地,该方法还包括:在所述任务节点的执行节点中记录该任务节点的所有父 节点的执行状态;在所述任务节点的非执行节点中记录该任务节点的执行节点在所述执行 计划中的位置;在所述执行节点的父节点执行完成的情况下,修改所述执行节点中记录的 该任务节点的所有父节点的执行状态;在所述非执行节点的父节点执行完成的情况下,根 据该非执行节点中记录的该任务节点的执行节点在所述执行计划中的位置,修改所述执行 节点中记录的该任务节点的所有父节点的执行状态;确认该任务节点的所有父节点都执行 完成的步骤包括:确认所述任务节点的执行节点中记录的该任务节点的所有父节点的执行 状态为全部已执行。
[0013] 可选地,在执行该任务节点的执行节点后,还包括:在执行失败的情况下,删除该 任务节点的执行节点下注册的子节点。
[0014] 根据本发明的另一方面,提供了一种处理工作流的系统。
[0015] 本发明的处理工作流的系统包括保存模块,以及一个或多个执行模块,其中:所述 保存模块用于保存由包含多个任务节点的工作流转换得到的树型结构的执行计划,在该执 行计划中,有多个父节点的任务节点重复地出现在其父节点所在树支中,对于重复出现的 任务节点,其中具有子节点的作为该任务节点的执行节点,其他作为该任务节点的非执行 节点;所述执行模块用于遍历所述执行计划,并且在遍历到任务未执行的任务节点时占用 此任务节点;确认该任务节点的所有父节点都执行完成,然后执行该任务节点的执行节点。
[0016] 可选地,所述保存模块设置在zookeeper系统中,该zookeeper系统的持久节点中 保存所述任务节点。
[0017] 可选地,所述执行模块还用于在遍历到任务未执行的任务节点时,在此任务节点 下注册子节点,该子节点类型为zookeeper系统的临时节点。
[0018] 可选地,所述执行模块还用于:在所述任务节点的执行节点中记录该任务节点的 所有父节点的执行状态;在所述任务节点的非执行节点中记录该任务节点的执行节点在所 述执行计划中的位置;在所述执行节点的父节点执行完成的情况下,修改所述执行节点中 记录的该任务节点的所有父节点的执行状态;在所述非执行节点的父节点执行完成的情况 下,根据该非执行节点中记录的该任务节点的执行节点在所述执行计划中的位置,修改所 述执行节点中记录的该任务节点的所有父节点的执行状态;以及根据所述任务节点的执行 节点中记录的该任务节点的所有父节点的执行状态来判断任务节点的所有父节点是否都 执行完成。
[0019] 可选地,所述执行模块还用于在任务节点执行失败的情况下,删除该任务节点下 注册的子节点。
[0020] 根据本发明的技术方案,将工作流转换为树型结构的执行计划然后发布,然后执 行计划,这种方式使系统无需中心化的节点,成为一种耦合很低的系统,从而避免了单点问 题,任何一个执行器宕机,都可由其他执行器来代替,从而提高了任务执行的可靠性。另外, 工作流由于使用了树形结构来存储,对数据的查询和修改任务间的依赖等操作更加直观, 通过使用zookeeper对降低的数据修改中的事务操作,提升了服务器性能。
【附图说明】
[0021] 附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0022] 图1是根据本发明实施例的工作流引擎系统的基本结构的示意图;
[0023]图2是根据本发明实施例的工作流的将有向无环图结构转换为树型结构的示意 图;<
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1