jbpm总结3

转载 2012年06月13日 12:17:47

2.9任务管理

2.9.1 分配任务

流程定义时,分配任务有多种方法:

1. 直接分配给成员:assignee="user1" 可以同时分配多人:candidate-users"user1","user2","user3"

2. 分配给组:candidate-groups="it_dept" 分配给多个组:用逗号隔开部门id组列表。

3. 利用任务泳道进行分配:

1.任务泳道分配的特点:一个单子可以有多个人填写,一旦A填写了,别人就不能 填写。而且当A提交的单子被退回的时候还应该有A来继续。

2.泳道定义:<swimlane candidate-groups="it_dept" name="test"/>,也可以为 candidate-users.

3.使用泳道:在task定义时 swimlane="test" 使用泳道,任务分配给it_dept

4.使用任务分配器assignment-handler标签 使用方法:<assignment-handler class = "">

<field name="test"><string value="ttttttt"/></field>

</assignment-handler>

class里面动态分配assignable.setAssignee(test);

通过传参数,设置 test的值。实现动态分配

2.9.2 成员任务列表

List<Task> taskList = taskService.findPersonalTasks(username);

2.9.3 组成员任务列表

List<Task> taskList = taskService.findGroupTasks(username);

由于任务有转交,加签等功能,所以一个人想要得到自己的任务就包括 组成员任务和 成员任务两部分组成。

2.9.4 执行任务

得到任务列表后,如果任务有对应的表单,就先跳到表单,填写,然后执行。表单的绑定:在task标签中使用 form = "xxxx.jsp",执行语句:

taskService.completeTask(taskId,"toFork1",map);

taskId 是任务id

toFork1 outcome,即任务的出口

Map 传递的任务参数,通过任务就可以得到这些参数:

得到指定的参数值:taskService.getVariable(taskId, "user")

得到所有的参数:taskService.getvariableNames(java.lang.String.taskId);

2.9.5 转交任务

taskService.assignTask(taskId,"用户Id");

2.9.6 任务加签

taskService.addTaskParticipatingUser(taskId,"用户Id",Participation.CANDIDATE);

2.9.7 fork join 异步分支

<fork g="276,239,48,48" name="fork1">

<transition g="-54,-18" name="to 计划部" to="计划部"/>

<transition g="-54,-18" name="to 法务部" to="法务部"/>

<transition g="-64,-18" name="to IT规划部" to="IT规划部"/>

</fork>

Fork join 处理并发的情况,分配给的三个部门当执行完后,都流入到join标签。

Join标签属性: multiplicity="3" multiplicity 的意思是当有几个执行到了join时,流程继续。

2.9.8 decision 决定条件

decision中会运行并判断每一个transition 里的判断条件。 当遇到一个嵌套条件是true 或者没有

设置判断条件的转移,那么转移就会被运行。

例子:当天数大于3天,总经理审批 否则 结束

<decision expr="#{day > 3 ? 'to 总经理' : 'to 结束}" g="361,280,48,48" name="exclusive1">

<transition g="-42,-18" name="to end1" to="end1"/>

<transition g="-44,-18" name="to task2" to="总经理审核"/>

</decision>

Decision属性: expr 表达式 必填

2.9.9 Events 事件

当一个流程通过这一点时,事件监听器就会被提醒。

用法:在流程的任何地方都可以加入监听

<on event="start">

<event-listener class="org.jbpm.examples.eventlistener.LogListener">

// 参数

<field name="msg"><string value="start on process definition"/></field>

</event-listener>

2.9.10 JPDL
1. Start state

开始节点 流程开始,每个流程定义文件 只能有一个开始节点。

2. Task node

任务节点 人工参与,调用processEngine.getTaskService().complete()成任务

3.State node

状态节点

需要使用execution.signalExcution()触发流程流转

4. Descision Node

流程流向判断节点

指定condition条件或者DesisionHandler

5. Fork node

分支节点,任务并行处理

6.Join node

任务聚合节点

7. End State

任务结束节点 可以有多个结束节点

8. Transition

控制任务流向

9. Event

事件触发 可以在任何节点加事件触发处理

具体参看${JPBM.HOME}/doc/userguide文档 关于JPDL的描述

3数据库表说明

(1)JBPM4_DEPLOYMENT

(2)JBPM4_DEPLOYPROP

(3)JBPM4_LOB
存储 上传一个包含pngjpdl.xmlzip的相关数据
jbpm4_deployment表多了一条记录
jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdversion
jbpm4_lob 表多了二条记录,保存流程图png图片和jpdl.xml
4JBPM4_HIST_PROCINST与(5JBPM4_HIST_ACTINST
分别存放的是Process InstanceActivity Instance的历史记录。
6JBPM4_EXECUTION
主要是存放JBPM4的执行信息,Execution机制代替了JBPM3Token机制
7JBPM4_TASK
存放需要人来完成的Activities,需要人来参与完成的Activity被称为Task
8JBPM4_PARTICIPATION
存放Participation的信息,Participation的种类有CandidateClientOwnerReplaced AssigneeViewer。而具体的Participation既可以是单一用户,也可以是用户组。
9JBPM4_SWIMLANE
Swim Lane是一种Runtime Process Role。通过Swim Lane,多个Task可以一次分配到 同一Actor身上。
10JBPM4_VARIABLE
存的是进行时的临时变量。
11JBPM4_HIST_DETAIL
保存Variable的变更记录。
12JBPM4_HIST_VAR
保存历史的变量。
13JBPM4_HIST_TASK
Task的历史信息。
14JBPM4_ID_GROUP15JBPM_ID_MEMBERSHIP16JBPM4_ID_USER
这三张表很常见了,基本的权限控制,关于用户认证方面建议还是自己开发一套,JBPM4 的功能太简单了,使用中有很多需要难以满足。
17JBPM4_JOB
存放的是Timer的定义。
18JBPM4_PROPERTY


jbpm的表结构以及六大服务

对于jbpm的开发,你应该具备的基本知识是对于表结构的理解,以及对于API的熟悉,下面我就带大家总结一下这两方面的知识: 一、jbpm表结构介绍  1.资源库和运行时表结构(9张表)     ...
  • hy6688_
  • hy6688_
  • 2014年11月29日 11:46
  • 2200

JBPM4—请假流程

1、流程图 2、流程配置文件 -------------------------------------------------------------------------------------...
  • clj198606061111
  • clj198606061111
  • 2013年01月03日 15:07
  • 4602

JBPM学习(一):eclipse集成JBPM

资源:   jbpm-starters-kit-3.1.2.zip官方下载地址 http://nchc.dl.sourceforge.net/sourceforge/jbpm/jbpm-starter...
  • yixiaoping
  • yixiaoping
  • 2013年09月02日 22:36
  • 10149

JBPM学习笔记 入门

转载自:http://814318774.iteye.com/blog/2025248 JBPM学习笔记 博客分类:  JBPM 1、JBPM4表说...
  • spyiu
  • spyiu
  • 2014年04月09日 13:22
  • 2883

JBPM4.4总结(一)——基础知识

JBPM(Java Business Process Management),业务流程管理,是Jboss(现已被Redhat收购)旗下的开源工作流引擎,是覆盖了业务流程管理,工作流,服务协议等领域的一...
  • liujiahan629629
  • liujiahan629629
  • 2014年04月09日 19:39
  • 8252

JBPM版本选择

作为一名IT新人,老大把研究JBPM的任务交给我的时候,简直是压力山大啊!          开始一个星期时间,先到JBPM官网下载了安装包,然后按步骤搭建环境、装eclipse的插件。新建了一个JB...
  • u011677471
  • u011677471
  • 2014年03月19日 14:18
  • 1047

宅急送 项目第八天 JBPM工作流框架

项目第八天和项目第九天 学习 JBPM 理论部分 项目第十天 权限管理模块 项目第十一天 项目第十二天 JBPM 应用 1. 工作流框架概述1.1. 什么是工作流工作流(Workflow),就是“...
  • CSDN_AF
  • CSDN_AF
  • 2017年04月23日 22:59
  • 1009

浅析JBPM工作流引擎

JBPM中文意为java业务流程管理,它通过JPDL(Java 流程定义语言)制定一套流程规则,也就是一条流程实例,将整个业务分成多个节点,该业务的执行将按照该流程实例所定义好的节点顺序依次进行。JB...
  • a1314517love
  • a1314517love
  • 2014年02月07日 15:55
  • 6872

jbpm6 开发环境搭建

一、软件下载       1. eclipse        下载地址:http://www.eclipse.org/downloads/        2.jbpm6.2 Installer    ...
  • leimengyuanlian
  • leimengyuanlian
  • 2015年06月28日 19:38
  • 4164

工作流引擎:jbpm和activiti

目前流行的工作流引擎有Activiti和jBPM5,而在jBPM5发布以前大多数项目、平台都是基于jBPM3、jBPM4开发的。jbpmJBPM,全称是Java Business Process Ma...
  • zhang_study_it
  • zhang_study_it
  • 2015年09月09日 23:45
  • 1384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jbpm总结3
举报原因:
原因补充:

(最多只允许输入30个字)