直播预约通道开启!2021腾讯数字生态大会邀您共探产业发展新机遇! 了解详情
写点什么

要不要自建工作流引擎?

2009 年 7 月 17 日

现在,越来越多的人意识到在解决方案中引入工作流的重要性。然而,在面临如何具体实现的时,自建亦或是使用(现有工作流)?争论仍在继续。在 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 年 7 月 17 日 01:5017018
用户头像

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

关注

评论

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

一文带你深入理解Java内存模型,小白也能看得懂!火速收藏!

java专业爱好者

Java Java内存模型

自制深度学习照片数据集

re-执着

专科出身,2 年进入苏宁,5 年跳槽阿里,论我是怎么快速晋升的?

Java技术架构

Java 面试题 阿里 面经 苏宁

就这一次,20张图带你彻底击溃Redis跳表

程序员小毕

Java redis 程序员 数据结构 面试

就是它,帮我斩获了8家大厂offer,由于太全被各大厂要求Github连夜下架

Java架构师迁哥

人民网发文:区块链如何跨越未来10年

CECBC区块链专委会

Redis让我凉在美团一面,摸爬滚打3个月,二战逆袭成功斩获Offer!

不秃顶的Java程序员

Java redis 程序员 架构 美团面试

爆肝分享!华为“百万级”大佬的 MySQL 笔记(基础 + 优化 + 架构)统统一键搞定!

Java技术架构

Java MySQL 华为 笔记

YOLOV1解读

re-执着

linux网络编程—7层网络以及5种Linux IO模型以及相应IO基础

Linux服务器开发

网络编程 后端开发 Linux服务器开发 网络模型 IO模型

全网首发!“阿里爸爸”最新出品SpringBoot高级笔记(内部笔记!)

Java 白

Java spring

这不得学一手?阿里大佬爆肝!分享出来的“Java 架构核心宝典”

Java技术架构

Java 阿里 架构师 核心宝典

傻眼!25分类227页1000+题50w+字的绝版“java高分面试指南”现世!

不秃顶的Java程序员

Java 程序员 架构 面试总结

腾讯二面:Linux操作系统里一个进程最多可以创建多少个线程?

Java王路飞

Java Linux 程序员 面试 操作系统

滴滴出行APP下架:ipfs有什么应用前景?

v:IPFS456

滴滴出行APP下架 ipfs有什么应用前景?

数字货币大趋势,DC EP出征,带老百姓进入新时代!

CECBC区块链专委会

fil挖矿成本如何?fil挖矿收益怎么计算?

投资矿机v:IPFS1234

fil挖矿收益怎么计算 fil挖矿成本如何

DICOM--网关(路由器/适配器)

鸟哥

医学影像 DICOM PACS dicom4che DICOMWeb

数据安全法下,企业如何平衡数据安全合规与业务性能?

腾讯安全云鼎实验室

数据安全 数据安全法

《持之以恒的从事运动》三

Changing Lin

面试官问的那些Android原理你都懂吗?快来收藏!

欢喜学安卓

android 程序员 面试 移动开发

啊!还有这种事情?阿里大牛的架构速成笔记!七大专题,1425 页考点,被分享出来了

Java技术架构

Java 阿里 架构师 笔记 架构成长笔记

开源即巅峰!阿里首次分享:Java架构师全栈“成长笔记”

Java架构师迁哥

CDH 安装搭建(二)

大数据技术指南

CDH 7月日更

Hive学习笔记(一)

五分钟学大数据

hive 7月日更

7月6日fil币价格今日行情如何?fil币最新消息是什么?

投资矿机v:IPFS1234

fil币价格今日行情如何 fil币最新消息是什么

灵魂拷问:我们该如何写一个适合自己的状态管理库?

尔达Erda

开源 云原生 前端 API 运维开发

iOS端屏幕录制开发指南

anyRTC开发者

音视频 WebRTC ios开发 音视频开发 屏幕录制

面试官问的那些Android原理你都懂吗?值得一看

欢喜学安卓

android 程序员 面试 移动开发

CODING 助力推进腾讯游戏国际化进程

CODING DevOps

开发工具 CODING DevOps 腾讯游戏 软件研发

区块链互操作性:大规模应用的关键

CECBC区块链专委会

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

要不要自建工作流引擎?-InfoQ