最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

要不要自建工作流引擎?

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

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

关注

评论

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

一线城市年轻人生活工作实录(程序员篇)

Marilyn

敏捷开发 开发者工具 快速开发

有了TA,领域外企业里的小IT团队,也能轻松搞定大型项目

Marilyn

敏捷开发 快速开发

JVM-技术专题-Java类文件结构

洛神灬殇

Java JVM

从哲学源头思考自动驾驶网络架构设计

华为云开发者联盟

自动驾驶 架构

苦难过后,终会团聚

hellocj

年轻人大企打拼多年,刚升迁便遇巨大阻力难以解决,到底如何才能在职场中幸存?

Marilyn

敏捷开发 快速开发

高难度对话读书笔记—聆听篇

wo是一棵草

拜托,学妹,别再问我怎么自学 Java 了!和盘托出

沉默王二

Java 自学编程

百度人工智能OCR调用调试过程

tuuezzy

我和我的智能联接

脑极体

第三周作业一

dll

WSDM Cup 2020大赛金牌参赛方案全解析

华为云开发者联盟

大数据 搜索 信息

图扑软件联手阿里Lindorm数据库开启工业物联超融合存储模式

许力

IoT AIOT

在线教育企业迎来“秋招”大考,数字用户体验成胜负关键手

博睿数据

运维 APM 在线教育 AIOPS 用户体验

亚马逊Prime会员日火爆开启一站购全球逾3000万正品商品

爱极客侠

个人数字人民币钱包即将亮相

CECBC

央行 数字人民币

微前端之如何拆解React巨石应用 qiankun

SugarTurboS

项目管理 架构 大前端 React

JVM-技术专题-对象的实例化过程

洛神灬殇

Java JVM

The story of programmers in famous enterprises.

Marilyn

敏捷开发 快速开发

医疗AI系统构建(1)one-hot编码

刘旭东

人工智能 学习 医疗AI one-hot

LeetCode题解:94. 二叉树的中序遍历,使用栈,JavaScript,详细注释

Lee Chen

大前端 LeetCode

OpLog4j

Geek_746da6

一线城市年轻人生活工作录(业务员篇)

Marilyn

敏捷开发 快速开发

华为云专家讲述知识图谱构建流程及方法

华为云开发者联盟

华为 数据 知识图谱

JVM-技术专题-类加载机制

洛神灬殇

Java JVM

来喽,来喽,Python 3.9正式版发布了~~~

华为云开发者联盟

Python 编程

OKR-VUCA时代目标管理利器实践分享

张兆东

Programmatic Navigation using SwiftUI| 使用SwiftUI进行程序化导航

Daniel

国外的公司都是如何对待大龄程序员的?在国内该如何应对?

Java架构师迁哥

Lindorm云原生数据库 - 让数字时代IT运维系统“灵动”起来

许力

DevOps APM Data Lake AIOPS

图解 K8S 源码 - Informer 篇

郭旭东

Kubernetes Kubernetes源码

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