< 返回
用jbossjbpm管理业务流程

jboss jbpm为设计及开发工作流和业务流程管理系统提供了一个先进的平台。由api、特定领域的语言和图形建模工具组成的框架让开发人员和业务分析人员能够使用通用平台进行沟通及操作。

工作流管理和业务流程管理(bpm)正在迅速成为企业获得软件敏捷性和适应性的重要方法。jboss jbpm是一个面向流程的工作流/bpm框架和工具集,它使业务分析人员能够与软件组件进行交互、有助于获得有效的业务解决方案。

许多企业在积极寻求一种结构化方法,以便设计业务动作/事务,并且优先使用自动化流程加以执行。业务流程管理(bpm)和工作流管理使用动作、任务和流程等概念,提供了解决这个问题的办法。

业务流程管理一词通常是指企业通过一系列活动,以能够适应动态变化的环境的方式,自动管理及优化流程。这些活动通常寻求来自软件工程和工具的帮助。因而,bpm一词往往直接用来指软件工程技术和工具。

bpm体现为三个不同的实践

1.流程设计:指设计现有及新的流程这一任务;

2.流程执行:执行自动化序列的相关事件,这些事件涉及软件流程以及/或者人为活动;

3.流程监控:观察及审查单个流程的状态,以便这些流程的统计数字和性能可以加以记录、报告及优化。

bpm力求让软件工程师们能够与业务分析人员共享同样的概念和框架,因而,软件开发商试图创建这样的工具,让企业可以通过使用图形建模工具、特定领域的语言和专有应用软件,获取、设计及优化业务流程。

jboss jbpm 3.0提供了这样的功能:使用业务流程执行语言(bpel)、灵活而且可插入的应用编程接口(api)、本地流程定义语言以及图形建模工具,利用基于行业标准的编制机制开发新的自动化业务流程和工作流。

jboss jbpm是采用开放源代码(lgpl许可证)的框架,包括了java api、工具和定义语言,可以充当web应用或者独立的java应用。jboss jbpm相当于业务分析人员和开发人员之间的中介,为他们提供了名为jpdl的通用流程定义语言。

jboss jbpm架构综述

jboss jbpm定义了使用jboss流程定义语言编写的文件里面的流程定义。jpdl是一种面向图形编程(gop)的语言,它基于节点、转换和动作组成的模型。在这种模型里面,节点是在流程定义过程中彼此相遇时执行的命令。转换负责指导流程定义的执行过程,而动作在节点或者转换事件发生时执行特定逻辑。

在jbpm中,流程定义被封装成流程档案(process archives)。流程档案被传送到jpdl流程引擎加以执行。jpdl流程引擎负责遍历流程图、执行定义的动作、维持流程状态,并且记录所有流程事件。

jboss jbpm在以下组件里面进行封装:

● 流程引擎: 该组件通过下列委托组件(delegate component)来执行定义的流程动作、维持流程状态,并记录所有流程事件:请求处理程序、状态管理程序、日志管理程序、定义加载程序、执行服务。

● 流程监管器: 该模块跟踪、审查及报告流程在执行时的状态。

● 流程语言: 流程定义语言(jpdl)基于gop。

● 交互服务: 这些服务把遗留应用提供成流程执行时所用的功能或者数据。

如图1所示,含有动作处理程序的jbpm流程定义由jbpm流程引擎加以加载及执行。 如果流程引擎在流程定义过程中遇到拥有相关动作的节点,所有相关的动作处理程序就会被调用。动作处理程序是java代码的实例,在执行时能够与外部系统进行交互。

下面就是简单的动作处理程序的示例:

import org.jbpm.graph.def.*;

import org.jbpm.graph.exe.*;

public class myactionhandler

implements actionhandler

{

public void execute(executioncontext executioncontext)

{

system.out.println("myactionhandler has executed: " + executioncontext);

}

}

流程档案里面的pdl文件名为process-definition.xml。该文件含有诸流程的正式描述。以下示子表明了process-definition.xml文件的例子:

< ?xml version="1.0" encoding="utf-8"?>

< !doctype process-definition public "-//jbpm/jbpm mapping dtd 2.0//en" "http://jbpm.org/dtd/processdefinition-2.0.dtd">

< process-definition name="purchase process">

< !--...-->

< !-- start-state -->

< start-state name="request a purchase">

< transition to="evaluating"/>

< /start-state>

< !-- nodes -->

< state name="evaluating">

< !--...-->

< transition name="approve" to="purchase approved"/>

< transition name="disap,sap,sap,sapsapprove" to="done"/>

< /state>

< fork name="purchase approved">

< transition to="decrement inventory" />

< transition to="increment revenue" />

< /fork>

< state name="decrement inventory">

< !--...-->

< transition to="join" />

< /state>

< state name="increment revenue">

< !--...-->

< transition to="join" />

< /state>

< join name="join">

< transition to="done" />

< /join>

< !-- end-state -->

< end-state name="done" />

< /process-definition>

流程定义基于定向图(directed graph)。有向图由节点、转换、一个起始状态以及一个终止状态组成。每个节点的类型定义了该节点的运行时行为。流程定义在执行时,以下实体就会起到作用:

1[][]