1. 程式人生 > >JBPM4.4學習之二:第一個流程例項

JBPM4.4學習之二:第一個流程例項

1)建立專案和相關配置

在eclipse中建立一個Java Project,將jbpm4.jar和lib資料夾下的第三方jar包Add到專案中。

按照個人習慣,建立config和jbpm兩個原始檔夾,用於放配置檔案和jbpm流程定義檔案。

將jbpm-4.4/examples/src中的拷貝到config原始檔夾中,以達到最快配置一個JBPM4應用。

修改jbpm.hibernate.cfg.xml中的相關配置,使得程式能夠連線到我們剛才定義的資料庫。不要忘記將url的字符集設定好,例如:

jdbc:mysql://localhost:3306/jbpm4?useUnicode=true&characterEncoding=UTF-8 如果你使用了其他資料庫,不要忘記將相關的jdbc驅動包放入專案中。

2)建立流程定義檔案

在jbpm原始檔夾中右鍵新建一個jPDL檔案,取名processTest.jpdl.xml,使用流程設計外掛,建立如下流程: 


<?xml version="1.0" encoding="UTF-8"?>

<process name="test"  key="test"  xmlns="http://jbpm.org/4.4/jpdl">
   <start name="start1" g="255,35,48,48">
      <transition name="提交到科長" to="科長審批" g="-63,-25"/>
   </start>
   <task assignee="張三" name="科長審批" g="230,148,92,52">
      <transition name="提交到主任" to="主任審批" g="-63,-25"/>
   </task>
   <task assignee="李四" name="主任審批" g="233,263,92,52">
      <transition name="通過" to="end1" g="-62,-25"/>
   </task>
   <end name="end1" g="259,379,48,48"/>
</process> 

3)編寫測試程式碼

建立一個類繼承junit.framework.TestCase;

package com.tgb.video;

import java.util.List;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.task.Task;

import junit.framework.TestCase;

public class testJbpm extends TestCase {

	//部署流程
	public void deploy(){
		ProcessEngine processEngine =  Configuration.getProcessEngine();
		RepositoryService repositoryService = processEngine.getRepositoryService();
		repositoryService.createDeployment().addResourceFromClasspath("test.jpdl.xml").deploy();
	}
	//建立流程例項
	public void createInstance(){
		ProcessEngine processEngine =  Configuration.getProcessEngine();
		ExecutionService executionService = processEngine.getExecutionService();
		ProcessInstance processInstance =  executionService.startProcessInstanceByKey("test");
		System.out.println("流程例項ID=======" + processInstance.getId() );
	}
	//獲取對應人員的任務
	public void getTask(){
		ProcessEngine processEngine =  Configuration.getProcessEngine();
		TaskService taskService = processEngine.getTaskService();
		List<Task> tasks = taskService.findPersonalTasks("李四");
		System.out.println("任務數量==" +tasks.size());
		Task task = tasks.get(0);
		
		System.out.println("任務名詞==" +task.getActivityName());
		System.out.println("任務人員==" +task.getAssignee() + "任務ID===" + task.getId());
	}
	//查詢流程例項當前所在節點
	public void getCurrectActivity(){
		ProcessEngine processEngine =  Configuration.getProcessEngine();
		ExecutionService executionService = processEngine.getExecutionService();
		String activityName = executionService.createProcessInstanceQuery().processInstanceId("test.20001").uniqueResult().findActiveActivityNames().toString();
		System.out.println("當前任務所在節點===" + activityName);
	}
	//完成任務
	public void completeTask(){
		ProcessEngine processEngine =  Configuration.getProcessEngine();
		TaskService taskService = processEngine.getTaskService();
		taskService.completeTask("40001");
	}
	
}

至此,我們就完成了一個最簡單的流程應用測試。

我要注意的地方

1)      資料庫jar驅動包

請確定已經為專案添加了對應的資料庫驅動包

2)      資料庫字符集

建立資料庫時的字符集要與專案的字符集相同

3)      Hibernate配置檔案的細節

方言與地址