学习jbpm知识点
学习jbpm知识点
一步一步学习jbpm
前言
文档的汉化问题以及中国人和外国人的学习思维方式不同,是一般的中国程序员学习开源项目的一个重要困难,另JBPM在网上搜索的大多是汉化文档,没有经验性的总结。本文旨在将JBPM工作流以简洁明了的方式介绍给中国用户。让更多的人,在最短的时间里掌握这门技术。
关键词:持久化,UML,任务,泳道,委派,身份
1、为何要用JBPM?
可能许多初次接触工作流的同志都会有这个疑问。在一个任务表中增加一个记录当前状态的字段,不就可以了吗,为什么非要用到工作流引擎呢?当然这些同志说的没错,如果业务流程比较简单,相对比较稳定,而且开发周期紧,可以使用刚才的那种方式。但是下列人员是需要用到工作流引擎的。
-
业务流程变化比较频繁,需要版本控制支持的
-
业务流程比较复杂,需要用UML建模的
-
需要开发自定义业务平台,让用户来管理自己的业务的
-
并发业务处理
-
业务分析人员、后台开发人员、界面美工等需要独立分工协作的
2、JBPM能做什么?
-
业务流程UML图形化定义
-
控制流程跳转
-
分派任务
-
定时执行任务
-
事件处理
-
不止这些.....
JBPM简介
JBPM是一项开源工作流项目,有JBOSS组织(现已被Red hat Linux收购)主持开发。由于JBOSS公司吸引了Hibernate创始人的加盟,所以jbpm持久层是用Hibernate来实现的,因此理论上将支持所有Hibernate所支持的数据库。(有关Hibernate的资料请自己google,或者baidu一下就可以了)。JBPM具有很强的灵活性,他可以应用的桌面程序,也可以应用的Web服务,而且提供了一种图形化的业务分析建模工具,并可以将这些业务模型部署的数据库中,任务实例的执行也可以被持久化。
官方介绍:JBoss jBPM是一个灵活的、可扩展的工作流管理系统。它使用简单、强大的语言来描述业务流程,把每个流程相关文件打成一个文件包,叫做流程档案(par, process archive),作为JBoss jBPM运行服务器的输入。JBoss jBPM通过使用JBoss jBPM流程定义语言(jPdl),在管理人员与开发人员之间架起沟通的桥梁。这使得软件项目经理可以更多控制他们软件开发工作量。在装载流程档案 (par)之后,用户或者系统可以一步一步地执行这个流程。JBoss jBPM负责维护流程的状态、日志和执行所有自动的动作。JBoss jBPM将工作流应用开发的便利性和优秀的企业应用集成(EAI)能力结合了起来。JBoss jBPM包括一个web应用程序和调度器。JBoss jBPM可以使用在最简单的环境,比如一个ant 任务,也可以扩展到一个集群的J2EE应用。
我们将从下列几个步骤来认识Jbpm:
-
流程定义
-
流程部署
-
设计模式
-
最简单的业务模型
-
与数据库结合
-
较为复杂的业务模型
-
任务委派
-
角色权限
-
动作与处理
-
业务日历
-
在应用过程中遇到的现实问题
什么是流程图?
一个流程图是由节点(Node)和转换(Transition)组成的。转换(Transition)是有方向的,并且它在图形上连接两个节点(Node)。一个流程是一个有向图。流程图有多种表示方式:XML,Java类,数据库中的记录。
等待状态:需要用户外界干预才能执行的状态
即时状态:不需要用户干预,程序自动执行并判断执行路径(业务流程的流转方向)的状态。
JBPM的节点类型:
Start:开始状态,他是所有流程的入口点,一般应用过程中在Start-state中需要创建任务实例,在以后的流程引用此实例。Start-state是一个等待状态。一个流程只有一个Start-state.
End:结束状态,他是流程的终止点,一个流程可以有多个End-state.
Node:普通的即时节点
Decision:判断节点,高级的即时节点,不具有等待特性。
State:状态节点,等待
类型 |
名称 |
等待/即时 |
特性 |
|
节点 |
Start-开始节点 |
等待 |
开始状态,他是所有流程的入口点,一般应用过程中在Start-state中需要创建任务实例,在以后的流程引用此实例。一个流程只有一个Start-state. |
|
End-结束节点 |
- |
结束状态,他是流程的终止点,一个流程可以有多个End-state. |
|
|
Node-节点 |
即时 |
普通的即时节点,可以触发Node任务 |
|
|
Decision-判断节点 |
即时 |
判断节点,高级的即时节点,不具有等待特性。 |
|
|
State-状态节点 |
等待 |
一般等待状态节点 |
|
|
Task Node-任务节点 |
等待 |
高级等待状态节点 |
|
|
父子 |
Process State-子流程节点 |
等待 |
|
|
Super State-超流程节点 |
等待 |
|
|
|
分支聚合 |
fork |
即时 |
|
|
join |
等待 |
|
|
设计模式:
-
基于客户的模式
-
基于流程状态的模式
需要处理的几个问题?
-
并发进程的处理,如客户取消订单等
-
会签
-
与现有Web项目集成
-
权限组织结构的处理
-
业务处理期限的控制