jbpm工作流开发Word下载.docx

上传人:b****6 文档编号:15906524 上传时间:2022-11-17 格式:DOCX 页数:13 大小:129.64KB
下载 相关 举报
jbpm工作流开发Word下载.docx_第1页
第1页 / 共13页
jbpm工作流开发Word下载.docx_第2页
第2页 / 共13页
jbpm工作流开发Word下载.docx_第3页
第3页 / 共13页
jbpm工作流开发Word下载.docx_第4页
第4页 / 共13页
jbpm工作流开发Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

jbpm工作流开发Word下载.docx

《jbpm工作流开发Word下载.docx》由会员分享,可在线阅读,更多相关《jbpm工作流开发Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

jbpm工作流开发Word下载.docx

13.JBPM的用户角色管理5

JBPM与Spring整合6

1.安装6

2.jBPM设计6

3.使用11

一、初始化11

二、根据用户提取该用户的流程12

4.权限12

5.会签12

jBPM简介

JBossjBPM为设计及开发工作流和业务流程管理系统提供了一个先进的平台。

由API、特定领域的语言和图形建模工具组成的框架让开发人员和业务分析人员能够使用通用平台进行沟通及操作。

工作流管理和业务流程管理(BPM)正在迅速成为企业获得软件敏捷性和适应性的重要方法。

JBossjBPM是一个面向流程的工作流BPM框架和工具集,它使业务分析人员能够与软件组件进行交互、有助于获得有效的业务解决方案。

许多企业在积极寻求一种结构化方法,以便设计业务动作/事务,并且优先使用自动化流程加以执行。

业务流程管理(BPM)和工作流管理使用动作、任务和流程等概念,提供了解决这个问题的办法。

JBossjBPM是采用开放源代码(LGPL许可证)的框架,包括了JavaAPI、工具和定义语言

JBossjBPM3.0提供了这样的功能:

使用业务流程执行语言(BPEL)、灵活而且可插入的应用编程接口(API)、本地流程定义语言以及图形建模工具,利用基于行业标准的编制机制开发新的自动化业务流程和工作流。

JBPM相关概念

1.JPDL的流程定义元素

第一层:

GraphElement

GraphElement有四个属性:

(1)processDefine表示当前元素属于哪个流程定义

(2)events表示可以接收哪些event

(3)name名字

(4)exceptionHandlers异常处理类集合(List)

第二层:

node、processDefinition、Transition、Task

它们都继承自GraphElement

(1)processDefinition表示流程定义(implementsNodeCollection),它有下面的属性:

name、version、nodes、startState。

nodes表示流程中所有的node,startState用于启动流程时找到首节点。

(2)Transition表示转移,它有三个属性:

from(Node),to(Node),supportedEventTypes表示支持的event类型

(3)node表示节点,它有四个属性:

leavingtransitions、arrivingtransitions、action、superState。

(4)Task定义任务

第三层:

各种不同的node

它们都继承自node。

Decision、EndState、Fork、Join、Merge、Milestone、InterleaveEnd、InterleaveStart、ProcessState、State。

2.jBPM的token

JBPM中最重要的概念,应该是令牌(Token)和信令(Signal)。

在整个流程实例运行过程中,我们可以迅速的利用token得到其当前的currentstate。

1)Token记录了当前的状态(currentstate),只有当前的状态(或称节点)拥有该令牌

2)向TOKEN发signal后,当前状态收到该signal

3)当前状态把令牌传给signal中指定的transition

4)transition收到令牌后,不强占,马上把令牌传给下个状态.

5)根据令牌的位置,流程的状态已经发生改变.

3.processdefinition

一个processdefinition代表了一个正式的业务流程,它以一个流程图为基础。

这个流程图由许多node和transition组成。

每个node在这个流程图里都有着各自特殊的类型,这些不同的类型决定了node在运行时的不同行为。

一个processdefinition只有一个startstate。

4.token

一个token代表了一条执行路径,它包含了这条执行路径的当前的执行状态(currentstate)。

5.processinstance

一个processinstance(流程实例)即一个processdefinition(流程定义)的流程执行实例。

一个processdefinition可以对应多个processinstance。

当一个processinstance被创建的时候,一个主执行路径token同时被创建,这个token叫做roottoken,它指向流程定义的startstate(processDefinition.getStartState()==token.getNode())。

6.signal

一个signal发送给token通知token继续流程的执行。

如果signal没有指定transition,token将沿缺省的transition离开当前状态,如果signal指定transition,token将沿指定的transition离开当前的状态。

看源代码可以看到发给processinstance的signal其实都是发送给了roottoken。

7.Actions

JBPM提供了灵活的action,当流程执行,token进入node和transition时,会触发相应的一些event(事件)。

在这些event上附上我们自己写的action,就会带动action的执行。

action里是我们自己的相关java操作代码,非常方便。

注意的是event(事件)是内置的,无法扩展。

另外,action也可以直接挂在node上,而不依赖于event(事件)的触发,这个很重要。

8.Node

一个流程图由许多node和transition组成。

每个node都有一种类型,这个类型决定了当流程执行到这个node时的不同行为。

JBPM有一组nodetype可以供你选择,当然你可以定制自己node。

node有两个主要的作用:

1)执行java代码,比如说创建taskinstance(任务实例)、发出通知、更新数据库等等。

很典型的就是在node上挂上我们的action

2)控制流程的执行:

A、等待状态:

流程进入到这个node时将处于等待状态,直到一个signal的发出

B、流程将沿着一个leavingtransition越过这个node,这种情况特殊一点,需要有个action挂在这个node上(注意这个action不是event触发的!

),action中将会调用到API里executionContext.leaveNode(StringtransitionName),transitionName即这里的leavingtransition名字。

C、创建新的执行路径:

很典型的就是forknode。

流程在这里会分叉,产生新的执行路径。

这样就创建了新的token,每个新的token代表一个新的执行路径。

注意的是,这些新的token和产生前的token是父子关系!

D、结束执行路径:

一个node可以结束一条执行路径,这同样意味着相应的token的结束和流程的结束。

9.流程图中的nodetype

1) 

 

task-node

一个task-node可以包含一个或多个task,这些task分配给特定的user。

当流程执行到task-node时,taskinstance将会被创建,一个task对应一个taskinstance。

taskinstances创建后,task-node就处于等待状态。

当所有的taskinstances被特定的user执行完毕后,将会发出一个新的signal到token,即流程继续执行。

2) 

state

state是一个纯粹的waitstate(等待状态)。

它和task-node的区别就是它不会创建taskinstances。

很典型的用法是,当进入这个节点时(通过绑定一个action到node-enterevent),发送一条消息到外部的系统,然后流程就处于等待状态。

外部系统完成一些操作后返回一条消息,这个消息触发一个signal到token,然后流程继续执行。

(不常用)

3) 

decision

当需要在流程中根据不同条件来判断执行不同路径时,就可以用decision节点。

两种方法:

最简单的是在transitions里增加conditionelements(条件),condition是beanshellscript写的,它返回一个boolean。

当运行的时候,decision节点将会在它的leavingtransitions里循环,同时比较leavingtransitions里的condition,最先返回'

true'

的condition,那个leavingtransitions将会被执行;

作为选择,你可以实现DecisionHandler接口,它有一个decide()方法,该方法返回一个String(leavingtransition的名字)。

4) 

fork

fork节点把一条执行路径分离成多条同时进行(并发)的执行路径,每条离开fork节点的路径产生一个子token。

5) 

join

默认情况下,join节点会认为所有到达该节点的token都有着相同的父token。

join节点会结束每一个到达该节点的token,当所有的子token都到达该节点后,父token会激活。

当仍然有子token处于活动状态时,join节点是waitstate(等待状态)。

6) 

node

node节点就是让你挂自己的action用的(注意:

不是event触发!

),当流程到达该节点时,action会被执行。

你的action要实现ActionHandler接口。

同样,在你的action里要控制流程。

10.Actions的说明

存在两种action,一种是event触发的action,一种是挂在node节点的action。

要注意它们的区别,event触发的action无法控制流程,也就是说它无法决定流程经过这个节点后下一步将到哪一个leavingtransition;

而挂在node节点的action就不同,它可以控制流程。

不管是哪一种action都要实现ActionHandler接口。

11.Task(任务)

JBPM一个相当重要的功能就是对任务进行管理。

Task(任务)是流程定义里的一部分,它决定了taskinstance的创建和分配。

Task(任务)可以在task-node节点下定义,也可以挂在process-definition节点下。

最普遍的方式是在task-node节点下定义一个或多个任务。

默认情况下,流程在task-node节点会处于等待状态,直到所有的任务被执行完毕。

任务的名称在整个流程中必须是唯一的。

一个TaskNode对应多个Task。

12.JBPM的任务管理实现

一个Taskinstance(任务实例)可以被分配给一个actorId(java.lan

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1