写点什么

《流程的永恒之道》(序):模式是个什么东东?伟大的 Alexander 大师

  • 2014-04-28
  • 本文字数:3402 字

    阅读完需:约 11 分钟

“道可道,非常道;名可名,非常名。”这是我们老祖宗老子《道德经》中开篇的两句话,意思是:可以用语言描述的道,不是真正的道;可以用名字来命名的道,这个名字也不能形容妥当。其终极思想是,由于人的认识的局限性,我们所说的道,都只是真正道的一部分,无法窥见道的全貌。当然老子后来又在《清静经》中说:“吾不知其名,强名曰‘道’”。也就是说:“这个‘道’字虽然不肖,但我(老子)还是先把这个终极真理叫作‘道’好了。”

“道”,可作道理、途径、真理、方向、方法等解释。按照老子的说法,世界万物都有其本质和终极真理,但是“吾不知其名,强名曰‘道’”。在现代,人们已经把“道”作为事物的本质了。

C. 亚历山大 [1] 在其著作《建筑的永恒之道》一书中说:“建筑或城市只有踏上了永恒之道,才会生机勃勃。”亚历山大在书中描述了 253 个建筑模式,并首次提出了“模式语言”一说,算是“模式语言说”的开山鼻祖了。他曾领衔撰写了 5 卷关于建筑设计的丛书 [2],其中前两本《建筑的永恒之道》和《建筑模式语言》最为知名。

很多的技术人员和非技术人员都听过模式,例如管理模式、思维模式、商业模式、建筑模式、设计模式等等,对它有着无限的迷恋。很多行业与领域里也都有模式一说。在软件领域,大名鼎鼎的面向对象的 23 种设计模式更是无人不知,无人不晓。那么,到底什么是模式呢?

模式(pattern)是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,就是模式。它是一种指导,是一种解决某类问题的最佳实践。借助于模式,我们可以利用前人的经验和智慧,做出优良的设计方案,达到事半功倍的效果。模式语言则是模式对应于那些使建筑美妙的深刻观察的模式集合,是对如何建造的认识的总和。建筑的永恒之道正在于建筑模式,在于我们对建筑的认知达到一致,即拥有共同的模式语言。

一点题外话:

按照《建筑的永恒之道》的说法,在古代,农民都是自己造房子,他们自己都有模式的直觉;在工业化时代,人们以为自己不能设计,必须倚靠设计师,而设计师也耽迷于流行的模式而设计出没有活力的东西。所以我们缺少的是模式之道,或者说不知道怎样鉴别什么是有“活力”的模式。如今的软件领域何尝不是如此?我们就见过很多牛逼哄哄、所谓的架构师和设计师,他们讲起模式来一套一套的,但是设计出的软件架构奇烂无比,有的甚至不会将架构转换为框架,实在是比古代的农民差远了。我们认为,做软件的同仁们,如果你想真正地成为一个优秀的架构师或设计师,《建筑的永恒之道》这本书是必读的。它告诉了你什么是道,模式之道。这个道才是灵魂,才是核心。这个道是使之“有活力”,而不是生搬硬套。如果有时间再读读第二本《建筑模式语言》。最后还有个小提醒,优秀的架构师、设计师不是读了几本大师的著作就能成就的,他们也是在 “理论—实践—总结—再理论—再实践—再总结”这样的长时间循环中磨练出来的,而且我们认为这个时间至少要 7-8 年以上。

在《建筑模式语言》一书中,C. 亚历山大将模式分为三个部分:

  • 首先是此类问题所在的上下文(Context),即当前模式所面对问题的周围环境和状况,也就是说,模式在什么状况下发生作用;
  • 其次是动机(Motivation),即此模式的目的或预期的目标是什么;
  • 最后是解决方案(Solution),即为达到预期目标或解决此类问题所采用解决方案的核心。

通过上述描述,我们可以得出结论,模式实质上就是从不断重复出现的事件中发现和抽象出的规律,是解决问题所形成经验的高度归纳总结。只要是一再重复出现的事物,就可能存在某种模式。而当一个领域逐渐成熟时,自然而然就会出现这个领域的模式。借助亚历山大的模式理论,GOF 在软件领域提出了 23 种设计模式。同样,在流程领域也自然而然地出现了“工作流模式”。

本书的名字《流程的永恒之道》套用了亚历山大的经典名言:“流程只有踏上了永恒之道,才会生机勃勃。”那么流程的永恒之道是什么呢?在本书中,我们将会依次为读者讲解三个永恒之道。本章首先讲述第一个永恒之道,即流程万变的永恒之道——工作流模式

工作流模式作为流程的灵魂,是时间无关的(timeless),它与人、文化相关,不会随着时间和新技术的发展而落后,因此可以称之为永恒的。道德经又曰:“道生一,一生二,二生三,三生万物。”把这句话套用在工作流模式上非常准确,工作流模式可以生一,生二,……,最后生万物,演化出无数个不同模式组成的流程。可以说,没有工作流模式就没有流程,工作流模式是流程万变的永恒之道。接下来,我们就围绕工作流模式展开,看看流程万变的永恒之道——工作流模式是怎样来生一、生万物的。

工作流模式的发展历程及分类

在上一节,我们了解了模式,根据模式的通用定义,我们在此给出工作流模式的定义:工作流模式是解决流程类问题的方法论,是解决流程问题的最佳实践。工作流领域同样存在着大量的不断重复出现的事件,从这些事件中发现和抽象出规律,并找到解决这些重复问题的解决方案,对这些问题及其解决方案进行归纳总结,就形成了各种各样的工作流模式。

1999 年,由荷兰埃因霍温大学的 Wil van der Aalst 教授 [3] 与昆士兰大学的 Arthur ter Hofstede 教授联合创立了 Workflow Patterns Initiative,并提出了工作流模式的概念。他们的研究报告于 2000 年在以色列埃拉特举行的 CoopIS 大会上正式发布 [4]。 两位教授一共总结了 21 种工作流模式 [5](其实是指 21 种控制模式)。2004 年,Nick Russell 教授加入了 Workflow Patterns Initiative,并扩展提出了工作流数据模式和资源模式。2005 年扩展出了异常模式,2006 年工作流控制模式被扩展到了 43 种模式 [6]。经过这样的发展,工作流模式被分为了控制模式、资源模式、数据模式、异常模式四大类。

接下来,我们以 2000 年初江南市房管局的“实现房改购房审批流程的自动化,并可以灵活变化”这个业务需求为例,描述工作流模式在具体应用中的实现过程。图 3.1 给出了房改购房审批流程的组成结构。

图 1 房改购房审批流程

从图中可以看出,整个房改购房审批流程由“受理”、“初审”、“公告”、“复审”、“查封核查”、“制证”、“收费”、“发证”等多个环节组成。该流程有明确的作战目标,就是给购房改房的申请人发放“购房证”,其中的每个环节都可以看作是一个作战活动。

这些作战活动的组成是有一定规则的,例如串行、分支、并发等规则,这些规则还有可能经常变化。对于这些规则,在工作流技术中是由“控制模式”来负责的。控制模式负责控制作战活动的组成与流转。

在接下来的两篇文章将分别讲述工作流控制模式中的串行、并发分裂、并发汇聚、单选分裂与单选汇聚几个模式。本系列文章总共 8 篇,工作流模式 3 篇文章,BPM 的生命周期 3 篇文章,流程治理方面 2 篇文章,具体如下:

工作流模式相关:

《流程的永恒之道》(序):模式是个什么东东?伟大的 Alexander 大师;

《流程的永恒之道》(一):控制模式之串行、并发分裂及并发汇聚模式;

《流程的永恒之道》(二):控制模式之单选分裂与单选汇聚模式;

BPM**** 的生命周期相关:

《流程的永恒之道》(三):BPM 的生命周期之设计四步曲;

《流程的永恒之道》(四):BPM 的生命周期之执行阶段;

《流程的永恒之道》(五):BPM 的生命周期之优化阶段;

流程治理相关:

《流程的永恒之道》(六):战略与 BPM 之间鸿沟的出现与分析;

《流程的永恒之道》(七):战略与 BPM 之间鸿沟的填补—引入 BPM 治理;


[1] C. 亚历山大是一位实践经验丰富的建筑师和营造师,加州大学伯克利分校建筑学教授,环境结构中心的负责人,曾获得美国建筑师学会颁发的最高勋章。
[2] 《建筑的永恒之道》、《建筑模式语言》、《俄勒冈实验》,《城市设计新理论》,《住宅制造》5 卷丛书。
[3] Wil van der Aalst 教授不仅是 Workflow Patterns Initiative 组织的创建者,还与 Kees van Hee 教授合著了 _WorkFlow Management-Models,Methods,and Systems_(2002 年,麻省理工学院出版社)一书。其中文版《工作流管理 - 模型、方法和系统》由清华大学出版社于 2004 年出版。
[4] http://coopis.sjtu.edu.cn:8080/cisg/。
[5] http://is.ieis.tue.nl/research/patterns/patterns.htm。
[6] 参见本书附录 I,工作流控制模式


感谢张龙对本文的审校, 感谢张龙对本文的策划。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-04-28 23:154490

评论

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

Android C++系列:访问Assets 文件夹

轻口味

c++ android jni 11月日更

【Promise 源码学习】第九篇 - Promise.resolve 和 Promise.reject 的实现

Brave

源码 Promise 11月日更

详解低延时高音质:丢包、抖动与 last mile 优化那些事儿

声网

音频体验 RTE技术详解 last mile 优化

大数据训练营一期0919作业

朱磊

dart系列之:在dart中使用packages

程序那些事

Java flutter dart 程序那些事 11月日更

消息队列表结构设计

guangbao

使用 JavaScript 创建和下载文件

devpoint

JavaScript File Blob 11月日更

大数据训练营一期0908作业

朱磊

面对DNS劫持,只能坐以待毙吗?

阿里巴巴云原生

阿里云 云原生 云拨测 DNS劫持 产品活动

【Flutter 专题】06 图解基础【登录】页面并学习相关 Widget

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

技术改进项目的质量保障思路

QualityFocus

架构 软件测试 自动化测试 质量保障 技术改进

HW3 - 外包学生管理系统架构文档

WWH

架构实战营

TypeScript 是弱类型

HoneyMoose

Apollo选型及优势介绍

小鲍侃java

11月日更

Golang Gin 框架参数解析介绍(三)

liuzhen007

11月日更

TypeScript 类型系统

HoneyMoose

Podman是什么

耳东@Erdong

容器 11月日更 Podman

KubeMeet 深圳站完整议题出炉!快来 get 云原生边缘计算硬核技术干货

阿里巴巴云原生

阿里云 云原生 边缘计算 KubeMeet 线下活动

linux实战清理挖矿病毒kthreaddi

入门小站

Linux

flutter开发中vscode插件推荐1

坚果

flutter vscode 11月日更

Vue进阶(幺玖幺):ECharts 实现地图功能

No Silver Bullet

Vue eCharts 11月日更

MVCC的机制初识

卢卡多多

MVCC 11月日更

Pulsar的Chunk Message原理剖析

Zike Yang

Apache Pulsar 11月日更

进击的Java(八)

ES_her0

11月日更

版本化ASP.NET Core WebApi

喵叔

11月日更

大数据训练营一期0829作业

朱磊

在线极限词,敏感词,违禁词查询工具

入门小站

工具

ThreadPoolExecutor 任务提交原码分析

new life

ThreadPoolExecutor

架构训练营 - 模块四

Geek_9de3de

架构实战营

火出边际的Serverless,你居然还不了解?

华为云开发者联盟

云计算 Serverless 运维 云原生 敏捷

博文推荐|Pulsar 的消息存储机制和 Bookie 的 GC 机制原理

Apache Pulsar

存储 Apache Pulsar 消息中间件 Apache BookKeeper bookie

《流程的永恒之道》(序):模式是个什么东东?伟大的Alexander大师_语言 & 开发_辛鹏_InfoQ精选文章