JBPM4.4學習之二:第一個流程例項
阿新 • • 發佈:2019-01-05
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配置檔案的細節
方言與地址