环境:Eclipse 3.5 + java 6 + MySQL 5.5 + jBPM 4.4
1、建立 Java Project;
2、拷贝 XML配置文件放进工程目录;
3、 建立 JPDL文件,画流程图;
4、编写测试类;
完成的项目目录:
jBPM 流程图:
helloword.jpdl.xml:
<?xml version="1.0" encoding="UTF-8"?> <process name="helloword" xmlns="http://jbpm.org/4.4/jpdl">
<start g="132,24,48,48" name="start1">
<transition g="-52,-22" name="to task1" to="提交申请"/>
</start>
<end g="132,456,48,48" name="end1"/>
<task g="108,108,92,52" name="提交申请" assignee="员工">
<transition g="-49,-13" name="to task2" to="部门经理审批"/>
</task>
<task g="108,228,92,52" name="部门经理审批" assignee="部门经理">
<transition g="-48,-12" name="to task3" to="总经理审批"/>
</task>
<task g="108,348,92,52" name="总经理审批" assignee="总经理">
<transition g="-48,-11" name="to end1" to="end1"/>
</task>
</process>
测试类:Helloword.java
package com.guilin.jbpm; import java.util.List; import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.task.Task;
import org.junit.Test; public class Helloword { private ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine(); // 部署流程定义
@Test
public void deployProcessDefinition() {
processEngine.getRepositoryService().createDeployment()
.addResourceFromClasspath("com/guilin/jbpm/helloword.jpdl.xml")
.addResourceFromClasspath("com/guilin/jbpm/helloword.png")
.deploy();
System.out.println("部署流程完毕!");
} // 启动流程实例
@Test
public void startProcessInstance() {
processEngine.getExecutionService().startProcessInstanceByKey("helloword");
System.out.println("启动流程实例成功!");
} // 查询我的任务列表
@Test
public void findMyTaskList() {
String[] userIds = { "员工", "部门经理", "总经理" }; for (int i = 0; i < userIds.length; i++) {
// 查询任务
List<Task> tasks = processEngine.getTaskService()
.findPersonalTasks(userIds[i]); // 显示任务信息
for (Task task : tasks) {
System.out.println("-------------------------------------------------");
System.out.println("任务ID=" + task.getId() + ", 任务名称="
+ task.getName() + ", 任务办理人=" + task.getAssignee()
+ ", 任务创建时间=" + task.getCreateTime());
}
}
} // 办理任务
@Test
public void completeTask() {
// 任务 ID
String taskId = "60001";
processEngine.getTaskService().completeTask(taskId);
System.out.println(taskId + "任务完成!");
} }
测试过程:
灰色部分为控制台输出:
- 执行部署流程:deployProcessDefinition部署流程完毕!
- 启动第一个流程实例:startProcessInstance启动流程实例成功!
- 查询任务列表:findMyTaskList
- 再启动第二个流程实例:startProcessInstance
- 查询任务列表:findMyTaskList
- 办理任务:completeTask; taskId 改为:1000210002任务完成!
- 查询任务列表:findMyTaskList
- 办理任务:completeTask; taskId 改为:4000140001任务完成!
- 查询任务列表:findMyTaskList
- 办理任务:completeTask; taskId 改为:5000150001任务完成!
- 查询任务列表:findMyTaskList
到此,第一个流程实例完成。