`
javatgo
  • 浏览: 1125101 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多
http://360doc.com/showWeb/0/0/192644.aspx

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表明了这些组件之间的关系。

<shapetype coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f" id="_x0000_t75"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype>

如图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="disapprove" 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)。有向图由节点、转换、一个起始状态以及一个终止状态组成。每个节点的类型定义了该节点的运行时行为。流程定义在执行时,以下实体就会起到作用:

流程实例: 流程实例是流程定义的一次执行。

标记: 标记是一条执行路径。标记是运行时概念,它含有指向定向图中节点的指针。一旦创建了流程实例,就会创建主要执行路径的标记。该标记名为流程实例的根标记,它位于流程定义的起始状态。

信号: 信号指示标记继续由转换实现的图像执行。

节点: 节点负责图像执行的继续进行。如果标记进入节点,节点就会执行。不会传播执行的节点被认为是状态节点。

动作:动作是流程执行过程中出现事件时执行的Java代码的实例。主要的事件类型有:进入节点离开节点进行转换


2 jBPM图形建模设计器

使用jBPM图形建模设计器,就很容易创建流程定义。设计器目前作为Eclipse插件而安装。图2表明了图形建模设计器的示例屏幕。

图形设计器可以用来创建流程定义、把动作处理程序与事件连接起来、编辑定义来源、创建流程档案、测试流程定义,等等。

部署JBoss jBPM

JBoss jBPM把流程定义存储在数据库中。因而,把流程部署到JBoss jBPM里面需要解析process-definition.xml,并且把它存储在JBoss jBPM数据库中。可通过以下方法实现这项工作:

使用由JBoss jBPM提供的par Ant任务来创建流程档案。

使用deploypar实用程序。该实用程序还可以创建流程档案,并且把流程档案部署到jBPM数据库上。Deploypar实用程序把jBPM.properties文件作为一个属性。该文件指定了配置选项,其中包括流程档案所要部署到的那个数据库。

通过编程解析process-definition.xml,并把它存储到数据存储区中。

JBoss jBPM完成一些简单步骤

JBoss jBPM充当编制引擎,它位于企业应用的中间,能够实现不同应用之间的集成和协调。

本文使用随同jBPM交付的示例部署,讨论如何利用jBPMjPDL来创建及修改具有Web功能的简单的订单处理系统。

1.下载JBoss jBPM

JBoss jBPM入门套件(http://www.jboss.com/products/jBPM/downloads)包括了执行JBoss jBPM所需的一切,只是没有Java开发者工具包(JDK)。JBoss jBPM入门套件里面的JBoss应用服务器需要J2SE 1.4或者更新版本。

下载入门套件后,把它解压缩到选择的目录下面。一旦解压缩了该入门套件,就有了类似如下的目录结构:

● Jbpm-starters-kit-3.1

● Jbpm:含有JBoss jBPM产品的源代码。

● jbpm-bpel:含有JBoss jBPMBPEL扩展件方面的信息。

● jbpm-db:含有把JBoss jBPM连接到其他数据库的示例配置。

● jbpm-designer:含有用于JBoss jBPM可视化流程设计器的Eclipse插件。

● jbpm-server:含有JBoss应用服务器和JBoss jBPM引擎以及示例流程。

2.执行JBoss jBPM引擎

为了启动部署了jBPMJBoss应用服务器,进入jbpm-server目录,执行里面的启动脚本。命令窗口会随同jBPM控制台窗口一起出现,类似图3

现在,打开浏览器窗口,输入http://localhost:8080/jbpm。就会看到JBoss jBPM的示例Web应用的登录页面。

cookie monster用户的身份登录,选择创建新的Web销售订单链接。这会创建预制的“Web销售流程的新实例,如图4所示。

实际的定义文件:processdefinition.xml位于websale.par里面,如以下列表所示:

< ?xml version="1.0"?>

< process-definition name="websale"

xmlns="urn:jbpm.org:jpdl-3.1">

< !-- SWIMLANES (= process roles) -->

< swimlane name="buyer" />

< swimlane name="salesman">

< assignment expression="user(ernie)" />

< /swimlane>

< swimlane name="accountant">

< assignment expression="user(bert)" />

< /swimlane>

< swimlane name="shipper">

< assignment expression="user(grover)" />

< /swimlane>

< !-- NODES -->

< start-state name="create new web sale order">

< task swimlane="buyer">

< controller>

< variable name="item"/>

< variable name="quantity"/>

< variable name="address"/>

< /controller>

< /task>

< transition to="evaluate web order" />

< /start-state>

< task-node name="evaluate web order">

< task swimlane="salesman">

< timer duedate="20 seconds" repeat="10 seconds">

< action class="org.jbpm.websale.RemindActor">

< swimlaneName>salesman< /swimlaneName>

< /action>

< /timer>

< controller>

< variable name="item" access="read"/>

< variable name="quantity" access="read"/>

< variable name="address" access="read"/>

< variable name="comment"/>

< /controller>

< /task>

< transition name="ok" to="salefork" />

< transition name="more info needed" to="fix web order data" />

< /task-node>

< task-node name="fix web order data">

< task swimlane="buyer">

< controller>

< variable name="comment" access="read"/>

< variable name="item" />

< variable name="quantity" />

< variable name="address" />

< /controller>

< /task>

< transition to="evaluate web order" />

< /task-node>

< fork name="salefork">

< transition name="payment" to="wait for money" />

< transition name="shipping" to="ship item" />

< /fork>

< task-node name="wait for money">

< task swimlane="accountant">

< controller>

< variable name="item" access="read" />

< variable name="quantity" access="read" />

< variable name="address" access="read" />

< variable name="money received" />

< /controller>

< /task>

< transition to="update books" />

< /task-node>

< node name="update books">

< action class="org.jbpm.websale.UpdateBooks">

< msg>accountancy application is now informed of the payment< /msg>

< /action>

< transition to="salejoin" />

< /node>

< node name="ship item">

< action class="org.jbpm.websale.ShipItem">

< swimlaneName>shipper< /swimlaneName>

< msg>${shipper} now ships ${item} to ${address}< /msg>

< /action>

< transition to="salejoin" />

< /node>

< join name="salejoin">

< transition to="end" />

< /join>

< end-state name="end" />

< /process-definition>

一旦创建新的Web销售订单页面加载完毕,填写物品数量表格字段,其中cookie作为物品,1作为数量。然后选择保存结束任务,即可完成创建新的Web销售订单任务。Web应用会向jBPM发出信号,要求把Web销售流程标记转移到评估Web订单任务,然后使用输入数据作为流程变量。这时候,登录页面会再次显示。你会注意到这样一则消息:新的任务已分配给'ernie’

现在,选择以另一个用户登录链接、以ernie的身份登录。你会注意到:评估Web订单任务呈高亮显示。把所需地址输入到注释字段,然后选择需要更多信息按钮。这样就可以把流程标记转移到修复Web订单数据任务,并且让浏览器回到登录页面。

这时候,可以以cookie monster用户的身份登录,选择修复Web订单数据链接,就可以查看高亮显示的任务如何变化、体现流程标记在执行流程中的位置。

重复流程定义在浏览器窗口中显示的步骤,出现提示时以相应用户的身份登录,完成填写每项新任务的表格。你最终会进入到流程末端,这时就会出现屏幕,告诉你流程已完成。
分享到:
评论

相关推荐

    jbpm简介\jbpm简介

    \jbpm简介\jbpm简介\jbpm简介\jbpm简介\jbpm简介

    工作流基本概念及jbpm简介

    工作流基本概念及jbpm简介PPT,这是公司内部培训PPT,是初学入门的好课件,推荐给大家。

    工作流基本概念及JBPM简介.ppt

    工作流基本概念及JBPM简介

    工作流基本概念及JBPM简介

    工作流引擎的简单介绍,对于概念和基本架构讲述的比较清楚,需要了解工作流的可以看。

    工作流基本概念及jBPM简介

    工作流基本概念简介 工作流系统功能特性描述 开源工作流引擎jBpm的介绍

    jbpm工作流.ppt

    工作流基本概念及jBpm简介 适用于刚接触工作流、jbpm

    工作流督-办管理

    Jbpm简介:是个复杂的可扩展的工作流管理系统. Jbpm 有直观的流程语言来表示商业流程图的术语比如,任务,异步通讯的等待状态,定时器,自动操作等等.把这些操作绑在一起,, Jbpm 就有了最强大和易扩展性的控制流机制. ...

    JBPM4介绍开发步骤简介

    JBPM4轻量级,简单初步的基础的开发步骤

    jbpm-jdpl框架简介.pdf

    jbpm-jdpl框架简介.pdf

    JBPM4.4视频教程(22集附源码)

    资源名称:JBPM4.4视频教程(22集附源码)资源目录:【】(01)jbpm4.4简介【】(02)JBPM4.4开发环境搭建【】(03)jbpm4.4环境搭建续【】(04)jbpm4.4配置文件和开发前准备【】(05)jbpm4.4部署流程发起流程实例【】(06)...

    jbpm4服务接口方法汇总

    Jbpm 服务简介 我们开发中主要会使用到PVM提供的几类服务: 查看org.jbpm.api.ProcessEngine.java类,这个工厂类提供了所有对外发布的服务。包含: 1) RepositoryService getRepositoryService();//获取与流程部署...

    JBPM工作流简介.docx

    JBPM工作流简介.docx

    《jBPM学习笔记_框架设计简介》

    jpdl描述工作流《jBPM学习笔记_框架设计简介》

    JBPM工作流开发指南

    3.1 、简介 11 3.2 、流程版本(Version) 11 3.3 、流程定义 12 3.3.1 process-definition(流程定义) 12 3.3.2 node(自动节点) 13 3.3.3 start-state(开始状态) 13 3.3.4 end-state(结束节点) 14 3.3.5 state(状态)...

    JBPM4.4使用简介

    详细讲述了jbpm4.4从部署到领会的各个环节,使劲的下载吧

    JBPM框架设计简介

    jBPM(JBoss Business Process Management业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。

    jbpm知识详解

    jBPM(java Business Process Management)是什么 是一种基于Java的、轻量级的、实现工作流管理... jBPM有什么,简介jBPM的Service API 1:ProcessEngine:流程引擎。并不负责具体的业务,而是用于获取各种Service。 2

    JBPM5.1入门学习

    1 简介 4 1.1 什么是JBPM 4 1.2 概述 4 1.3 该版本的改进 5 1.4 Eclipse设计器 6 1.5 基于Web的设计器 7 1.6 JBPM控制台 7 2 入门 8 2.1 下载 8 2.2 资源 8 2.3 环境准备 9 2.3.1 安装JDK 9 2.3.2 安装Ant 9 3 DEMO...

    JBPM实用教程及其简介

    此教程描述了常用的JBPM流程内容,含流程定义,各种节点说明,流程调度,子流程运行,会签,跳转等

    jBPM-jPDL学习笔记—框架设计简介

    jBPM-jPDL学习笔记—框架设计简介

Global site tag (gtag.js) - Google Analytics