写点什么

要不要自建工作流引擎?

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

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

关注

评论

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

如何学习Visual Studio Code

博文视点Broadview

学习 读书笔记 vscode 能力提升 编辑器

信创舆情一线--5省发布区块链发展计划

统小信uos

区块链 舆情

ArrayList源码阅读

慌张而黑糖

ArrayList 源码阅读

分布式缓存与消息队列

紫极

数据库分片

Axe

Struct embedding in Go

Interstate5

time.Time dynamodb apigateway Go 语言

依旧乐观的李彦宏,十年寻光的百度AI

脑极体

鲲鹏说:高考之路你们走,高考阅卷我来守

脑极体

typora设置图片自动上传,实现快速发文章

诸葛小猿

Typora PicGo gitee 上传图片

统一物品编码破解追溯“断链”困局

CECBC

CORS 和 CSRF 修炼宝典

Geek_z9ygea

大前端 Web CORS CSRF

Hadoop大数据存算分离下,如何解决新旧存储共存?

XSKY星辰天合

架构师训练营第六周总结

Melo

极客大学架构师训练营

如何通过DDD构建一辆汽车

冯文辉

领域驱动设计 DDD

毕业三年了,我开始明白为什么说三年是一个坎

鄙人薛某

程序员 程序人生 职场回顾

golang内存对齐

PONPON

go内存对齐 Go 语言

数据分析师成长体系漫谈-数仓模型设计

analysis-lion

学习 数据仓库 数据分析 随笔杂谈

开发者必备——API设计问题

Noneplus

阿里四面你都知道吗?

root

Java 程序员 互联网 阿里 简历

为了把握新基建风口,科技公司都在紧密筹备这件事...

极客时间企业版

华为云FusionInsight MRS通过信通院大数据能力评估 单集群突破2万+规模

数据湖洞见

大数据 FusionInsight MRS 华为云

架构师训练营-作业5

紫极

Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车

newbe36524

Docker Reactive ASP.NET Core

人生就是体会矛盾的过程

封不羁

成长 感悟

技术选型课程小结

梅子黄时雨

极客大学架构师训练营

Scala中如何优雅地实现break操作

吴慧民

scala

啃碎并发(七):深入分析Synchronized原理

猿灯塔

Java

这样的二维码,你见过吗?

诸葛小猿

Java Python 后端 二维码 myqr

redis系列之——分布式锁

诸葛小猿

Java redis 分布式 分布式锁

聊聊Spring的IOC以及JVM的类加载

小隐乐乐

kubernetes集群安装(二进制)

小小文

Kubernetes 容器

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