学习jbpm知识点

学习jbpm知识点

一步一步学习jbpm

前言

文档的汉化问题以及中国人和外国人的学习思维方式不同,是一般的中国程序员学习开源项目的一个重要困难,JBPM在网上搜索的大多是汉化文档,没有经验性的总结。本文旨在将JBPM工作流以简洁明了的方式介绍给中国用户。让更多的人,在最短的时间里掌握这门技术。

关键词:持久化,UML,任务,泳道,委派,身份

1、为何要用JBPM?

可能许多初次接触工作流的同志都会有这个疑问。在一个任务表中增加一个记录当前状态的字段,不就可以了吗,为什么非要用到工作流引擎呢?当然这些同志说的没错,如果业务流程比较简单,相对比较稳定,而且开发周期紧,可以使用刚才的那种方式。但是下列人员是需要用到工作流引擎的。

  1. 业务流程变化比较频繁,需要版本控制支持的

  2. 业务流程比较复杂,需要用UML建模的

  3. 需要开发自定义业务平台,让用户来管理自己的业务的

  4. 并发业务处理

  5. 业务分析人员、后台开发人员、界面美工等需要独立分工协作的

2JBPM能做什么?

  1. 业务流程UML图形化定义

  2. 控制流程跳转

  3. 分派任务

  4. 定时执行任务

  5. 事件处理

  6. 不止这些.....

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:

  1. 流程定义

  2. 流程部署

  3. 设计模式

  4. 最简单的业务模型

  5. 与数据库结合

  6. 较为复杂的业务模型

  7. 任务委派

  8. 角色权限

  9. 动作与处理

  10. 业务日历

  11. 在应用过程中遇到的现实问题

什么是流程图?

一个流程图是由节点(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

等待

 

 

 

设计模式:

  1. 基于客户的模式

  2. 基于流程状态的模式

 

需要处理的几个问题?

  1. 并发进程的处理,如客户取消订单等

  2. 会签

  3. 与现有Web项目集成

  4. 权限组织结构的处理

  5. 业务处理期限的控制