当前位置: 首页 > 工具软件 > Ruote > 使用案例 >

Ruote,一款由Ruby写成的工作流引擎

鲁炳
2023-12-01

ruote是一款由Ruby写成的工作流引擎,由John Mettraux,Keneth Kalmer,Torsten Schoenebaum及其他贡献者共同完成。它已被诸如ThoughtWorks和Rackspace等公司用于支持关键任务的整合

\
ruote引擎可同时执行多个流程实例。流程实例是从Ruby DSL或XML(或直接用JSON)等流程定义中实例化的。流程定义描述了多个参与者间的工作顺序。参与者可以是用户,用户组,服务以及遗留系统等。
\

ruote的流程定义描述了多个参与者间的工作顺序。通常,参与者的注册是在引擎启动时发生的,而流程定义则是在发起实例时被解析并转换成一个抽象语义树(简称“树” )并与相应的流程实例相关联。Ruote主要能够读取三种流程定义:Ruby DSL,XML和普通树(一般是JSON)。流程定义中包含一个主流程定义,其中可包含一个或多个子流程定义。例如:

\
\
1 require 'ruote' # gem install ruote\ 2 \ 3 pdef = Ruote.process_definition :name =\u0026gt; 'work' do\ 4   cursor do\ 5     concurrence do\ 6       reviewer1\ 7       reviewer2\ 8     end\ 9     editor\10     rewind :if =\u0026gt; '${not_ok}' # back to the reviewers if editor not happy\11     publish # the document\12   end\13 end
\\
\

在ruote2.1中,多个worker与引擎共享同一存储,而且参与者列表被持久化。ruote-couch是使用Apache CouchDB实现的一种ruote存储。ruote-amqp提供的AMQP参与者/监听器组合可用于将工作项分发给AMQP消费者进行处理,并通过AMQP启动流程。

\\

ruote实现了工作流模式的全系列

\
\
  • 顺序、并行、同步、互斥选择、简单聚合\
  • 多重选择、结构化同步聚合、多重聚合、结构化鉴别器\
  • 任意循环、隐式终止\
  • 多实例模式\
  • 延迟选择、交叉并行路由、里程碑\
  • 任务取消、实例取消\
  • ...\
\

ruote2.0版是完全重写的,2.1版的核心也是重写的。几个星期前,他们发布 了2.1.11。此外,John还启动了volute项目,这是一款状态机的实现。就“顺序工作流”和“状态机”间的差异,John已在博客中阐述了他的见解。

\

查看英文原文: Ruote: A Workflow Engine Written in Ruby

\
 类似资料: