工作流_JBPM之Helloword


 
環境: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
    -------------------------------------------------
    -------------------------------------------------
    -------------------------------------------------
    到此,第一個流程實例完成。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM