Introduction To BPM

一、一句话介绍
BPM 的全称是 Business Process Modeling,也被称为 Business Process Management。这两个名字的含义是一样的。“Business Process”,业务流程,指的是一个或一系列的,为了实现一个业务目标的,需要一步一步地去完成的算法,而 BPM 指的是设计、执行、管理及监控业务流程的技术和标准。

引用 《Essential Business Process Modeling》 中的原话概括一下:“The topic of BPM is profoundly simple to the beginner: the business analyst designs the process, the process is run by an engine, and the engine has EAI and human interaction capabilities.”


二、身世
BPM 的前身是工作流技术。工作流(Workflow)就是业务过程的部分或整体在计算机应用环境下的自动化,它主要解决的是使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现。
简单地说,工作流是用来管理和驱动在公司部门内大型人性化和纸制流程的组件。例如,处理一个申请(保险申请),将扫描的纸制申请表格作为输入,电子化地从一个索赔受理者的电子邮箱(或者Work List)传到另一个那里(或者是 Web 表单的传递,但实质是相同的)。这相当于模仿各办公室邮件在办公桌之间传递的传统动作。

随着企业业务的不断复杂,要求的不断提高,工作流技术由于本身概念的限制,无法满足这些变化。BPM 便是为了满足这些需求而产生的。可以这么说,BPM 是工作流技术“进化”的结果。

更多阅读:


三、为什么要使用 BPM
对于业务流程的实现,并不是非用 BPM 不可。我们可以用诸如 Java、Python 这样的编程语言实现业务流程,但是 BPM 的优势在于可以灵活稳定地实现业务逻辑。如果不使用 BPM 而使用传统的方法,是很难实现既灵活又稳定的。

BPM Suite 可以使用图形化的方式编辑业务逻辑。对于复杂的业务逻辑,这种方法是灵活准确的。这个优点不仅对于开发人员是如此,对于业务人员来说也是如此,因为每个人对于清晰的流程图都是可以很容易理解的。

同时,开发人员可以通过流程图生成业务流程引擎能够执行的流程定义语言。而且由于整个过程是在一个框架下执行的,从而在一定程度上保证了流程的稳定性。

另一方面,对流程执行状态的持久化是一个不能不考虑的。当然,如果你的服务器能提供足够大的内存,也可以不持久化业务流程的状态。但这可能吗?显然是不可能的。所以,如果你不是用 BPM Suite 所提供的持久化功能,而自己去设计数据库结构,这将是很恐怖的。要记住,你需要设计的系统将要被一个可能是很大的企业适用。

所以,综上所述。实现一个业务流程系统理论上并不是非 BPM 不可。但是 BPM 可以让你做的更快更好。可以让你的系统真正投入到实际使用中,而不仅仅是一个实验性的系统。


四、BPM 解决方案概览
混乱是 BPM 领域的一个特点。引用 《Essential Business Process Modeling》 一书作者  Mike Havey 的原话便是:“In practice, a morass(沼泽) of concepts, terminology, standards, vendors, and philosophies confounds the intermediate-level student of BPM who knows the basics but is lost in detailand is also responsible for building a BPM-based solution. ”

如何让大家能够比较清晰的认识一下这个 Morass 呢?我觉得先让大家看图是一个比较好的方法。

下图是《Essential Business Process Modeling》这本书的作者 Mike Havey 画的一个 BPMS 架构图。
[img]../../../upload/picture/pic/7330/129e01e6-e5f5-3269-a4e6-206483089c16.png" alt="BPMS " align="middle"[/img]

1. 整个系统的核心是一个流程执行引擎。现在主流的流程定义语言是 BPEL,同样,引擎的主流也是 BPEL 引擎。这里第一次出现 BPEL,所以简单介绍一下。BPEL 的全称是 Web Services Business Process Execution Language。BPEL 是通过编制 Web Services 来实现业务流程定义的,即 BPEL 定义 Web Service 何时、何地和如何被调用。以此来实现某种业务逻辑。

2. 使用 BPEL 定义业务流程,这几乎是绝大多数 BPM 解决方案的实现方法。BPMN,全称为 Business Process Modeling Notation。它的用途是可视化流程定义过程,但它不能被流程执行引擎使用,所以需要将其导出为 BPEL。实际上,BPMN 并不是为 BPEL 而设计的,而是为 BPML ,另一种流程定义语言而设计的。这两种语言是由 BPMI 提出的。所以,很多解决方案并没有使用如图中所示的方案。一些解决方案自己提供了对 BPEL 的可视化编辑方法。

3. BPEL 引擎可以调用内部系统中的 Web Service、Java 代码、C# 代码。对于 BPEL 而言,即便是要调用 Java 或 C# 这样的代码,也需要使用 Web Service 的方式调用。

4. 虽然 BPEL 是用来编制(Orchestration) Web Service 的,但是一个流程也需要和人类交互。既人类对于流程来说不可能只是起点上数据的提供者和终点上数据的消费者,人类也不可避免的会成为流程的参与者。如果要将人类作为流程的参与者,那用户界面别是不可缺少的。所以,商业的 BPM Suite (BPM 解决方案) 都提供了一套完整的功能,用于与人类的交互功能的定义和交互界面的创建。但是这一部分功能并没有统一的规范,虽然 BPEL4People 和 Human-Task 这两个规范已经标准化,但是目前并没有全面采用。这也是 BPM 混乱的一个体现。

5. BPEL 只能使用 Web Service 去调用外部的服务。实际上,调用内部的服务也只能使用 Web Service 的方式。

6. 对 BPMS 的管理和监视。有时,管理员需要知道某个流程的执行情况,这是就需要这个模块了。

7. 每个业务流程实例都是有自己的状态的,而且,流程的执行会持续很长时间,这是就需要流程状态的持久化了。

8. 这部分是比较特殊的。因为我认为在 BPM 领域,WS-CDL 这是多余的(什么是 WS-CDL,什么是 Choreography,这些问题我会在后面解释的)。这里的多余的意思是在大多数 BPM Suite 中,并没有采用 WS-CDL 技术。在这里只要知道你不需要考虑这部分就行了。

更多阅读:



五、BPM 的实现
这里提供一些关于 BPM 具体实现方法方面的文章。

更多阅读:



六、与 SOA 的联系
在如今的企业应用开发领域,BPM 和 SOA 是两个都很火的名词。这一部分是关于两者关系的,但由于这两个技术都是内涵很深,外延很广的,所以这部分只提供一些关于这两个技术的文章,让大家自己阅读。

更多阅读:


由于本人接触 BPM 时间不长,而且 BPM 也是一个内容颇多的技术,所以本文难免有一些错误、不合理以及应该涉及但没有涉及的地方和内容。欢迎大家对这些问题以及自己对 BPM 的看法踊跃的提出意见。

本人在此献丑了。

你可能感兴趣的:(Web,workflow,企业应用,SOA,大众软件)