流程自动化实战:系统架构和软件开发视角
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

我清晰地记得,20年前为朋友编写一款商业软件时,我决定选用一个由Java实现的小型开源工作流引擎。这个决定改变了我的人生。我对流程自动化产生了巨大的热情,并投身于那个开源项目的社区中。最终这段经历促使我创立了自己的公司,后来它成为提供开源流程自动化工具的头部厂商。本书的目标并不只是分享我对流程自动化的热情,也是诠释流程自动化如何在现实世界中以实用且开发者友好的方式进行应用。

开始正文之前,我先讲一件逸事。在高中时,我的一个好朋友开始创业,开了一家专卖显卡的零售店。如果你曾经组装过计算机,可能会对一类特殊的显卡有印象。这类显卡在做一些改动后可以超频,让游戏玩家可以用低价购买的显卡获得更好的性能。这种商业模式要求经营者把每种显卡都当作独立的品类,并为每种显卡建立特定的销售和发行流程。

这种商业模式曾一度让我的朋友赚到很多钱,可以说是非常成功,甚至让以人工和电子邮件为基础的流程都崩溃了。订单积压,成堆的显卡和被退货的包裹挤满了整个屋子。

我们讨论了一番补救措施,最终决定开发一款定制软件,既可以将部分流程自动化,又可以满足该店特有的商业模式。这个软件的功能虽然很少,但却很有针对性,帮助该店解决了所有积压的事务。处理周期缩短了,订单可以在一天内发出。重新设计过的人工操作简化到仅与实体货物相关(例如打包过程),其他任务则被自动化(自动生成并打印订单和物流标签,发送给顾客确认,等等)。我们甚至提供了一个简单的自助查询网站,让消费者可以自助查询,以便直接了解订单的状态。如果一个流程卡住太久,这个软件会将问题上报,这样就可以不必等到客户投诉后再采取措施。总体上说,它作为一款定制软件还是非常成功的。

我亲身体验到了流程自动化的优势,但那时的我绝对不会这样说:它提高了流程质量,缩短了运行周期,让枯燥的任务自动化,可以自动扩缩容,以及缩减了运营开支。

在接下来的20年中,我所见过的行业,其核心流程和支持流程都是自动化的。我看到NASA在地球上使用流程自动化系统处理火星机器人返回的数据,再将控制信号发送到太空中。我看到过保险公司的自动出险理赔系统,通过应用程序上报事故并完全自动处理这些报告。我还看到过流程自动化技术被用于电信行业的交易、转账等流程中。我甚至见过由工作流引擎所控制的实验室机器人。

令人激动的是,自动化无处不在,对自动化的需求日益增长。数字化转型正在发生,全新的商业模式正在产生,它要求公司从根本上改变业务流程。近几年,新冠疫情使这个问题成为焦点:企业需要在近乎一夜之间将签署文件的流程从面对面处理转为在线处理;公司需要将过去不常用的流程补全,例如,航空机票的退改签;一些组织迅速地转向新的商业模式,比如口罩的分发。

这些只是大趋势中的几个案例,这个趋势被Gartner称为“超自动化”(hyperautomation)。

这些公司走上这条转型之路的原因有很多:现有的流程可能是低效、缓慢、昂贵、不可规模化或不够灵活的,无法支撑新的商业模式。从商业走向中获得有可行性的洞察需要数据,那些手动执行或自动化程度较低的流程,它们所获取的数据不足以支撑企业深入理解正在发生的事情。这让企业相比那些早已拥抱数字化和自动化的竞争对手显得更加脆弱。

流程自动化典型的处理过程需要根据企业的需求来定制。因此,企业无法买到一个开箱即用的应用软件。即便不同企业间有一些相同的流程(例如,消费者登记、订单管理、理赔),为了适应细分市场,每个企业设计实现它们的方法都是独一无二的。流程自动化使组织更有竞争力,可以更有效地开展业务,节约成本,增加收入,推进数字化转型。

你很可能就在这样一家公司工作,也许是作为软件架构师、企业架构师、商业分析师或开发者。流程自动化会是你工具箱中的一把利器。

我在流程自动化领域20年的一手经验都写在本书中,希望帮助你走上自动化之旅。

流程自动化工具与技术

从普通软件开发到批处理,再到事件驱动的微服务,以及其他你能想到的开发实践,有很多方法可以实现流程自动化。

不过流程自动化有其独特的特征和需求,有些软件专门为了解决这些问题而设计。分析师依此定义了与流程自动化相关的细分软件市场:数字流程自动化(DPA)、智能业务流程管理套件(iBPMS)、低代码平台、机器人流程自动化(RPA)、微服务编排、流程编排、流程监控、流程挖掘、决策支持和自动化。

所有不同类别的软件都提供了相应的工具和技术,以帮助企业进行业务定位、流程自动化和业务改进。这些流程可以包括人员、软件、决策、机器人和物品。

这些内容涵盖的范围相当广泛。那本书关注的重点是什么呢?

本书涵盖的范围

本书首先讲述流程自动化如何应用于现代系统架构和软件开发实践。然后研究工具要具备什么样的支持度,才能成为每个开发者工具箱的重要组成部分。最后展示一个轻量且开发者友好的工作流引擎才是实现这一目标的核心组件。本书将对这些进行非常详细的说明。

在此过程中,我们还将讨论一些典型的误解。正如一些人预期的那样,工作流引擎在软件开发中并不罕见。虽然来自大厂的工具和分析师报告均不侧重于开发者也对开发者不友好,但正如你将在本书中看到的那样,现在仍有可替代的工具。其中一些可能无法归类到前面提到的分类中,但有一些是可以的。

我不会花很多时间讨论分析师对流程自动化软件的观点,而是专注于在现代架构软件开发的背景下就工作流引擎提供实用的建议。在这方面,我将综合来自微服务、事件驱动系统及领域驱动设计的思想。

相信本书会给你带来有关流程自动化的新视角。

本书的目标读者

本书针对的是想要了解流程自动化的软件开发者、软件架构师和系统架构师。

你可能更喜欢被称为软件工程师,而不是开发者,这完全没问题。但是在本书中,我选择使用软件开发者一词。

如果你是软件开发者,可能希望在应用程序、服务或微服务中使用工作流引擎来解决实际问题。本书将帮助你了解工作流引擎可以为你解决哪些问题,以及如何开始。

如果你是系统架构师,本书将帮助你了解流程自动化的机遇与陷阱。它将协助你完成一些艰难的架构决策和权衡,包括使用工作流引擎与替代方案的横向对比,以及工作流引擎是否应该采用集中式运行模式。

以下人员阅读本书同样可以受益:

• 如果你是IT经理,本书可以帮助你做出更明智的决策,并在公司内部提出合理的问题。

• 如果你是业务分析师,本书可以帮助你突破原有的思维框架并理解技术侧的概念。

总体而言,阅读本书你只需要软件工程领域的一些一般经验,并不需要其他特定的知识。

架构师总有实现方案

如果你无法展示具体的示例代码,只讨论概念,那乐趣会减少一半。可运行的代码迫使你变得精确,去思考那些概念层面可能忽略的细节——最重要的是,它通常能更好地解释概念。我个人很喜欢一个座右铭:“架构师总有实现方案。”当然,从坏的一方面讲,我必须决定使用一种具体技术(可能不是你正在使用的技术)和产品(可能已经是过时的产品)。我试图尽可能保持厂商中立原则,但作为流程自动化厂商Camunda公司的联合创始人,我当然固执地倾向于使用我最熟悉的工具,即我公司提供的工具。

我的观点当然也会影响我们的产品,所以本书的内容不可避免地会和我们的产品有一些结合。但作为一个在现实世界中对流程自动化着迷20年的人,本书基于与一线客户交流形成的观点。

在某些地方,我会使用可执行的源码,因为其他形式会使某些概念更难理解。在这些案例中,我使用了Camunda的流程自动化平台。

配套网站和示例代码

除本书外,你还可以在https://ProcessAutomationBook.com上找到可供下载的补充材料(如示例代码)。可运行的源码在GitHub上,上述网站中包含了这些链接。

这些示例不仅将帮助你更好地理解书中描述的概念,还让你在厌倦阅读时有机会研究技术。

这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O'Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O'Reilly的示例代码则需要获得许可。引用本书的示例代码来回答问题也不需要许可,将本书中的很大一部分示例代码放到自己的产品文档中则需要获得许可。

非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处时包含书名、作者、出版社和ISBN,例如:

Practical Process Automation,作者Bernd Ruecker,由O'Reilly出版,书号978-1-492-06145-8。

如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permissions@oreilly.com联系我们。

反馈

我乐于通过feedback@ProcessAutomationBook.com接收任何反馈。

如何阅读本书

一般来说,我建议你先按顺序阅读第1章和第2章。它们为你提供了一些基础知识,包括理解本书涵盖的范围以及它如何适用于你的场景。

读完前两章,你可以正常地继续阅读,也可以快速预览你最感兴趣的章节。当然,本书有贯穿前后的逻辑,不过我试着交叉引用,避免你因跳过某些部分而不易理解。

尽管如此,我还是可以给你推荐一些非顺序的阅读路线:

• 如果你过去在业务流程管理(BPM)方面有过糟糕的体验,可以先阅读1.9节,以确定本书是适合你的。

• 如果你有事件驱动系统的经验,并认为自己不需要服务编排系统,那么可以先阅读第8章,以更好地了解本书是否适合你。另外还请阅读第2章,以更好地了解我所说的流程自动化是什么意思。

• 如果你是微服务或领域驱动设计(DDD)的拥护者,那么可能会对流程自动化如何融入这个世界持怀疑态度。我建议你先行阅读第7章,因为该章较好地展示了本书关于流程自动化的思想与该领域的许多传统方法有何不同。

• 如果你是一名被迫介入业务或流程自动化项目的惊慌失措的IT经理,可以先阅读第12章,因为该章可以为你提供一些关于如何设计整个项目的指导。

• 如果你愿意按照我的建议使用基于BPMN的工作流引擎,则可以跳过第5章。

排版约定

本书中使用以下排版约定:

斜体(Italic

表示新的术语、URL、电子邮件地址、文件名和文件扩展名。

等宽字体(Constant width)

用于程序清单,以及段落中的程序元素,例如,变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。

该图示表示提示或建议。

该图示表示一般性说明。

该图示表示警告或注意。

O'Reilly在线学习平台(O'Reilly Online Learning)

40多年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。

我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O'Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com

如何联系我们

对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。

美国:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn

本书配套网站https://oreil.ly/Practical_Process_Automation上列出了勘误表、示例以及其他信息。

关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com

我们在Facebook上的地址:http://facebook.com/oreilly

我们在Twitter上的地址:http://twitter.com/oreillymedia

我们在YouTube上的地址:http://www.youtube.com/oreillymedia

致谢

感谢所有帮助完成本书的人。首先是我在过去10年中遇到的所有人,例如在Camunda社区、客户项目或会议上遇到的人。无数的讨论帮助我了解了流程自动化的世界,持续的反馈不仅塑造了Camunda平台,也让我写作了本书。

感谢Camunda的每个人。Camunda不仅是一个超棒的工作场所,还有一帮超棒的同事在一同改变流程自动化的世界。我们在公司取得的成就远远超出了我们共同创立公司时的梦想。而且每天仍然有很多乐趣,让我们继续前行。

感谢我的好朋友Martin Schimak,本书最初的想法是他帮助我确定的,他也是本书结构的最佳讨论对象。我也非常感谢所有提供非常有价值的反馈的优秀技术审校者。他们投入了大量时间来帮助优化本书,由衷感谢(按姓氏字母顺序排列)Tiese Barrell、Adam Bellamare、Rutger van Bergen、Joe Bowbeer、Colin Breck、Norbert Kuchenmeister、Kamil Litman、Chris McKinty、Surush Samani、Volker Stiehl等。

当然,也感谢我的家人,感谢他们在忍受疫情时还能包容我写作本书。感谢O'Reilly的整个团队成员,他们让本书得以顺利出版。