现在的位置: 首页 > 综合 > 正文

工作流_JBPM之Helloword

2013年01月07日 ⁄ 综合 ⁄ 共 3700字 ⁄ 字号 评论关闭
 
环境: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=10002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=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=40001, 任务名称=部门经理审批, 任务办理人=部门经理, 任务创建时间=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=50001, 任务名称=总经理审批, 任务办理人=总经理, 任务创建时间=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
    -------------------------------------------------
    -------------------------------------------------

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

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

抱歉!评论已关闭.