工做流_JBPM之Helloword

 
環境:Eclipse 3.5 + java 6 + MySQL 5.5 + jBPM 4.4
 
一、創建 Java Project;
二、拷貝 XML配置文件放進工程目錄;
三、 創建 JPDL文件,畫流程圖;
四、編寫測試類;
 
完成的項目目錄:
  
 
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
    -------------------------------------------------
    -------------------------------------------------
    -------------------------------------------------
    到此,第一個流程實例完成。
相關文章
相關標籤/搜索