JBPM4工作流介绍
JBPM4.4

JBPM4.4应用开发——入门篇2010-10-27 20:38:24标签:JBPM工作流工作流程入门原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/1931202/411612首先简单说说JBPM——java Business Process Management (java 业务流程管理)jBPM是一个框架、一堆开放的源代码。
而非一套“应用程序”。
jBPM的流程引擎可以看做是一个java工程——若干java类、依赖库和配置文件;使用和学习jBPM需要如下条件:1.jBPM的流程定义和运行时的上下文需要被存储到关系型数据库中——可以是基于调试目的的内存数据库HSQLDB,也可以是真正的持久化数据库(MySql,Oracle,PostgreSql,Sybase等等);2.jBPM的流程设计一般都需要一个基于客户端的图形化流程设计器软件,当然在jBPM4版本以后可以支持在web上做流程设计(这要归功于Sigvio项目)3.最终,基于jBPM开发出来的应用程序一般都会被部署到一台应用服务器中,以便服务于来自web的访问、监控和管理等。
注意:在jBPM4.3以后,几乎所有的准备工作(安装数据库,建表,安装应用服务器,安装图形化设计器插件等)jBPM软件包的发布者都帮我们做好了。
只要通过Ant脚本“一键获取”所需要的jBPM4整套开发、运行和管理环境。
在安装jBPM之前首先要安装JDK和Ant。
快速开始--------------------------------------------------------一、1.打开cmd命令控制台:进入到${jbpm.home}/install2.运行脚本:ant demo.setup.tomcat或ant.demo.setup.jboss使用这两个服务器都可以。
具体这个命令做了上面事:请查看install目录下的build.xml文件中的目标。
jBPM4工作流应用开发指南

目录
第一篇 jBPM工作流开发基础 1 第1章工作流基础 2 1.1工作流概念 2 1.1.1工作流管理思想之于企业现代化管理 2 1.1.2工作流技术在企业中的应用 5 1.1.3如何从一个开发者的角度看工作流技术 6 1.2工作流管理系统的发展历程 9 1.2.1工作流管理系统参考模型 11 1.2.2 BPM 15 1.3开源工作流选型 16 1.4 jBPM 19
因为工作的机会,作者曾作为RedHat JBoss产品应用架构师有幸深入地“解剖”了jBPM系列产品并且为国内 多个jBPM应用项目提供咨询、培训等服务。作者发现在许多优秀的工作流产品中已经实现了的设计、计划实现的 创意以及许多让人忍不住“击节叫好”的思想,都已经被jBPM系列产品做到了!当前,在Red Hat JBoss项目组 工程师、架构师们的不懈努力下,jBPM已经发布了第4个大版本,最新的jBPM4进一步克服了jBPM3的固有缺陷 (这在书中会多次提到),并且更加“变本加厉”地增强和优化了jBPM——这个世界上首屈一指的开源工作流产 品的功能。
本书分两篇。第一篇介绍工作流管理技术的概念、起源和发展历程,开源工作流选型,以及jBPM——这个迄 今为止最成功的Java开源工作流项目的“前世今生”。此外,本篇还可以帮助读者快速上手jBPM4、使用jBPM4开 发企业流程应用,包括安装和配置jBPM4、使用jBPM图形化流程设计器(GPD)设计流程、把流程部署到服务器上 去、使用jBPM4 Service API控制流程、掌握jBPM流程定义语言、流程变量、流程脚本。第二篇主要涉及基于 jBPM4这个强大的应用程序框架打造属于自己独特业务的“企业流程管理平台”,包括jBPM4扩展研发先决条件、 深入jPDL和jBPM Service API、升级jBPM3到jBPM4、流程虚拟机原理、jBPM4的设计思想、随需而配jBPM4、异 步工作执行器、深入jBPM4电子邮件支持、系统日志、jBPM4与Spring框架集成、jBPM4与JBoss应用服务器集成、 中国特色工作流的jBPM实现。
jbpm4_execution流转详解

PVM提供了一套和token类似的execution过程调度机制,通过对execution的完全操控,节点运行期行为有了无限的可能PVM的流程定义模型上图里的类全是接口。
位于最上层的是ObservableElement,其提供给流程元素以附加Event(事件)的能力。
在ObservableElementImpl里,它持有一个events的集合属性。
对于流程元素来说,典型的事件有:流程启动/结束,节点启动/结束和转移线执行(take)【在Event方法中定义】。
protected Map<String, EventImpl> events;EventImpl透过EventListenerReference实例的集合持有EventListener实例。
这样在引擎执行过程调度时,就非常容易地通过流程元素本身获取事件监听器并在相应的时候执行它们。
EventImpl.javaprotected List<EventListenerReference> listenerReferences;EventListenerReference.javaprotected EventListener eventListener;和传统的观察者模式一致,EventListener接口有且只有一个方法:/** listener to process execution events.** @author Tom Baeyens*/public interface EventListener extends Serializable {/** is invoked when an execution crosses the event on which this listener is registered */void notify(EventListenerExecution execution) throws Exception; }紧接着ObservableElement的是CompositeElement,其扩展了ObservableElement接口。
jBPM4.4详细讲解

jBPM4.4一、什么是jBPMJBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。
同时它还能被部署在任何一款JAVA应用服务器上。
java Business Process Management :工作流,工作流引擎注:记得j小写,因为j代表java,与Log4j中j一样工作流管理系统不止一中,如还有Intaliol BPMS …但JBoss jBPM灵活性且扩展性高。
jBPM项目于2002.3由Tom Baeyens 发起,2003.12发布1.0版本,2004年10.18发布2.0,并在这天加入了JBOSS组织-→被RedHat公司二、能干什么提供工作流的实现,帮助更好的进行BPM三、jBPM有什么,简介jBPM的Service API 各种服务1:ProcessEngine:流程引擎。
并不负责具体的业务,而是用于获取各种Service。
2:RepositoryService:流程资源服务的接口,如流程定义发布、查询、删除等。
3:ExecutionService:用于操作流程实例的服务,可以进行流程实例发布、查询、流程推进、设置流程变量等操作。
4:TaskService:用于操作人工任务的服务,可以进行任务创建、查询、获取、提交完成、保存、删除等操作。
5:HistoryService:用于操作流程历史的服务,提供对流程历史库(就是已经完成的流程实例)的操作。
比如:历史流程实例,历史活动实例等。
6:IdentityService:用于操作用户、用户组以及成员关系的服务7:ManagementService:流程管理控制服务的接口,只提供异步工作(Job)相关的执行和查询操作。
四、Myeclipse8.5 搭配开发环境1.jbpm-4.4.zip 下载完2.myeclipse→help→Myeclipse Configuration Center →add…….3.找到\jbpm-4.4\install\src\gpd\jbpm-gpd-site.zip 安装这个插件4.记得不要联网安装,不要选source文件5.安装完后window→JBoss jBPM→runtime Location→add 添加jbpm的路径6.添加lib下所有jar包,如果你使用的是tomcat6.0则:要把Juel-api.jar ,juel-impl.jar,juel-engine.jar 拷到tomcat lib 下并把原来的el-api.jar删掉项目中就不要再导上面三个包五、修改配置文件1、将example中的下列配置文件拷贝到java项目的src目录下:jBPM.cfg.xml、jBPM.hibernate.cfg.xml、jBPM.mail.properties、jBPM.mail.templates.xml、process_forms.css2、在以上配置文件中的jBPM.hibernate.cfg.xml,实际上就是我们熟悉的hibernate.cfg.xml,这里,要修改为连接我们的数据库。
应用jBPM4解决中国特色的流程需求

场景1 串行流程:在那个场景中,由于流程是串行的,没有分支的情形,因此处置起来最简单。如图1所示:
图1 串行流程示用意
场景1实现思路:
关于那个场景,在jBPM4中,最直接的方式,确实是在需要回退的各个节点之间成立回退线(如图5所示,若是需要从节点4回退到节点2,那么直接在节点4以后加一个分支决策节点,连接两个分支,一个是pass to 节点5,一个是reject to 节点2)
灵活的临时动态性需求
3.3.1回退
需求描述:
回退作为审批流来讲是最多见的需求,关于审批流来讲,每一个审批环节都有可能会有审批通过、不通过2种情形,而审批不通过时,一样是回退到上一个环节,可是在某些情形下,有可能跨环节回退,例如,在第5个审批环节,审批不通过时,直接回退到第2或第1个环节。而到底回退到哪个环节是能够让用户依照业务需求进行自概念的,而且在回退环节工作完成以后,其下一步的方向也能够让用户自概念。如,若是由第5个环节回退到第2个环节,那么当第2个环节从头修改业务数据并办理完毕后,流程引擎能够设定是从头依照2-3-4-5的顺序从头执行一遍,也能够设定由第2个节点返回给第5个节点,由第5个节点从头审批。
l 历史库的加入
作为任何一个正式运行的大数据量的软件系统来讲,没有历史库的切分确信只能看成玩具,而jBPM3没有任何的处置,必需由开发人员自己来解决。在jBPM4中终于加入了那个功能,只是我以为目前Jbpm4的历史库设计仍是存在一些问题的,例如,它是在活动(或任务)终止时,直接将数据归入历史库,事实上我以为这是没有必要的,我以为在整个流程实例终止时去做那个情形反而更好一些。第二,在将运行期的实例归入历史库时,并非是将所有数据都进行了copy,这就造成了在历史库中丢掉了一些运行期的数据属性。还有任务历史库中没有针对task candidates参与模式的任务拾取时刻的记录致使无法做绩效统计等。
JBPM工作流表结构的详解

注:红色的表为经常使用的表.这里不使用JBPM自己的权限角色定义.整体说明:JBPM4_DEPLOYMENT 流程定义表JBPM4_DEPLOYPROP 流程定义属性表JBPM4_EXECUTION 流程实例表JBPM4_HIST_ACTINST 流程活动(节点)实例表JBPM4_HIST_DETAIL 流程历史详细表JBPM4_HIST_PROCINST 流程实例历史表JBPM4_HIST_TASK 流程任务实例历史表JBPM4_HIST_VAR 流程变量(上下文)历史表JBPM4_ID_GROUP 组表JBPM4_ID_MEMBERSHIP 用户角色表JBPM4_ID_USER 用户表JBPM4_JOB 定时表JBPM4_LOB 存储表JBPM4_PARTICIPATION 参与者表JBPM4_SWIMLANE 泳道表JBPM4_TASK 任务表JBPM4_VARIABLE 上下文表红色的表为经常使用的表.这里不使用JBPM自己的权限角色定义.发布一个流程deploy后jbpm4_deployment新增一条记录jbpm4_deployprop新增三条记录jbpm4_lob 新增一条记录开始一个流程startProcessInstanceByKey后jbpm4_execution新增一条记录jbpm4_hist_actinst 新增一条记录jbpm4_hist_procinst新增一条记录jbpm4_hist_task新增一条记录jbpm4_task 新增一条记录流程定义相关的布署信息就存储在(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB中。
上传一个包含png和jpdl.xml的zip包后,JBPM4_DEPLOYMENT多一条记录 JBPM4_DEPLOYPROP 多三条,JBPM4_LOB多两条。
(4)J B PM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST分别存放的是Process Instance、Activity Instance的历史记录。
jbpm4工作流详解

jbpm4⼯作流详解jBPM4的学习流程 1>jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息 2>对jbpm4的数据库表简单介绍 3>通过ProcessEngine类的贯穿来获取服务接⼝(Service API)来认识所有的常⽤类 4>对流程定义语⾔中活动⼏个常⽤的介绍 5>事件的介绍 JBPM:部署流程定义 jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息直接将业务流程部署到数据库中。
它不仅可以部署单个业务流程,也可以部署⼀组业务流程归档到服务器上。
jbpm⾸先扫描业务流程归档中所有以.jpdl.xml结尾的⽂件,并解析,然后⽤来发起流程实例,业务流程归档中所有其他资源也会在部署过程中被持久化到数据库中。
所有这些资源被统⼀编号保存在数据库表jbpm4_lob中我们可以通过jbpm4提供的RepositoryService.getResourceAsStream API随时访问这些资源。
jbpm4的数据库表简单介绍JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST 流程活动(节点)实例表JBPM4_HIST_DETAIL 流程历史详细表JBPM4_HIST_PROCINST 流程实例历史表JBPM4_HIST_TASK 流程任务实例历史表 JBPM4_HIST_VAR 流程变量(上下⽂)历史表JBPM4_ID_GROUP ⾓⾊表 JBPM4_ID_MEMBERSHIP ⽤户⾓⾊表 JBPM4_ID_USER ⽤户表 JBPM4_JOB 定时表 JBPM4_LOB 存储表JBPM4_PARTICIPATION 参与者表 JBPM4_SWIMLANE 泳道表 JBPM4_TASK 任务表 JBPM4_VARIABLE 上下⽂表(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB:存储上传⼀个包含png和jpdl.xml的zip包的相关数据 jbpm4_deployment表多了⼀条记录 jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdversion jbpm4_lob 表多了⼆条记录,保存流程图png图⽚和jpdl.xml (4)JBPM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST 分别存放的是Process Instance、Activity Instance的历史记录。
jBPM4.4入门指南

jBPM4.4⼊门指南1.⼯作流与⼯作流管理系统1.1. ⼯作流(Work Flow)⼯作流就是⼯作流程的计算机模型,即将⼯作流程中的⼯作如何前后组织在⼀起的逻辑和规则在计算机中以恰当的模型进⾏表⽰并对其实施计算。
⼯作流要解决的主要问题是:为实现某个业务⽬标,在多个参与者之间,利⽤计算机,按某种预定规则⾃动传递⽂档、信息或者任务。
通俗的说,流程就是多个⼈在⼀起合作完成某件事情的步骤,把步骤变成计算机能理解的⽅式就是⼯作流。
公司内采⽤纸张表单,⼿⼯传递的⽅式,⼀级⼀级审批签字,⼯作效率低下,对于统计报表功能则不能实现。
⽽采⽤⼯作流软件,使⽤者只需在电脑上填写有关表单,会按照定义好的流程⾃动往下跑,下⼀级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,⼤⼤提⾼了效率,实现了知识管理,提升了公司的核⼼竞争⼒。
作为⼀个成熟稳定的⼯作流产品,不仅提供⽇常办公和关键业务流程智能化管理,⽽且能根据公司的特殊实际要求轻松⽅便地随时定制各种流程,并可实现不同⾓⾊不同的跟踪、查询、统计、打印等强⼤功能1.2.⼯作流管理系统(Workflow Management System)⼯作流管理系统(WfMS)的主要功能是通过计算机技术的⽀持去定义、执⾏和管理⼯作流,协调⼯作流执⾏过程中⼯作之间以及群体成员之间的信息交互。
⼯作流需要依靠⼯作流管理系统来实现。
⼯作流管理系统是定义、创建、执⾏⼯作流的系统,应能提供以下三个⽅⾯的功能⽀持:1.定义⼯作流:包括具体的活动、规则等2.运⾏控制功能:在运⾏环境中管理⼯作流过程,对⼯作流过程中的活动进⾏调度3.运⾏交互功能:指在⼯作流运⾏中,WfMS与⽤户(活动的参与者)及外部应⽤程序⼯具交互的功能。
⼀、定义⼯作流⼆、执⾏⼯作流1.3.什么地⽅使⽤⼯作流技术OA中的审批流转的功能,其作⽤是能按照指定的流程(步骤)流转要审批的表单(就像流⽔线⼀样)。
有如下问题:1,流程有很多。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
功能模型不参考模型的对应关系
JBPM工作流
19
JBPM4的实现
JPDL PVM
服务API
JBPM工作流
20
应用场景
JBPM4介绍 活动 转移 开发介绍 基本概念 JBPM4
例子演示 系统整合
21
JBPM4
基本概念
JBPM工作流
22
基本概念乊流程定义
流程定义:
又称流程模型,是用来描述业务过程的规定性文档。
③ 流程定义:是预定义的工作步骤。
JBPM工作流
14
什么是工作流管理系统?
工作流管理系统:
工作流管理系统即Workflow Management System, 简称WFMS,是定义、创建、执行、监控工作流的系 统。
要点:
① 定义
② 创建
③ 执行 ④ 监控
JBPM工作流
15
关亍工作流管理系统, 我们需要关注的三点。
如何能够快速的灵活的变更流程,而无需大量的修 改代码戒者重新开发一个项目来替代老的项目呢? 如何控制复杂流程?
JBPM工作流
使用工作流的好处!
流程逻辑和业 务逻辑相分离
能应对复杂多 变的流程需求
可以灵活的设计 不部署新的流程
6
订货流程
JBPM工作流
7
丌使用工作流
JBPM工作流
8
使用工作流
JBPM工作流
JBPM4工作流介绍
本课程适合的人
掌握JavaEE开发技术人员
可以是… …
开发人员
流程分析师
JBPM工作流
工作流应用场景 常见问题 它的好处 JBPM4 应用场景 基本概念
开发介绍 例子演示 系统整合
3
场景
工作流技术广泛的 应用亍办公室环境
关键业务流程:
① 订单 ② 采购 ③ 供应链管理
行政管理类:
1.定义 管理
发布
查询
删除
暂停
2.实例 管理
启动
显示流 程图
执行
暂停
恢复Leabharlann 3.任务 管理分配任 务
收回任 务
定时任 务
任务与表 单绑定
4.历史 查询
任务的 历史
流程实 例历史
活动历 史
JBPM工作流
41
应用场景 基本概念 JBPM4
开发介绍 例子演示 系统整合
工作流例子演示 开发工具 流程开发
42
Demo
JBPM工作流
27
泳道机制的流程示意图
JBPM工作流
28
事件监听器
事件监听器:
是流程定义时的概念,由触发条件(即流程事件)和 触发操作(即监听处理器)组成。
应
用:用来支持用户将自定义的业务逻辑代码“嵌入”流程的生命周期 的特定阶段,从而达到扩展流程定义功能的目的。
JBPM工作流
29
流程乊流转模型
"Order.jpdl.xml") .deploy();
JBPM工作流
37
通过ExecutionService启动
startProcessInstanceByKey("ICL")
startProcessInstanceById("ICL-1")
startProcessInstanceByKey("ICL", "CL92837")
组
成:由一系列活劢定义和转移组成。
JBPM工作流
23
基本概念乊流程实例
流程实例:
是在流程运行时根据流程定义产生的实体,是实例化 的流程定义。
解 分
释:我们说一条流程执行完毕,意思也就是流程实例的生命周期结束。 类:运行状态的流程实例,历史流程实例。
JBPM工作流
24
基本概念乊活动
活动定义:
是最小的业务描述单位,是流程定义的重要组成部分。
结束活动
custom
JBPM工作流
JBPM4开发介绍 开发步骤
应用场景 基本概念 JBPM4 开发介绍 例子演示 系统整合
35
工作流开发的五个步骤
完成任务
执行流程 启劢流程 部署流程 定义流程
JBPM工作流
36
通过RepositoryService部署
.createDeployment()
.addResourceFromClasspath(
43
应用场景 基本概念 JBPM4
开发介绍 例子演示 系统整合
JBPM系统的整合 JBPM系统 应用系统
44
JBPM工作流
① 出差申请 ② 加班申请 ③ 请假申请
人事管理类:
① 员工培训安排
财务管理类:
① 付款请求
② 绩效考评
③ 职位调劢
② 应收款管理
③ 日常报销
4
你有没有碰到下面的问题
做需求时考虑丌全,上线后丌断的修改流程。
客户的组织机构调整,产生业务流程变更。
客户要求变更业务的流程。 业务流程比较复杂,使用的状态很多,易出错。
工作流的基本概念 参考模型 JBPM4实现 应用场景 基本概念 JBPM4
开发介绍 例子演示 系统整合
10
工作流的概述
描述
什么是工作流?
工具
什么是工作流引擎?
规范
什么是工作流管理系统?
JBPM工作流
11
什么是工作流?
工作流:
在一个工作群组中,为了达成某一个共同目的而需要 多人协力以串行戒平行工作的形式来共同完成的任务。
要点:
① 任务。
② 多人。
③ 共同的。
JBPM工作流
12
出差费用申请流程
JBPM工作流
13
什么是工作流引擎?
工作流引擎:
是驱劢实体按流程定义从一个参与者流向下一个参与 者的机制 。
要点:
① 实体(Entity):是需要随着工作流一起流劢的物件。
② 参与者:是各个处理步骤中的责任人(包括职能部门、设备等)。
第一点: 特点 第二点: 参考模型 第三点: Jbpm4实现
16
WfMS具有的特点:
1
建立时期:定义和建模。
2
运行时期:调度。
3
运行交互功能:指在工作流运行中,WFMS与用户(业务 工作的参与者戒控制者)及外部应用程序工具交互的功能。
JBPM工作流
WfMC工作流管理系统参考模型
JBPM工作流
18
串行:
JBPM工作流
30
流程乊流转模型
循环:
JBPM工作流
31
流程乊流转模型
并行:
JBPM工作流
32
流程乊流转模型
聚合:
JBPM工作流
33
JBPM4流程控制最常用、最基本的活动 开始活动 任务 分支/聚合
start
task
判断活动
state
状态活动
Sub-process
子流程 自定义活动
end
自动活动:由系统自劢执行完成。 状态活动:需要外界干预完成。
JBPM工作流
25
基本概念乊转移
转移:
负责将各个活劢定义连接起来,组成流程定义。
特点:转移时有方向的。
JBPM工作流
26
基本概念乊任务
任务:
用来处理涉及人机交互的活劢。
分 配 者:任务的实际办理人,一个任务只能有一个分配者。 候 选 者:一个任务可以多个候选者,可以浏览任务,无法办理任务; 要办理任务需要先成为分配者。 任务泳道:属于同一个泳道的任务将会被分配戒候选给这个泳道中的 所有用户。
JBPM工作流
38
通过ExecutionService执行流程
signalExecutionById(executionId);
JBPM工作流
39
通过TaskService完成任务
completeTask(taskId);
completeTask(taskId, “批准");
JBPM工作流
40
流程在实际应用场景中的一些操作