什么是BPM

很多情况下企业当中所提供的服务不是由一个分布式业务流程就可以完成的,整个服务的提供需要多个分布式流程有机的组合,于是BPM就应运而生了。要将现有的服务通过配置、编排(关于配置与编排的区别后面将说明)以满足具体的业务流程的目的就不得不借助于工作流的相关内容。毕竟各个服务之间的配合是为了提供一项合理的业务流程,这样的话就必须要设计流程,说白了就是各个服务谁先谁后的问题。

从字面上理解BPM所要做的就是对整个业务流程进行管理。这其中包括很多方面,比如分析业务、实现业务功能、检测业务流程、建立相应的操作流程的工具等等。在真正开始动手之前通常要做的将业务分解成已有的底层服务可以处理的小模块。

实施思路

流程分解后最底层的一个个活动就是服务。服务是业务流程的组成部分。要想让服务发挥作用就必须先考虑业务流程。从业务流程的观点来看,这些个服务是基本服务还是组合服务无关紧要,重要的是服务之星了必要的业务功能。然而流程服务是不同的东西,因为流程服务的目的是体现整个业务流程(或某个部分)。

可以通过自顶向上的方法将一个问题、系统或流程不断分解为更小的内容,直到抵达服务的层次。或者采用自底向上的方式依靠底层的服务组合为更通用的块来建立业务流程。当然方法不是唯一的,只是提供一个参考而已。每种方法都有利弊。自底向上会产生不必要的服务或者产生满足不了业务需求的服务。而自顶向下很可能遇到技术上的困难,或实现上复杂的服务。

例如:如果要实现一个新的业务流程。这个业务流程就是顶层我们需要实现的流程,而既存的系统或者说服务就是这个业务流程的底层,毋庸置疑底层是负责提供一些用服务方式体现的基本业务功能。下面的工作就是采用自顶向下的方式把整个流程分解成为小块,把复杂的流程分解为下层服务可以处理的小模块。

具体技术----BPM工具和引擎

一般具体到实现到流程上就是有关工作流的层面的事情了。再具体一点说的话就是需要使用BPEL将整个流程描述出来。BPEL是一个抽象的概念,具体根据不同的流程引擎会有不同的表现形式。比如使用JBPM的时候那么担当描述部分的就是JBPM自身的所提供的JPDL,当使用普元的BPS平台的时候担当描述部分的将是普元自带的描述流程的语言。不过实现的方式是类似的:将流程节点与现有的服务绑定,最终发布定义,启动流程,执行流程等等。核心思想都是将现有的服务利用起来通过编排或配置产生新的符合需求的新服务。通过业务流程建模工具或引擎可以用来从现有的服务中组合(“配置”)出新的组合服务或流程服务。

JBPM仅仅是BPM的实现方式之一,所以之前如果对JBPM有所了解的话将有助于理解及使用BPM。和JBPM类似,BPM的要做的就是将复杂的业务划分为一个个简单的服务,然后分清哪些是必须要人参与的那些是可以借助IT自动完成的,随后配置和编排。当流程定制完成那么就可以开始执行整个的业务了。当然这其中需要一个中央控制者来协调所有活动。

 “配置”与“编排”

通过组合现有的服务来设计更高层次的服务和流程这个方法叫做“配置”。在配置的过程中通常有一个中央控制者协调流程的所有活动。整个的组合本身可以当作服务使用。

另一个方法是“编排”,没有谁服从于谁的概念,每个部分负责一个或多个流程中的步骤,处于流程之中的时候很难了解整个流程的全貌。“编排”由于没有中央控制器的约束所以更容易伸缩,但是没有管理者的一大弊端就是出现问题不知道该如何去处理。

其他细节问题

BPM和SOA的关系中还有很多是需要考虑的细节,类似JBPM集成到单个系统中一样。需要考虑角色与组织和BPM的关系,需要涉及到权限相关的内容,或者说是系统前台和后台的问题。这些问题将在后面的文章中具体描述。

面向服务的体系结构(SOA)——(3)关于BPM的更多相关文章

  1. 面向服务的体系结构(SOA)——(1)目标与核心概念

    什么是SOA? 常常听到人们拿OOP和SOA一起来说事,诸如SOA是否可以代替面向对象(OOP)或者两者比哪个更加有优势?直接回答有难度举个例子可能显得答案更容易理解.小孩子问你该认真写作业呢?还是高 ...

  2. 面向服务的体系结构(SOA)——(5)关于MEP(Message Exchange Patterns)

    SOA中的MEP和JavaEE中的JMS类似,当然了就应该是类似的,因为都是关于消息方面的.一个是对系统架构当中消息的解决思路,一个是针对Java平台中的消息的具体解决办法(严格说不是具体的,只是提供 ...

  3. 面向服务的体系结构(SOA)——(4)对于服务的理解

    在接触SOA之前对"服务"这个词没有太多的感触,无非就是为别人做事情么.当然在SOA中这个词也脱离不了这层基本的涵义,但是具体到实际的架构中对这个词的理解就更加深刻了.本文就以&q ...

  4. 面向服务的体系结构(SOA)——(2)ESB介绍及职责

    企业服务总线(Enterprise Service Bus)是SOA的基础设施,之所以这么说是因为要达到SOA的目标(增强灵活性)就必须有调用服务的方法,ESB的存在有效的保证了消费者能够调用供应者提 ...

  5. SOA 面向服务的体系结构

    SOA:面向服务的体系结构(service-oriented architecture) 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来. 接口是采 ...

  6. SOA(面向服务的体系结构)

    SOA(面向服务的体系结构) 面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务 ...

  7. SOA (面向服务的体系结构)

    面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台.操作系统和编程语言 ...

  8. 面向服务架构(SOA)和企业服务总线(ESB)

    http://www.cnblogs.com/shanyou/archive/2008/04/19/1161452.html 学习和研究在企业中实施面向服务架构(SOA),简单回顾SOA和ESB,重点 ...

  9. 从面向服务架构(SOA)学习:微服务时代应该借鉴的5条经验教训

    [编者按]本文作者为 Matt McLarty,通过介绍 SOA 的兴衰变化,总结了微服务应该借鉴的5条经验教训.文章系国内 ITOM 管理平台 OneAPM 编译呈现. SOA 的兴衰变化让我们更了 ...

随机推荐

  1. 怎样把excel一列分成多列

    1,选定要分列的列. 2,点击“数据”-“分列”. 3,在选项栏中设置如图 4,选择分隔符 4,看,分开了吧!

  2. jQuery.isEmptyObject() 函数详解

    所谓"空对象",即不包括任何可枚举(自定义)的属性.简而言之,就是该对象没有属性可以通过for...in迭代. 该函数属于全局jQuery对象. 语法 jQuery 1.4 新增该 ...

  3. HDU 1025 Constructing Roads In JGShining's Kingdom(求最长上升子序列nlogn算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025 解题报告:先把输入按照r从小到大的顺序排个序,然后就转化成了求p的最长上升子序列问题了,当然按p ...

  4. nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"

    iwangzheng.com tty:[0] jobs:[0] cwd:[/opt/nginx/conf] 12:45 [root@a02.cmsapi]$ /usr/local/nginx/sbin ...

  5. Linux文件权限管理(持续更新)

    文章是从我的个人博客上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com 以root身份登录linux以后, ls -al 可以看到 -rw-rw-r--  1 wangzhe ...

  6. 在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping)

    在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping) 视差贴图 最近一直在研究如何在我的 iPad 2(只支持 OpenGL ES 2.0, 不支持 3.0) 上实现 视 ...

  7. SHSEE 备战最后十(四)天日记

    努力. Day -1 看书.睡觉. Day 0 上午考试.语文纯RP题跪.理总不错. 下午上课,各种神. Day 1 上午下午讲课...Day 0成绩出来才#17.... Day 2 考试..这次题目 ...

  8. 《ASP.NET1200例》C# WINFORM程序的三层架构如何建立的。

    先添加-新建项目-windows应用程序,然后在右边的解决方案资源管理器上面,在当前的解决方案上面右击,点,添加-新建项目-类库,分别建立.DAL,BLL,Model三个项目,然后,在DAL项目上右击 ...

  9. Greedy:Fence Repair(POJ 3252)

    Fence Repair 问题大意:农夫约翰为了修理栅栏,要将一块很长的木块切割成N块,准备切成的木板的长度为L1,L2...LN,未切割前的木板的长度恰好为切割后木板的长度的总和,每次切断木板的时候 ...

  10. ssm操作控制台输出sql语句 log4j.properties

    # Configures Log4j for Tomcat and Sakai # use "A" for log in with catalina.out (actually s ...