环境: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
    -------------------------------------------------

    任务ID=10002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:20:18.0

  • 再启动第二个流程实例:startProcessInstance
  • 查询任务列表:findMyTaskList

    任务ID=, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:11.0
    任务ID=20002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:20:18.0

    任务ID=30002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:19.0
    -------------------------------------------------
    -------------------------------------------------
  • 办理任务:completeTask; taskId 改为:10002
        10002任务完成!
  • 查询任务列表:findMyTaskList

    任务ID=20002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:11.0
    任务ID=30002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:19.0
    -------------------------------------------------
    任务ID=, 任务名称=部门经理审批, 任务办理人=部门经理, 任务创建时间=2013-07-16 11:24:45.0
    -------------------------------------------------

    -------------------------------------------------

  • 办理任务:completeTask; taskId 改为:40001

        40001任务完成!
  • 查询任务列表:findMyTaskList
    任务ID=20002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:11.0
    任务ID=30002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:19.0
    -------------------------------------------------
    -------------------------------------------------
    任务ID=, 任务名称=总经理审批, 任务办理人=总经理, 任务创建时间=2013-07-16 11:28:52.0

    -------------------------------------------------

  • 办理任务:completeTask; taskId 改为:50001
        50001任务完成!
  • 查询任务列表:findMyTaskList
    任务ID=20002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:11.0
    任务ID=30002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:19.0
    -------------------------------------------------
    -------------------------------------------------

    -------------------------------------------------

    到此,第一个流程实例完成。
 
 

最新文章

  1. Win7 on VirtualBox 看不到 usb device
  2. C#中常用的系统内置委托
  3. python 选择排序
  4. Redis 一二事 - 在spring中使用jedis 连接调试单机redis以及集群redis
  5. Repository
  6. 解析mysql索引
  7. WP-PostViews Plus停止计数
  8. yum 命令提示语法错误
  9. MVC-03 控制器(4)
  10. [置顶] Java套接字Socket编程
  11. 用python -i写交互式shell
  12. 每天一道Java题[3]
  13. Git添加远程库和从远程库中获取(新手傻瓜式教学)
  14. Swift 了解(1)
  15. 了解前端中的SPA
  16. 在jquery中防止ajax重复提交
  17. 【原创】大叔经验分享(20)spark job之间会停顿几分钟
  18. est是基于less的样式工具库
  19. MySQL:数据操作
  20. 4.8 Sublime Text3 中配置 Python环境 --之下Sublime配置Python环境

热门文章

  1. 各种less开发工具
  2. [转]undefined reference问题总结
  3. VS2010 用WebBrowser控件 无响应
  4. css 关于两栏布局,左边固定,右边自适应
  5. Mahout之Navie Bayesian命令端运行
  6. 集成StyleCop到Jenkins CI
  7. IoC框架---通俗概述
  8. C10K problem
  9. strlen() 和 sizeof() 在字符串中的使用
  10. openNebula Image上传