QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

要不要自建工作流引擎?

  • 2009-07-17
  • 本文字数:1083 字

    阅读完需:约 4 分钟

现在,越来越多的人意识到在解决方案中引入工作流的重要性。然而,在面临如何具体实现的时,自建亦或是使用(现有工作流)?争论仍在继续。在 Bernd Rücker 的新博文“工作流引擎?动手整一个……”中,他重拳出击,讨论了围绕在这个问题周围的一些常见误解。

在 Bernd 看来,支持开发“自产的”工作流引擎的典型论点包括以下几个方面:

  • 我们仅有非常基本的需求,简单的状态机。用工作流引擎是用大炮打蚊子。
  • 引擎应该是应用的一部分,而不是独立的。
  • 我们已经对工作流产品 X 做了评估,它并不适合我们的需求。

尽管乍一看这些论点似乎有道理,但是这些论点很少能为开发“自产的”工作流引擎而付出的努力和开销提供充分理由。

我们仅有非常基本的需求,而且,为此而学习新技术或(工作流的)实现而花费时间和努力是不值得的。结果很多实现一开始是基于简单的数据库表,在其中维持每一个流程的实例及其状态。但是,如果现在还需要支持以下方面的需求呢?

  • 存储实例变量的等待状态?
  • 超时处理?
  • 事件上报?
  • 决策网关?

Bernd 指出,根据他的经验,尽管工作流引擎的实现的确始于简单的需求,但随着时间的推移需求一定会不断增长,而且,到最后公司往往“陷入”维护和支持这个日益丰满的工作流系统。

引擎应该是应用的的一部分,因此我们不希望招惹对增加的硬件、软件、集成以及安装过程等的依赖(而这些是很多商业引擎的典型需求)。

Bernd 对这种场景的建议是考虑使用轻量级的 Java 工作流引擎,它们很容易集成到用户的产品中去。这样的工作流有 JBoss jBPM,Nova Bonita,Enhydra Shark 等,这些工作流一般都包含很多配置选项,使得它们可以非常容易地适配具体的应用需求。

我们已经评估过工作流产品 X,它不适合,这是最难应付的理由。Bernd 认为,问题在于,即使是轻量级的开源工作流引擎,也需要时间和精力才能得出合理的评价。对于一个工作流,如果没有足够的时间去检验它,得到的结论往往不充分的;而如果能够花足够的时间去了解技术的话,几乎没有哪个工作流不能提供所需的功能。Bernd 举了个例子,他的客户们无不发现,使用 jBPM 可以很容易地实现他们所需要的任何功能。问题在于要花时间去了解技术。

Bernd 以这样的方式总结他的博文:

请不要再自己开发了![这是项很昂贵的工作]。[理解一个引擎的] 学习曲线往往磨刀不负砍柴工!……[一旦你知道如何使用] 使用引擎的优势就不辩自明了。

今天的人们已经很少自己实现他们的数据库,O/R 映射工具或应用服务器了。为什么人们总是要想着自行开发工作流引擎呢?工作流引擎已经成为商品,而且,使用现有的实现总是比自开发省钱的多。

查看英文原文: Workflow Engine – To Build or Not to Build One?

2009-07-17 01:5018120
用户头像

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

关注

评论

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

哑面防水尼龙胶浆Nylon printing paste

C13713145387

哑面防水尼龙胶浆

4.2 Go语言从入门到精通:延迟函数 defer

xcbeyond

defer Go 语言 5月日更

postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)

Yang

数据库 postgresql

OAuth 2.0 与 OIDC

Zhang

OAuth 2.0 OIDC

Google官方关闭binary后,Android工程师怎么办?

Changing Lin

5月日更

架构实战营 模块二 作业

Pitt

架构实战营

入门到精通!阿里码农熬了2晚整理的Java工具,真香

飞飞JAva

Java java工具类

模块三作业:消息队列详细设计文档

薛定谔的指南针

架构实战营

NumPy之:结构化数组详解

程序那些事

Python 数据分析 Numpy 程序那些事

融云亮相 CDEC2021 上海站 全场景通信能力赋能企业数字升级

融云 RongCloud

网络攻防学习笔记 Day5

穿过生命散发芬芳

5月日更 网络攻防

太简单了!这套Java异常处理的总结,80%的人都没看过

牛哄哄的java大师

Java

自研消息队列架构设计文档

菠萝吹雪—Code

架构实战营

进击的速溶咖啡:当中国AI开始玩工业化

脑极体

打破思维定式(二)

Changing Lin

5月日更

Spring-技术专题-设计模式和研究分析

洛神灬殇

spring 设计模式 原理分析 5月日更

采取有效云网络安全策略的5个基本步骤

云计算

MySQL数据迁移那些事儿

Simon

MySQL 数据迁移

哑面爽滑肤感胶浆

C13713145387

哑面爽滑肤感胶浆

牛仔底色保护浆(喷砂工艺)

C13713145387

牛仔底色保护浆

夏季不塞网胶浆、夏季不堵网胶浆

C13713145387

夏季不塞网胶浆

超级全面的测试用例设计,你确定不来看一看?

程序员阿沐

软件测试 测试用例 测试工程师

建筑行业全周期区块链产融平台

CECBC

建筑行业

区块链与物联网融合发展都会有哪些机遇与挑战

CECBC

区块链

Golang实现文件复制的技巧

liuzhen007

Go 语言 5月日更

一次过透气浆、印一次透气浆

C13713145387

透气胶浆 一次过透气浆

Java中用户线程和守护线程区别这么大?

王磊

Java 并发编程 多线程 5月日更

爽面弹力胶浆、哑面弹力胶浆

C13713145387

爽面弹力胶浆

数字资产的发行是全球都无法阻挡的大趋势!

CECBC

数字资产

算法训练营 - 学习笔记 - 第五周

心在飞

展开说说,Spring Bean IOC、AOP 循环依赖

小傅哥

Java spring 小傅哥 ioc 循环依赖

要不要自建工作流引擎?_SOA_Boris Lublinsky_InfoQ精选文章