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,使用流程设计插件,创建如下流程: 


JBPM4.4学习之二:第一个流程实例_第1张图片

<?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配置文件的细节

方言与地址


你可能感兴趣的:(JBPM4.4学习之二:第一个流程实例)