10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

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

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

关注

评论

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

万界星空科技MES系统对生产追溯的好处

万界星空科技

生产管理系统 mes 万界星空科技 生产追溯 追溯管理

LLama2大模型指令微调实操:解锁AI生成文本的新境界

百度开发者中心

人工智能 机器学习 大模型 llama2

硬件标准化之道:Linux社区与硬件厂商的协同创新

GousterCloud

硬件 Linux Kenel 设备

怎么用OpenAI Sora?最全分析-新手小白必看

蓉蓉

openai ChatGPT sora

AI智能尺码引导未来决策 推动品牌业绩飙升

第七在线

捷途山海T2预售开启,安全动力更卓越,仅需18.49万元起

极客天地

目前拉萨等保测评公司有几家?在哪里?

行云管家

等保 等保测评 拉萨

详解从ERP传到MES系统的数据

万界星空科技

系统集成 ERP 生产管理系统 mes

阿里云首个 AI 员工入职,围观开发工程师使用反馈

阿里云云效

阿里云 Serverless 云原生 通义灵码

阿里云首个 AI 员工入职,围观开发工程师使用反馈

阿里巴巴云原生

阿里云 AI 云原生 通义灵码

ChatGPT加持,需求分析再无难题

测吧(北京)科技有限公司

测试

阿里云ACK One GitOps:轻松实现多团队多集群应用交付

阿里巴巴云原生

阿里云 云原生 容器服务

一站式解读多模态——Transformer、Embedding、主流模型与通用任务实战(上)

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 多模态 多模态学习

ChatGPT加持,需求分析再无难题

测试人

人工智能 软件测试 ChatGPT

开源语言大模型

百度开发者中心

人工智能 机器学习 大模型

不惜血本、重金打造的数据平台为何效果平平?

feng

数据平台 企业数据化运营

你的代码是干的还是湿的?

敏捷开发

项目管理 敏捷开发 代码 代码人生 bug管理

避雷指南:11个常见 Kubernetes 误区详解

SEAL安全

Kubernetes 容器 云原生

DevOps已死?2024年的DevOps将如何

禅道项目管理

程序员 DevOps 自动化测试 知识分享

有手就会?记一次绕过防重放的漏洞挖掘

权说安全

漏洞挖掘

《射雕》热度不减!英特尔锐炫A750亮眼帧率展现高性价比优势!

E科讯

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