OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

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

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

关注

评论

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

等保办是啥单位?属于哪个系统?有什么作用?

行云管家

网络安全 信息安全 数据安全 等级保护 等保测评

2021年1-9月墨天轮最受欢迎的20篇技术文章

墨天轮

MySQL 数据库 oracle

你未必知道的 WebRTC – 前世、今生、未来

FinClip

WebRTC

AISWare AntDB 亚信科技数据库产品特性解读——平滑弹性扩展 (二)

亚信AntDB数据库

演讲VIDEO大放送|如何打造实景三维高效业务支撑架构

焱融科技

云计算 分布式 GIS 高性能 文件存储

爱奇艺iOS稳定性测试实践

爱奇艺技术产品团队

ios 测试 稳定性

netty系列之:netty实现http2中的流控制

程序那些事

Java Netty HTTP 程序那些事 http2

云短信服务孰优孰劣?博睿数据9月云短信评测报告

博睿数据

保障公有云资源安全运维小技巧-使用内网!

行云管家

公有云 内网穿透 内网 云资源 IT运维

客户服务CRM系统,提供优质客户服务

低代码小观

软件 CRM 管理工具 客户服务

JSON必知必会【PDF+视频教程】

FunTester

json 教程 视频 接口测试 FunTester

2021终拿下阿里(P7岗)主动分享:5000字面经总结

编程 程序员 程序人生

说出来你可能不信,华为技术官珍藏版:SpringBoot全优笔记,限时开源了

Java 程序员 架构 后端 springboot

律所CRM软件,适用于律师事务所的系统

低代码小观

CRM 管理系统 事务管理 律所 CRM系统

鸿蒙轻内核M核的故障管家:Fault异常处理

华为云开发者联盟

鸿蒙 异常 故障 Fault异常处理 Fault

渗透测试之破解详细演示

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

程序员:平安Java岗面试耗尽了我毕生所学,想了想,还是去字节吧

Java 编程 程序员

一周信创舆情观察(10.18~10.24)

统小信uos

ffmpeg 推拉流示例

webrtc developer

精益求精,零代码训练营第五期顺利结业

明道云

一张图彻底搞懂Spring循环依赖

Tom弹架构

Java 架构 Spring Framework

月度发布 | 极狐GitLab14.4版本:禅道集成、预设动态安全扫描DAST和集成错误跟踪功能等新功能上线!

极狐GitLab

WebRTC(66 - 96)Release Notes

webrtc developer

WebRTC

应用开发专家一席谈:开发低代码,上手低门槛,AppCube使能Citizen Developer,人人都是开发者

华为云开发者联盟

开发者 软件开发 低代码 AppCube 应用开发

银行网点业绩增长缓慢,中科柏诚本地生活高效解决

联营汇聚

阿里教学篇:一切从代码出发,Spring Boot从入门到源码到项目

Java Spring Cloud Spring Boot

保姆级教程,从概念到实践帮你快速上手 Apache APISIX Ingress

API7.ai 技术团队

云原生 k8s Apache APISIX ingress

Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面

华为云开发者联盟

Linux 二进制 漏洞 SCA工具

倒计时1天|StarRocks Summit 2021,为您揭开数据分析的秘密!

微软黑客马拉松@您,低代码风云再赛!

微软商业应用

低代码 Power Platform 黑客马拉松 黑客松

20张图!常见分布式理论与解决方案

Java 架构 面试 分布式 后端

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