jBPM开发:实现一个简单的审批流程

二月 18, 2009 in Java开源

 

本文使用jBPM自带的身份认证组件模型来实现一个简单的审批流程,其中使用到的技术点在本文中暂且

不解释,就先来一个先睹为快,对jBPM最常用的功能有一个感性的认识,在后面的文章中慢慢解释各个技术点,

进一步的加深jBPM的应用。

 

1,数据准备

 

jBPM的身份认证组件基于以下几张表:

  1. JBPM_ID_GROUP:组模型的层次关系
  2. JBPM_ID_MEMBERSHIP:模型组下的成员关系
  3. JBPM_ID_USER:成员信息

 

为了进行展示,我们先创建一些基础数据来测试后面创建的审批工作流

1
2
3
4
5
6
7
8
9
10
11
12
13
insert into JBPM_ID_GROUP (ID_, CLASS_, NAME_, TYPE_, PARENT_)
values (1, 'G', '资源管理室', 'UM', 2);
 
insert into JBPM_ID_MEMBERSHIP (ID_, CLASS_, NAME_, ROLE_, USER_, GROUP_)
values (6, 'M', null, 'role_superadmin', 1, 1);
insert into JBPM_ID_MEMBERSHIP (ID_, CLASS_, NAME_, ROLE_, USER_, GROUP_)
values (7, 'M', null, 'departmentManager', 2, 1);
 
insert into JBPM_ID_USER (ID_, CLASS_, NAME_, EMAIL_, PASSWORD_)
values (1, 'A', 'aronehome1', 'arone.lijun@gmail.com', '111111');
insert into JBPM_ID_USER (ID_, CLASS_, NAME_, EMAIL_, PASSWORD_)
values (2, 'A', 'aronehome1', 'arone.lijun@gmail.com', '111111');
commit;

 

2,定义流程

 

使用jBPM的流程定义向导来创建一个新的流程定义

  1. 首先在src/java目录下创建java包结构com.hand.processes
  2. 启动jBPM流程定义向导定义流程:表达式审批流程
    Source Folder:jBPMDemo/src/java/com/hand/processes
    Process Name:expression_approve
  3. 选择左边工具面板中的图标,后点击右边的画布创建流程中的各节点
  4. 添加节点后使用 clip_image001 将各节点连接起来

 

完成后的效果如下图:

clip_image002

 

<<Task Node>>审批任务节点中,右键选择审批任务节点,添加一个任务,如下图:

clip_image002[6]

 

clip_image002[8]

 

Task Name:审批

Assignment Type:Expression

Assignment Expression:group(资源管理室)–>member(role_superadmin)

这个表达式利用了jBPM自带的身份组件模型,只要指定组的名称和角色的名称,jBPM会自动找出符合条件的用户,并为她们创建任务实例。

 

上面的审批流程说明流程启动之后就等待一个任务的执行,这个任务由组为:资源管理室,并且角色为:role_superadmin 的用户,

因此我们上面的数据中找到的用户就是aronehome,流程会等待aronehome这个用户的一个动作之后才会继续往下执行,否则一直处于等待状态。

 

 

3,发布流程到数据库

 

由于jBPM流程运行的时候,它是从数据库中读取相关的流程定义信息,因此开发完成流程之后需要先将流程定义信息发布到数据中。

在Myeclipse设计器中选择Deployment,选择本地保存方式,先将流程定义文件和图片打包为zip文件,选择如下图点击“Save Without Deploying…”按钮

clip_image002[10]

 

然后运行之前创建的“流程发布页面”:

http://localhost:7001/jbpmWeb/deploy.html

选择保存的zip文件,发布后可以到数据库中去验证流程是否成功。

1
SELECT * FROM jbpm_processdefinition WHERE name_ = '表达式审批流程';

 

 

4,启动jBPM流程

 

启动流程可以采用如下的两种方法

  1. 使用jBPM控制台管理页面来启动流程(操作步骤省略)
  2. 编写测试脚本来启动流程,主要的启动代码:
1
2
ProcessInstance processInstance = JbpmConfiguration.parseResource("jbpm.cfg.xml").createJbpmContext().newProcessInstance("表达式审批流程");
processInstance.signal();

 

 

5,查看流程执行图

 

先查询出流程中的任务实例ID(此SQL仅能用于开发中不严格的数据查询):

1
2
3
4
5
6
7
8
SELECT id_, name_, actorid_
  FROM jbpm_taskinstance
 WHERE token_ = (SELECT MAX(roottoken_)
                   FROM jbpm_processinstance
                  WHERE processdefinition_ =
                        (SELECT MAX(id_)
                           FROM jbpm_processdefinition
                          WHERE name_ = '表达式审批流程'));

 

运行之前创建的“流程执行情况查看页面”:

http://localhost:7001/jbpmWeb/showDiagram.jsp

输入上面SQL查询处理的taskinstance id,效果图如下:

clip_image002[12]

 

上图说明流程执行到审批这个任务节点,等待用户做出响应。

 

 

下一篇文章开始描述jBPM的主要组成。

 

 

相关文章:

  1. jBPM开发:实现审批工作流(一)
  2. jBPM开发:上下文(Context)和流程变量
  3. jBPM开发:配置Eclipse IDE开发环境

4 responses to jBPM开发:实现一个简单的审批流程

  1. @aronezhang
    等着和你做项目等到花儿谢了又开了 老大 这个项目结束后 把我招到你那边去吧 呵呵! 我java基础还在的

  2. 不说都忘记了,原来你搞过jBPM的啊,看来下次要找你做项目!

  3. 让我回忆起大学用jBPM做的一个简单请假流程,然后在简历中加了项workflow 呵呵!顶老大

  4. 牛人啊,顶。 狂顶 哈哈

Leave a reply

You must be logged in to post a comment.