Jbpm工作流引擎学习日志

阅读更多

1.jbpm介绍

     jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储。下载地址:http://pan.baidu.com/s/1ntr8t6L

 

2.jbpm环境搭建

    安装gpd、配置runtime环境、导入jbpm所需的jar包、创建配置文件jbpm.cfg.xml和jbpm.hibernate.cfg.xml

 

    jbpm.cfg.xml 配置如下:


 
   
   
   
   
   
   
  

 

    jbpm.hibernate.cfg.xml 配置如下:

 

     

 


	
		jdbc:sqlserver://localhost:1433;databaseName=Jbpm
		sa
		woaixua52110
		com.microsoft.sqlserver.jdbc.SQLServerDriver
		org.hibernate.dialect.SQLServerDialect
		create-drop
		true
		true

		
		
		
		
		
	



   这里这用的是Sql server的配置,这里需要注意的是create-drop这个属性。  有两种:update和create-drop,不建议使用create-drop,因为如果数据库里已经存在表,他会先drop然后再创建。

 

  新建一个jpdl流程文件

 

    




   
      
   
   
      
   
   
      
   
   

    设计图如下:

 


Jbpm工作流引擎学习日志_第1张图片
 

配置文件啥的都弄好后,开始测试 

 

package com.jbpm.demo;

import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.RepositoryService;

import junit.framework.TestCase;

public class JbpmDemo extends TestCase {
	
	/**
	 * 部署、初始化 创建jbpm所需的表
	 */
	public void deploy(){
		ProcessEngine processEngine = Configuration.getProcessEngine();
		RepositoryService repositoryService = processEngine.getRepositoryService();
		repositoryService.createDeployment().addResourceFromClasspath("test.jpdl.xml").deploy();
	}
	
	
}

   单元测试成功后,数据库里会新那18张jbpm相应表,如下图
Jbpm工作流引擎学习日志_第2张图片
 

 3.jbpm简单的例子

 

package com.jbpm.demo;

import java.util.List;

import junit.framework.TestCase;

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;

public class JbpmDemo extends TestCase {

	public ProcessEngine processEngine = Configuration.getProcessEngine();

	/**
	 * 部署、初始化 创建jbpm所需的表
	 */
	public void deploy() {
		RepositoryService repositoryService = processEngine
				.getRepositoryService();
		repositoryService.createDeployment()
				.addResourceFromClasspath("test.jpdl.xml").deploy();
	}

	/**
	 * 创建流程实例
	 */
	public void createInstance() {
		ExecutionService executionService = processEngine.getExecutionService();
		ProcessInstance processInstance = executionService
				.startProcessInstanceByKey("leave");
		System.out.println("流程实例Id:" + processInstance.getId());
	}

	/**
	 * 获取对应人员任务
	 */
	public void getTask() {
		TaskService taskService = processEngine.getTaskService();
		List tasks = taskService.findPersonalTasks("李四");
		for (Task task : tasks) {
			System.out.println("当前任务ID:" + task.getId());
			System.out.println("当前任务名:" + task.getActivityName());
			System.out.println("当前任务分配人员:" + task.getAssignee());
		}
	}

	/**
	 * 查询流程实例当前所在节点
	 */
	public void getCurrectActivity() {
		ExecutionService executionService = processEngine.getExecutionService();
		String activityName = executionService.createProcessInstanceQuery()
				.processInstanceId("leave.10001").uniqueResult()
				.findActiveActivityNames().toString();
		System.out.println("当前流程节点:" + activityName);
	}

	/**
	 * 完成任务
	 */
	public void completeTask() {
		TaskService taskService = processEngine.getTaskService();
		taskService.completeTask("10002");
	}
}

 4.jbpm服务介绍

     jpbm主要对象包括:Configuration 和ProcessEngine

     Configuration是jbpm的配置文件管理对象即资源加载对象.负责加载jbpm的各种配置如数据库连接配置,事务配置,身份认证,jpdl等相关配置.

     ProcessEngine是一个服务工厂,有点类似hibernate的sessionFactory负责创建jbpm的每个服务.

     

ProcessEngine又包括以下6个服务

    1>RepositoryService

流程资源服务接口。提供对流程定义的部署、查询、删除和流程图查看等操作。

    2>ExecutionService

流程执行服务接口。提供启动流程实例、推进、删除等操作。

    3>TaskService

人工任务服务接口。提供对任务的创建、提交、查询、保存、删除等操作。

    4>HistoryService

流程历史服务接口。提供对任务的管理操作。提供对流程历史库中历史流程实例、历史活动实例等记录的查询。

    5>ManagementService

流程管理接口,通常用来管理Jop(异步服务)

    6>IdentityService

身份认证服务接口。提供对流程用户、用户组管理

  • Jbpm工作流引擎学习日志_第3张图片
  • 大小: 28.6 KB
  • Jbpm工作流引擎学习日志_第4张图片
  • 大小: 56.7 KB
  • 查看图片附件

你可能感兴趣的:(Jbpm,工作流引擎,java)