写点什么

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

  • 2010-10-24
  • 本文字数:1088 字

    阅读完需:约 4 分钟

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

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

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

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

在 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

2010-10-24 02:255724
用户头像

发布了 184 篇内容, 共 89.8 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

docker安装与启动

爱好编程进阶

Java 程序员 后端开发

HTTP 协议入门详解

爱好编程进阶

Java 程序员 后端开发

java List、Object、String

爱好编程进阶

Java 程序员 后端开发

Git进阶系列 | 8. 用Reflog恢复丢失的提交

俞凡

git 最佳实践

B站疯传20W份整套2021大厂面试1000题最新汇总(附视频答案详解)

爱好编程进阶

Java 程序员 后端开发

Day182

爱好编程进阶

Java 程序员 后端开发

Git进阶系列 | 7. Git中的Cherry-pick提交

俞凡

git

架构实战营模块三作业

哈啰–J

Java 1027 打印沙漏

爱好编程进阶

Java 程序员 后端开发

无聊科技正经事周刊(第5期):五一长假与虚拟旅行

潘大壮

程序员 周刊 科技 行业趋势 科技周刊

ElasticSearch 概述

爱好编程进阶

Java 程序员 后端开发

hive学习笔记之四:分区表

爱好编程进阶

Java 程序员 后端开发

网站开发进阶(十)页面嵌套

No Silver Bullet

jsp iframe 5月月更 页面嵌套 include

电阻电路的等效变换 (Ⅲ)

謓泽

5月月更

Day159

爱好编程进阶

程序员 后端开发

Java 1045 快速排序

爱好编程进阶

Java 程序员 后端开发

26岁到来之际,我在阿里实现了年薪40W+的小目标

Java架构追梦

Java 后端开发 程序员面试

flume基本概念与操作实例(常用source)

爱好编程进阶

Java 程序员 后端开发

励志!一年时间,从小白到进入阿里核心部门,“他”的逆袭之路

Java架构追梦

Java 后端开发 程序员面试

jackson学习之二:jackson-core

爱好编程进阶

Java 程序员 后端开发

DevOps系列之 —— DevOps概览(三)DevCloud HE2E DevOps 框架及其主要服务

若尘

DevOps 5月月更

Hive-0

爱好编程进阶

Java 程序员 后端开发

虎符交易所Hoo研究院|音乐NFT的路径在哪

区块链前沿News

NFT 虎符 Hoo 虎符交易所

拿了阿里、腾讯的offer的大佬给想进互联网大厂的程序员一个忠告

Java架构追梦

Java 阿里 程序员面试

Day220、nginx快速入门 -nginx

爱好编程进阶

程序员 后端开发

Hibernate多对多的关系映射,详解(代码

爱好编程进阶

Java 程序员 后端开发

Dubbo源码分析- 总体介绍与模块划分

爱好编程进阶

程序员 后端开发

手写一个持久化的Flutter会话管理器

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

网站开发进阶 (十一) 知识汇总

No Silver Bullet

二维码 标签 5月月更 打印 元素隐藏

SAP 电商云的 Spartacus Storefront 如何配置多个 JavaScript Application

汪子熙

angular SPA SAP 5月月更 电商云

CGB2107-DAY07总结复习

爱好编程进阶

Java 程序员 后端开发

Ruote,一款由Ruby写成的工作流引擎_SOA_Jean-Jacques Dubray_InfoQ精选文章