写点什么

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

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

关注

评论

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

敏捷开发中的「史诗」到底是什么?

LigaAI

项目管理 敏捷开发 史诗

星巴克涨价引热议!中国现磨咖啡市场目前到底如何?

易观分析

星巴克涨价 中国咖啡市场

第十四节:SpringBoot使用JdbcTemplate访问操作数据库基本用法

入门小站

springboot

在线时序流程图制作工具

入门小站

15 行代码在 wangEditor v5 使用数学公式

CRMEB

祝贺!首届龙蜥社区年度突出贡献奖揭晓,马上查看

OpenAnolis小助手

Linux 开源 互联网 社群运营

终极指南:企业级云原生 PaaS 平台日志分析架构全面解析

尔达Erda

微服务 云原生 PaaS 云原生应用

哪里可以查到网络安全等级测评与检测评估机构目录?

行云管家

网络安全 等保 等级测评

会声会影2022语音转文字功能怎么用

懒得勤快

数据同步与缓存一致性问题

Mars

布隆过滤器 缓存一致性

2022年1月视频行业用户洞察:假期影响下活跃用户开始回升

易观分析

移动视频 视频app

【C语言】二维数组

謓泽

C语言 2月月更 二维数组

华为云企业级Redis揭秘第16期:超越开源Redis的ACID"真"事务

华为云开发者联盟

redis 事务 ACID GaussDB(for Redis) 开源Redis

java培训:JVM 内存布局

@零度

JVM JAVA开发

数字孪生的起源,从救宇航员回家开始

Meta 小元

数据可视化 智慧城市 数字孪生 元宇宙

看SparkSQL如何支撑企业级数仓

字节跳动数据平台

hive 字节跳动 Sparksql 数仓

Apache ShardingSphere 5.1.0 正式发布

SphereEx

数据库 开源社区 SphereEx Apache ShardingSphere

黑客马拉松(Hackathon)是什么?

Speedoooo

黑客马拉松 黑客松

记录一些Oracle操作命令

wong

oracle

冬奥高质量炫技,Get同款“魔法”:图像处理算法 | 赠书

博文视点Broadview

面对锁等待难题,数仓如何实现问题的秒级定位和分析

华为云开发者联盟

sql GaussDB(DWS) 锁等待 分布式死锁

《数字经济全景白皮书》数字冰雪篇 重磅发布

易观分析

数字经济 冬奥会

会声会影2022重磅发布!会声会影2022全新功能详解

懒得勤快

会声会影2022美颜功能介绍 教你玩转视频美颜

懒得勤快

SQL学习(持续更新)

阿丞

事务 索引 sql

感谢认可!一封又一封的感谢信

郑州埃文科技

IP地址 网络空间 地图测绘

巧用EasyRecovery监控硬盘!为你的电脑保驾护航!

淋雨

EasyRecovery 数据恢复’

外包学生管理系统的架构设计

yhjhero

#架构训练营

大咖说|极客邦CEO霍太稳对话阿里云存储负责人吴结生:我的数据存储20年(无限生长篇)

大咖说

阿里巴巴 InfoQ 存储线

再见了,我的散装研发管理平台;再见了,4台ECS!

阿里云云效

阿里云 DevOps 云原生 研发 敏捷研发

英特尔2022年投资者大会:以软件解锁更大增长机遇

科技新消息

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