BPM行业趋势报告:OracleBPM套件11g先睹BruceSilverAssociates-BPM独立专家2010年6月BPMSWatch市场的成熟,现在是时候宣布专门的“适合目的(fit-for-purpose)”的BPM套件时代正式来临了。不久前BPM购买者还不得不在以人员为中心的一套流程解决方案与以集成为中心的另一套流程解决方案之间做出选择。一些解决方案关注于业务增强,另一些解决方案则对开发人员更有吸引力。一些BPMS软件必须构建于SOA之上,于此同时,另一些则完全忽略了SOA。时光飞逝,今天的BPM购买者已不想在企业内引入更多的BPMS孤岛。他们需要一个单一的BPMS平台实现无障碍的BPM,可以同时适合以人员为中心的流程和以集成为中心的流程,提供业务增强与丰富开发工具,基于模型,但又基于强大的SOA基础;并且他们还希望基于开放标准实现;此外,还需要采用主流技术。使得这些购买者的期望成为现实的关键是BPMN2.0,来自OMG组织的最新流程定义语言规范。对于流程分析人员和架构师而言,BPMN如同流程图形符号一样熟悉,但是,BPMN2.0在熟悉的图形形状和符号之下,额外提供了标准执行流程设计语言。我们热切地等待第一款基于BPMN2.0的BPM套件,现在已经出现了:OracleBPM套件11g。本报告将带您先睹OracleBPM套件11g,并且看到它确实在实现无障碍BPM的目标上已经前行了很长的路。OracleBPM套件是Oracle融合中间件的一部分,将业务驱动的设计与强大的人员为中心的BPM合成在一起,并具有来自Oracle公司的所有IT基础架构功能。版本11g在一个功能强大的统一架构中(图1)组合了以前的两种互为替换的BPM解决道路:一种基于BPMN,另一种则基于BPEL,因此版本11g看上去就像是BPMS市场的游戏改变者。图1.OracleBPM11g架构BPMN2.0–从开始就设置了很高的横杆在过去数年中,BPMN1.x几乎已经成为业务流程建模的标准。看上去类似传统泳道图的简单图形化符号形式,对业务用户很有吸引力。但是BPMN除了这些特点,还有一些对于可执行流程设计至关重要的特性,诸如:所有形状和符号的精确语义,都定义在一个清楚的元模型(metamodel)中;支持广泛的事件(某些事情发生的信号)和事件处理的图形化建模,对于异常情况的建模至关重要;以消息和信号事件方式支持流程间通讯,将流程的执行与客户、服务提供者和其他内部流程之间的通讯链接起来。这一切都在流程图中清晰地表示出来。许多BPMS充分利用了BPMN1.x,在可执行流程设计中鼓励业务与IT的协同。在流程引擎上执行需要的技术细节可以在图形中每个形状下定义,但是在过去,每个BPMS都是以自己私有方式实现的。在实施周期中,业务人员可以与流程设计者协同,但是设计细节对于每一个BPMS都是私有的。然而在BPMN2.0中,这种限制没有了。执行需要的技术细节成为了标准的一部分,从而使得BPMN2.0成为有效的新流程执行语言。它结合了标准流程运行时的优势,同时具有标准化建模符号的业务增强固有特性。OracleBPM11g是第一个基于可执行BPMN2.0的BPMS。图形化流程模型的直接执行被称为WYSIWYE:whatyouseeiswhatyouexecute(所见即所执行)。换句话说,您在图纸上看到的流程图,事实上就是运行在流程引擎中的流程。而目前的一些其他工具则不同,它们必须将BPMN模型映射为BPEL来执行。WYSIWYE意味着没有循环问题,或对于BPMN模型业务不友好的限制。采用WYSIWYE方式,流程模型对于开发者而言,除了业务需求之外,具有更多的意义。您看到的事实上就是您运行的。一些特定的以人员为中心的BPMS也暂时具有WYSIWYE,但是采用了私有的运行时,并且没有一个强大的SOA基础。OracleBPM11g基于世界级的SOA平台,采用最新BPM标准,实现了WYSIWYE。Oracle不仅仅是第一个推出了BPMN2.0的支持,并且在未来相当长的时间里,为BPM设置了相当高的竞争门槛。今天,其他BPMS例行公事一样地忽略了BPMN最强大的两个特征:事件处理和流程间通讯。如果需要支持的话,通常会以开发者编写脚本的方式,隐藏在图形后面,而不是在BPMN中对流程分析员显示出来。因此,当有需要进行异常处理时,许多BPMN1.x的解决方法事实上不是WYSIWYE的。然而,OracleBPM11g则使得异常处理和流程间通讯,如同它们实际执行一样,在BPMN图形中变得可见。Oracle支持所有三种最重要的BPMN事件类型:消息Message(点对点流程间通讯),错误Error(从子流程到父流程的异常传播),和定时器Timer(deadline触发的行为),再加上信号Signal(常规目的的发布-订阅集成)。当在活动(Activity)的边界上画图时,这些事件表示如果活动运行时事件触发器发生了,则流程会初始化一个边界事件之外的异常流。(这个活动可以是简单任务或完整的子流程。)如果活动完成而没有事件触发,那么异常流就被忽略。边界事件可以用来实现如下场景,如描述客户在订单过程中发生了什么,或者一个活动花了太长时间,又或者一个服务返回了一个异常(图2)。图2.Oracle支持所有重要的异常处理的BPMN事件类型OracleBPM套件11g既支持中断式边界事件(触发器会中止原来活动),也支持非中断式边界事件(异常流与原来活动并行运行)。Oracle也支持一种新的BPMN构造,称为事件子流程(eventsubprocess),类似于边界事件,但是事件处理者运行在原来活动上下文之中。在每一个图形形状之后,BPMN2.0定义了自动化执行需要的技术细节,使得BPMN真正成为类似BPEL一样的流程执行语言。OracleBPM套件11g也继续支持BPEL,并且事实上,OracleBPM套件11g可以同时地运行BPEL和BPMN2.0流程。BPEL作为一个标准运行时具有的许多优势也适用于BPMN2.0,诸如移植到第三方引擎,最终降低成本和业务风险。BPEL擅长于组合自动的服务,BPMN2.0则在几个方面更适合BPM。它不限制流程模型在严格的块结构(blockstructure)中,这些块结构会让业务人员很迷惑。此外,执行是直接构建在图形化符号之上的,而这些图形化符号已经被业务分析员和架构师广泛采用。未来,我们会看到:在SOA层,更多采用BPEL来组合自动化服务,而在BPM层,更多采用BPMN2.0实现端到端流程建模。OracleBPM套件11g解决方案包括了同时运行的BPMN和BPEL模块,并且通过消息彼此通讯。业务增强的实现很久以来,以人员为中心的纯BPM供应商通过BPMN强调业务增强,但是他们缺乏一个强大的SOA基础。现在Oracle为基于SOA的BPM带来了业务增强实现。业务增强的关键是前面已经讨论过的WYSIWYE。分析员使用的同一个流程模型也被用来执行。业务人员创建的模型不仅仅是一个需求文档,也是模型实现的一部分。该特性大大鼓励了业务与IT在实施周期内以紧密协同的方式实现迭代开发。当前许多基于SOA的BPM套件采用BPMN进行业务层面的流程建模,这些模型通常被映射为不同的流程语言来执行,如BPEL。那不是WYSIWYE,在流程实施中限制了业务-IT的协同。但是,由于OracleBPM套件11g在建模和执行两个层面支持BPMN,这就意味着您不必放弃WYSIWYE,就可以将BPM构建在强大的SOA基础上。Oracle已经为BPM套件11g装载了必要的特性,以支持项目生命周期内的业务-IT协同。业务用户在浏览器界面的流程编写器(ProcessComposer)中创建BPMN流程模型,利用预先组装的角色、服务和类似流程组件的目录,作为实施设计的起点。流程编写器中的文档字段可以获取使用场景的细节描述。流程分析员使用流程编写器和基于JDeveloper的BPMStudio来进一步细化流程模型,添加实施细节,定义业务指示器(BusinessIndicator)来保留BAM数据(BAM,BusinessActivityMonitor),并且模拟流程以优化业务性能。流程开发者使用BPMStudio的零编码工具创建更技术化的组件,如自动化服务、适配器和调解流。所有的设计组件均通过Oracle元数据存储(OracleMetadataStore,MDS)实现可重用。在BPMStudio中,每个BPM项目都包括了一个业务目录(Businesscatalog),一个共享流程相关对象(如服务、业务对象、事件和异常)的可重用容器。当BPM项目被发布为一个BPM项目模板后,业务目录中的对象就可以被流程分析员使用流程编写器进行再组装。最终结果就是一个既支持从上到下(Top-down),也支持从下到上(bottom-up)实施风格的BPM平台,敏捷的业务-IT协同贯穿其间(图3)。图3.OracleBPM套件11g中的业务-IT协同BPMStudioOracleBPMStudio设计环境运行在OracleJDeveloperIDE中。除了BPMN2.0流程编辑器(图4)之外,BPMStudio提供了编辑器,编辑流程数据、组织角色、人工任务(包括指派与用户界面)、业务规则、业务活动监视、以及完整BPM解决方案中的其他所有组件。利用JDeveloper的角色设置,业务流程开发者和流程分析员会在BPMStudio中看到不同的编辑器。图4.BPMStudio中基于BPMN2.0的流程编辑器BPMStudio也支持流程模型的模拟分析,基于估计的参数得到期待的周期事件、吞吐量与成本。Oracle模拟提供了大多数竞争工具中缺乏的高级特性,诸如支持业务日历和跨多个流程的项目级模拟(图5)。图5.BPMStudio中的项目级模拟流程编写器除了BPMStudio之外,Oracle还通过第二个称为流程编写器(图6)的工具支持业务增强。流程编写器运行在浏览器中,而不是JDeveloper中,将访问扩展到了更广泛的业务用户。与BPMStudio一样,流程编写器也提供了BPMN编辑功能,但是没有定义实施组件的能力,诸如人工任务、服务、或业务对象。编写器可以用来实现从上到下(Top-down)的方式,在编写器中创建流程蓝图(Processblueprint),本质上是流程模型注释,需要使用BPMStudio的开发者完成这些流程注释;或者实现从下到上(bottom-up)的方式,使用业务目录中预先定义并呈现为项目模板(projecttemplates)的组件,重新组合可执行流程。正是因为流程编写器发展支持了广泛范围的流程设计对象,它将成为业务用户与流程分析员手中建模和设计以人员为中心流程的完整工具。图6.流程编写器通过Web浏览器提供了基于BPMN2.0的流程设计每个项目模板包含了选定的组件,表示了人工任务、服务、业务对象以及更多。使用模板,业务分析员可以在一个新的或修改的流程中重用它们,甚至无需接触JDeveloper就可以将它们直接部署在运行环境中。因为项目模板源自BPM项目,因此它们包含了定制化的约束,以提高流程管控,阻止选定特征的非授权修改。此外,流程编写器允许业务分析员设计或修改活动指南和业务规则,我们将稍后在本报告中进一步讨论。表单设计对业务分析员而言,BPMStudio允许通过一次点击,从指定任务数据和输出值(比如批准或拒绝),自动生成基本的任务表单。此外,工具还提供了向导,简化了客户化任务表单和屏幕流(Screenflow)的开发。BPM任务表单是基于Oracle应用开发框架的(ApplicationDevelopmentFramework,ADF),使用向导以JavaServerPageXML文件(.jspx)方式配置的。ADF是基于行业标准JavaServerFace(JSF)的声明式框架。它包含了一系列丰富的交互组件,零编码WYSIWYG设计器,和BP