BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Jean-Jacques Dubray 关注 3 他的粉丝 ,译者 马国耀 关注 1 他的粉丝 发布于 2010年10月25日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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 => 'work' do
 4   cursor do
 5     concurrence do
 6       reviewer1
 7       reviewer2
 8     end
 9     editor
10     rewind :if => '${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

 

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

话说这个名字 by Jeffrey Zhao

很容易和Route混淆啊……

企业应用 by 张 启迪

ruby正在向企业化应用迈进

Re: 话说这个名字 by 马 国耀

老赵说得很对,我最开始就以为是Route,后来仔细看才发现不对。

Re: 话说这个名字 by Xie Fengbo

估计是SEO的结果,呵呵

Re: 话说这个名字 by Cheng Mars

ruby的好东西真多啊~~

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT