在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

深入探讨Python Tornado框架:原理与异步实现

阿呆

Python tornado Web

碳基大模型--人一生处理多少个token?

FN0

人工智能 AIGC ChatGPT

个人开发者应该如何选购云服务

光毅

AI的道德风险验证

陈磊@Criss

一文讲透|如何部署OceanBase社区版(4.x版)

OceanBase 数据库

数据库 oceanbase

私有化部署chatGPT,告别网络困扰

南城FE

人工智能 前端 ChatGPT

澜舟科技周明:进入AI 2.0不代表一定要抛弃1.0的技术

澜舟孟子开源社区

AIGC 澜舟科技 ChatGPT

如何使用 MegEngine 生态落地一个算法

MegEngineBot

开源 性能优化 MegEngine 算法落地

「行业化」会是ToB巨头们的新战场吗?

ToB行业头条

分享:从数据库开发者的视角,预测5个开发趋势

OceanBase 数据库

数据库 oceanbase

前端培训怎么学习好?

小谷哥

Activity初窥门径

芯动大师

android App Activity

设计原则 — I 接口隔离原则

Lemoon Can

接口隔离原则 设计原则

DevOps |如何说清楚研发效能工作的价值?

laofo

DevOps cicd 研发效能 持续交付 研发效能度量

五分钟!获得轻量级的云原生应用控制平面

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

利用自动化平台可以做的那亿点事 |得物技术

得物技术

Sync包Mutex的原理阐述

Jack

golang

HPC调度基础:slurm集群的部署

天翼云开发者社区

RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践

阿里巴巴云原生

阿里云 RocketMQ 云原生

矩阵起源荣获“IT用户满意度大会”年度新秀称号

MatrixOrigin

MatrixOrigin MatrixOne

直播回顾 | 点击率提升400%,Ta是怎么做到的?

HarmonyOS SDK

HMS Core

腾讯云数据库性能打破世界纪录 每分钟可处理8.14亿笔交易

数据库小组

数据库 腾讯云 tdsql

从人工智能角度看人肉智能

FN0

AIGC

pulsar:创建更多租户 VS 创建更多namespaces

李code

架构 pulsar 调优 业务

一文读懂mysql锁

Paincupid

MySQL MySQL锁 mysql锁原理 mysql如何上锁 msyql锁分类

从制作九转大肠来谈起 | GreptimeDB 如何提高多步操作的容错能力

Greptime 格睿科技

数据库 云原生 时序数据库 procedure

探索Python Web后端技术的发展之路

阿呆

AI又火了,这一次云厂商能赚到钱吗?

脑极体

云计算 AI 云厂商

小白线下学习前端培训怎么样

小谷哥

AF_XDP技术简介

天翼云开发者社区

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