写点什么

一种适用于真实世界 BPM 的协作方式

  • 2010-08-25
  • 本文字数:4906 字

    阅读完需:约 16 分钟

我们在业务流程管理(BPM)领域里摸爬滚打已经很多年了,最近看到人们对它的关注不断提升,这是非常有趣的一件事。对这一趣事儿起催化作用方面的有,工具的日渐成熟、新 BPMN2.0 规范的形成、以及更多更好的相关出版物带来的人们对 BPM 的进一步理解,它们代表着 BPM 领域内最重要的进步。

厂商提供了越来越高精良的图形化工具以及由其承诺的业务流程实现自动化,无需任何编码甚至开发者参与;然而,我们也发现了使用这些“传统”的以厂商为中心方法的一个问题:它们并未履行任何承诺!

我们以前的一些项目可以佐证以上观点。公平起见,既然这些工具大都会面临相同的基本问题,就不具体点名是什么工具了,有个同事不得不使用一个小的 Web 界面工具来实现一个简单的流程。这个工具提供了一个特有的、神奇的可拖放界面设计器,刚开始用似乎还比较方便,但当我们项目快要结束时,出现了一些需要对表单上的数据进行细微校验的需求,而这个“神奇的”工具并不提供该功能。为了规避这些局限性,我们花了比使用简单的 JSF 实现整个界面更多的时间去搞这个设计器,不管怎样,我们最后还是搞定了。

在另外一个客户那里,某个开发者曾告诉我说,“他花了两天多时间尝试对一些特殊需求进行建模,而他本可以用 Java 在半小时内直接实现的!”还有一个客户尝试运行交易服务和有状态服务,而这不幸需要以 Web 服务方式调用服务。在使用 WS-Addressing,WS-AtomicTransaction 等标准进行实验并试图拼接一些框架之后,基本上他放弃了整套 BPM 工具。

而下一个客户在竞标初期就将厂商踢出了局,因为他们需要更多的资金以便自己提供一套 Java API。

所有这些例子有一个共同点:工具使得开发者的工作更困难而非更简单!这些工具没有减少开发所需的时间和金钱。它们对使得业务和 IT 相契合并没有提供进一步的帮助,这是因为所需的技术模型非常复杂以至于不能和业务流程模型完全相一致。你有看过 BPEL 模型(所制作的流程图)和业务人员最初所画的流程图有任何共同之处的吗?

那么,BPM 不起作用吗?难道业务和 IT 契合始终是一个神话?当然不是!话虽如此,我们却不得不反思我们做 BPM 项目的方式。经过过去几年的不断反思,我们找到了 BPM 在真实项目中的运作之道。

简单说来,BPM 更多地关注流程的协作以及充分考虑协作过程中参与的不同角色,并使人们按照他们期望的方式工作。因此,它不太以工具为中心,因为就算我们需要用工具,也应该是工具来适应我们的工作方式。我们必须结束那种工具强迫我们按照厂商规定的方式来工作的情况。不同的角色使用不同的工具,所以不存在独一无二的工具。虽然这看起来显而易见,但许多工具还是试图与此背道而驰。

为了能够使得业务和 IT 相契合,我们开发了一种使用 BPMN(业务流程建模和标记)的方法论。它以流程模型为中心实现协作,我们可以进行讨论并将需求、业务规则或其他物件连接起来、使开发状态形象化、使业务驱动的测试场景得以细致明确等等。它不仅仅可以对可执行的流程进行建模,而且还对周边“池”中的各组织的视角进行建模,以使业务和 IT 视图相契合。

因此,BPMN 提供了一种很大的可能性:“池”。“池”的使用为用同一种模型来构建“业务特有的”和技术的两个方面,并为设置二者间的正确的关系提供了可能。在我们的中对此进行了详细的描述,并且在官方 BPMN 样例文档中提供了一个例子。你也可以通过我同事写的一篇博文弄明白我现在所表达的意思。总之,我们把那些看作BPM 的真正价值,而不是业务人员“描画”可执行的流程。

我们已经在一些客户那里实践过这种方法,有些客户甚至还在使用Microsoft Visio 工具。当然了,在过去几个月里,我们也开发了工具在几个试点客户那印证这种方法,其中最重要的一个大项目是为一家大型德国电信公司做的。目前,我们以通过camunda fox 开源项目发布所有资料,其第一版本将很快会公之于众。我们希望分享我们的经验,通过讨论吸收新观点,并帮助BPMN 规范以得以正确采用。那样它就会为每个人创造真正的价值,而不仅仅是为那些工具厂商的银行账户增值;-),如果顺利的话,我们可以跳过Gartner 的技术成熟度曲线理论中所谓的“幻灭期”,尤其针对BPMN 2.0 而言。

让我们更具体一点看看我刚刚提到的那个电信客户项目。当时我们所面临的环境仅仅是使用了许多EJB、一些JMS 以及有限数量的JBoss ESB 服务的Java EE。流程还没有进行统一文档化,业务部门大多采用事件驱动流程链(EPC)的方式,而IT 人员尽一切所能使用了UML、Power Point 等等。我们的目标是针对业务和IT,通过引入BPMN 作为建模标记,使其成为保持模型的技术化和业务流程同步的桥梁。

我们最终达到了我们的目标!但当时是举步维艰,必须按部就班……

技术上讲,一个“超级棒”的JBoss SOA 平台启用,这意味着可以部署可执行流程已到JBoss jBPM 3.2 这一著名的开源流程引擎上。我们在几次不成功的尝试使用BPEL(其实并不适合技术环境)后做出了使用jBPM 的决定。主要的原因根本在于那些服务不能作为Web Services 来用,工具也不足够成熟,价格太昂贵并且也缺乏技术诀窍。因此,jBPM 是一个不错的选择,它可以让现有的Java 开发人员很快上手使用,并且对开发过程的影响也非常之小。在此我要特别要指出非常重要的一点:类似 JBoss jBPM 或者不久前的 Activiti ,这样的开源流程引擎对开发人员来说更像是某种框架或库,而不是一个完整的产品套件。它们可以容易实现客户化定制并集成到你自己的架构中。它们支持单元测试,理解起来也很容易。

记住:我们希望给不同的角色提供其所需的工具。开发人员乐于接受 Java、Eclipse、JUnit、Subversion、Maven 等工具。因此他们应该能够继续使用这些工具!

业务分析人员有一个商业化工具 Signavio edition 在手,这是这些业务人员乐于使用的工具。而开发人员并不一定要使用它,因为访问存储模型的方式是多种多样的,你可以任意选择。

问题是:“如果我们用不同的工具而它们使用不同的存储库,那么如何才能使这些(工具产生的)模型同步呢?”解决办法也很简单:我们在不同的工具和存储库之间创建了一个粘合“层”。这一粘合包含了一个简单 web 应用,它能够访问存储流程模型的 Signavio 存储库和存储技术工件的 SVN 的。基于工件的不同类型,我们做不同的特殊处理。比如从 Signavio BPMN 模型生成 jBPM 模型。这种粘合层已经成为了 camunda fox 的一部分,下面将对此展开具体讨论。

保持业务流程模型和技术流程模型一致是非常重要的,因为这是保持流程模型版本最新的唯一方法。这极其重要,不仅仅出于归档目的,也是为了在业务流程模型一级报告 KPI(关键性能指标)或类似指标。当然,我们可以使用相对容易的粘合层达到该目标,而无需所谓的高度精良的零代码工具。

为了说明粘合层怎样发挥作用,我会列举几个截屏来演示。试想某个业务分析师创建了一个业务流程模型,并且已经完成了第一次迭代。他想要将其递交给 IT 团队以便实现该流程。他通知了技术项目头头告诉他可以开始工作了,这只需通过电子邮件发送一个链接就可以轻松搞定。好了,那现在该项目的头儿有活儿可干了,他需要对 BPMN 模型做一个操作以便在 SVN 中创建一个开发项目。这一操作可以通过项目模板来完成,而此模板是由一个从 BPMN 模型所创建的 jBPM 流程定义来生成的。我们通过一种自己实现的“特殊的映射”来实现该模板。所涉及的基础映射可以延展到全公司、整个部门、甚至是某个具体项目的规范和模式。即便是 BPMN 2.0,使用映射也是有意义的,在我的博客中你也许能找到其中的原因。

接下来,开发人员开始工作,完成所有那些另人繁琐的技术细节,在流程中加入所谓的ActionHandlers,它在流程运行的整个过程中负责执行Java 代码。这感觉基本上和其他Java 开发项目没什么区别了。

流程没有必要一定要部署到SOA 平台才能测试,正常的JUnit 测试、持续集成等等都可以。总之,常规的Java 和jBPM 开发都没问题。:-)

你可能已经猜到Signavio 和jBPM 模型之间的连接在后台保存。所以一旦开发者有更改行为,我们就可以在camunda fox(web 应用)中看到。并不是所有更改所引起的变化都应该合并在BPMN 模型中,所以开发人员需要向业务分析人员发送邮件或安排一个切实的会议进行通知。他们可以使用fox GUI 来发现简单的区别并将这些更改复制回Signavio 存储库中。

事实证明那种方法很奏效。在项目最后,我们所使用的描述性的BPMN 图和可执行jBPM 流程实现了同步。而大家喜欢它的原因各不相同:BPMN 在业务部门得到认可,而这种及时更新的流程描述确实大受欢迎。这种轻量级的开源流程引擎在开发过程中很实用,并且对Java 开发人员来说很直观,我认为这是极为重要的一点。正是两者之间的粘合增加了原本缺乏的关联。与此同时,我们在另一个客户的不同项目中也尝试了该方法,并且结果证明同样非常有效。但是请记住这种方法只是个样例;如果你尝试不同的做法,尽管去尝试——使用适合的工具来配合你的需求!

接下来,我们尽力争取另一个“唾手可得”的硕果。因为在不同的模型和粘合层之间有了一个链接,我们就可以有一个中心入口点去提供流程的概貌。我们可以得知有哪些流程版本,哪个版本发布在业务端,哪个BPMN 版本作为jBPM 流程来部署到引擎,以及在引擎上并行运行着哪些不同的版本等等。

就算在引擎上,也可能存在不同版本的流程同时运行。这些链接也可以显示一些用来测量运行在jBPM 引擎上的流程在BPMN 级别的KPI。如下图所示。

坦白地讲,我们在这儿所做的只是冰山一角!将此作为出发点,有无限的可能对粘合层进行扩展。一个有趣的方向是对分布式团队(比如离岸外包项目)进行支持。这种情况下你需要更多的交互功能。这些功能包括比如讨论流程模型并归档关联的讨论邮件。这离构建一个通用访问点访问存储库和工件,能够让它们互相标示、连接或与流程模型连接起来的想法只有一步之遥。这使得以Word 文档记录的项目订单实现可追踪性,并且可以在网络硬盘上保存BPMN 图形和技术模型。目前我们正在开发一些不同类型的标示和虚拟文档以期提高客户体验和整体感觉。你可以通过查询 Activiti Cycle Vision 继续了解这方面类似的发展方向。

一个更有趣的方向,也是我们想要在接下来的客户项目中攻克的是提供更好的流程测试支持,这在我的博文中有所描述。还记得我提到过我们目前正在做的一个数据流原型吗?它能够动态显示被处理数据的数据流,该数据在BPMN 级别上依附于流程的Java 类中使用或产生。

这种数据流原型会特别便于使用,如果你要实现“只需”调用服务的高度自动化流程,你会花大量时间纠结于这么一个问题:“我需要哪个数据,而这个数据是由谁在何处创建的?”最后,也是最重要的是,我觉得将流程和规则相结合具有巨大的潜力。不是什么新鲜事儿是吧?开放的粘合层使得你很容易地在业务级别通过决策表来创建规则,并且把规则和BPMN 流程模型关联起来。在可执行流程中,这归结为Java 代码的一小部分,比如说,JBoss Drools,一个绝妙的开源规则引擎。虽然一些大的厂商已经提供了类似的东西,但是我们的方法也将会把这一功能引入到开源世界中。

希望我已经描述清楚了如何使得业务流程模型和技术流程模型同步这一想法。我想要概括的是有一种实用的方式创建一些简单的工具来支持你所需要的方法。此外,既然它是开源的,并且具有可扩展性,那么你就可以利用它来实现你自己的想法,扩展它以满足你的需要。我们已经有了使用这种方法的良好经验,而我们也将会继续开发camunda fox,在未来不断的试点项目中与客户携手一起努力。

当然,camunda fox 也不是什么灵丹妙药 ;-) 但是如果你的项目里用到了(Java)开发,那我认为值得你花时间去尝试使用camunda fox 并给我们提供反馈意见!我们每天还在学习很多新东西,而我很好奇我们最终会在哪里停步。我坚信,不管怎样,我们投入的所有精力终将会得到一个截然不同的方法用以开发以流程为中心的应用。好消息是:我认为这对大家都有好处:-)

查看英文原文: A collaborative approach for real-world BPM


感谢马国耀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-08-25 00:005265
用户头像

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

关注

评论

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

低代码实现探索(十七)前端种草点

零道云-混合式低代码平台

【伙伴故事】一盏智能灯,点亮家庭和工业照明的新未来

华为云开发者联盟

物联网 华为云 AIOT PLC 智能照明

MobTech观察 | CSDN:企业数字化转型如何提升段位?杨冠军畅谈企业数字化前世今生

MobTech袤博科技

数据分析 数字化转型 数据治理 企业 数据可视化

4种Spring Boot 实现通用 Auth 认证方式

华为云开发者联盟

拦截器 spring-boot Auth 传统AOP 参数解析器

喜讯!Apache APISIX Committer 张晋涛当选「中国开源先锋 33 人」

API7.ai 技术团队

云原生 微服务网关 APISIX 网关

零数科技入选毕马威中国“2021领先金融科技50企业”

科技热闻

构建面向异构算力的边缘计算云平台

火山引擎边缘云

gpu 云原生 边缘计算 算力

研究完PagerDuty,我发现一款好用的国产告警管理软件

睿象云

DevOps 运维

零数科技入选毕马威中国“2021领先金融科技50企业”

科技热闻

利用 Amazon Batch 来为容器化负载调用海量云端算力

亚马逊云科技 (Amazon Web Services)

计算

面试官: Flink双流JOIN了解吗? 简单说说其实现原理

华为云开发者联盟

sql flink join 双流join 数据库SQL

MASA Framework - EventBus设计

MASA技术团队

C# .net 微软 框架 Framework

详解数据湖:概念、特征与架构

五分钟学大数据

数据湖 1月月更

如何构建智能湖仓架构?亚马逊工程师的代码实践来了

亚马逊云科技 (Amazon Web Services)

计算

中小型企业过等保困难有哪些?如何解决?

行云管家

网络安全 企业 过等保

关于减碳你是否有很多问号?施家碳中和咨询服务来了!

ToB行业头条

快过年了,用五种不同的JS特效带你看烟花

海拥(haiyong.site)

大前端 js 28天写作 前端特效 1月月更

共建龙蜥社区,支撑商业建设

OpenAnolis小助手

Linux 开源 开发者

武汉智慧城市建设新名片 一城一云打造数字经济新引擎

InfoQ_967a83c6d0d7

产业协同,助力数转 | 鲸鲮正式加入中国电信5G产业创新联盟

鲸鲮JingOS

Linux 5G 操作系统 信创 电信

【Frontend Focus #532】前端性能优化

道道里

前端 性能 浏览器

什么是云效,云效平台

阿里云云效

阿里云 DevOps 云原生 研发 研发提效

开源操作系统年度技术会议演讲PPT下载来啦!

鉴释

开源 操作系统

Go Error 嵌套到底是怎么实现的?

AlwaysBeta

Go 源码 源码阅读 Go 语言 源码学习

做网络安全竟然不了解ATT&CK?这篇文章的介绍详细到令人尖叫

博文视点Broadview

移动数字化平台如何让企业生态协同更高效?

BeeWorks

【Node Weekly #417】你需要了解的Node.js内存限制

道道里

前端 Node

【等保小知识】等级保护工作是指等保测评吗?意思一样吗?

行云管家

网络安全 等保 等保测评

Hoo虎符研究院 | 币圈后浪——Osmosis一种高级AMM协议

区块链前沿News

Hoo 虎符交易所 虎符研究院

微帧ROI视频智能编码:基于人眼感兴趣区域,实现极致观感体验

微帧Visionular

视频编码

“云联邦”构建连云成片、无缝混合的一朵云

华为云开发者联盟

混合云 多云 华为云Stack 云联邦 联邦认证

一种适用于真实世界BPM的协作方式_Java_Bernd Ruec​ker_InfoQ精选文章