QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:255284
用户头像

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

关注

评论

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

Python与区块链:构建简单的加密货币钱包

我再BUG界嘎嘎乱杀

Python 区块链 编程 后端 开发语言

华为云全域Serverless技术创新:全球首创通用Serverless平台被ACM SIGCOMM录用

轶天下事

流动的智慧:开创集成资产管理新局面 ——华为云ROMA Connect资产中心

轶天下事

【第3期】2024 搜索客 Meetup | Elasticsearch 的代码结构和写入查询流程的解读 - 下篇

极限实验室

极兔速递2024上半年净利润转正 中国市场首次盈利

财见

iLogtail 开源两周年:感恩遇见,畅想未来

阿里巴巴云原生

阿里云 云原生 iLogtail

Python Tuples(元组)详解

我再BUG界嘎嘎乱杀

Python 编程 后端 元组 Tuples

豆瓣评分9.0!Python3网络爬虫开发实战,堪称教学典范!

我再BUG界嘎嘎乱杀

Python 编程 爬虫 后端 开发语言

定格精彩瞬间!详解六自由度技术原理及应用

快手技术

视频技术

“软件质量”,构筑企业值得信赖的护城河

轶天下事

CodeArts 7月特性内容20240808

轶天下事

华为云Serverless可观测性解决方案打造高效、可靠的云原生应用

轶天下事

汇聚行业实践,树立应用典范——《Serverless应用实践案例集》重磅发布

轶天下事

雅菲奥朗 FinOps 认证培训:开启企业云财务管理转型之路

雅菲奥朗

云计算 FinOps FinOps 认证 FinOps 考试 FinOps 培训

AICon 全球人工智能开发与应用大会参会有感

三掌柜

AICon

14 个Spring cache注解:缓存与业务解耦实战(必须收藏)

肖哥弹架构

Java spring 缓存 注解应用

HarmonyOS地图服务:深度解析其丰富功能与精准导航实力

白晓明

HarmonyOS NEXT Map Kit

品质更进阶 长安马自达MAZDA EZ-6通关中国“热极”

极客天地

9000字干货:从消息流平台Serverless之路,看Serverless标准演进

轶天下事

操作系统笔记 day4

万里无云万里天

操作系统

JimuReport 积木报表 v1.8.0 版本发布

JEECG低代码

漫谈端到端测试

老张

软件测试 质量保障 端到端 测试方法

Flow Simulator 案例分享:换热器的一维仿真

Altair RapidMiner

人工智能 HPC 仿真 智能制造 altair

揭秘移动IP:为何定位精度多停留在城市级?

郑州埃文科技

IP IP地址

AI 应用实战营 - 毕业总结

德拉古蒂洛维奇

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