jbpm工作流

原创 2016年08月28日 15:56:59

前言


    之前做.net的时候,工作流用过.net的workflow。在java中,用到的工作流框架有Jbpm、OSWorkflow、ActiveBPEL、YAWL等,下面就简单介绍一下Jbpm框架实现的工作流。


工作流


    工作流就是业务过程的部分或整体在计算机应用环境下的自动化,它主要解决的是使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行的问题,从而提高工作效率。


    工作流管理系统(Workflow Manage System)的主要功能是通过计算机技术的支持去定义、执行、管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流管理系统来实现。工作流管理系统是定义、创建、执行工作流的系统,应该提高一下三个方面的功能支持:


1、定义工作流:包括具体的活动规则等


2、运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度。


3、运行交互功能:指在工作流运行中,WfMS与用户及外部应用程序工具交互的功能。


Jbpm


    Jbpm即Java Business Process Management,是基于Java的业务流程管理系统。Jbpm是比较流行的一款开源工作流引擎,引擎底层基于Active Diagram模型,同样Jbpm使用了Hibernate,因此可以很好的支持主流数据库。


下面就以Jbpm4.4为例,简单介绍Jbpm工作流执行过程。


准备开发环境


    1、安装JDK:Java项目都要安装JDK,Jbpm4.4要求JDK版本要在JDK5.0或者以上版本。


    2、安装ANT:Ant是Jbpm开发必须的工具,安装过程类似于Tomcat,下载zip包,解压到某一个路劲下,配置系统变量ANT_HOME,指向解压的路径,并把ANT_HOME路径放到Path下。


    3、安装JBPM:Jboss Jbpm Starters Kit是一个综合包,包括 jBPM 软件包、开发插件、一个配置好了的基于 JBoss  jBPM 示例、一些数据库配置文件示例。


    jbpm:jBPM 的软件包

    jbpm-bpel:只含有一个网页

    jbpm-db:各种数据库hibernate配置文件示例,有些还包含了相应的jdbc驱动程序。

    jbpm-designer:辅助开发jBPM的Eclipse插件,具体在jbpm-gpd-feature子目录中

    jbpm-server:一个已经配置好了的基于JBoss的jBPM示例


4、配置Jbpm配置文件:


    添加Jbpm配置文件到编译路径下,一个jbpm.cfg.xml。另一个jbpm.hibernate.cfg.xml,配置数据库连接信息。


jbpm.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>
  <import resource="jbpm.default.cfg.xml" />
  <import resource="jbpm.businesscalendar.cfg.xml" />
  <import resource="jbpm.tx.hibernate.cfg.xml" />
  <import resource="jbpm.jpdl.cfg.xml" />
  <import resource="jbpm.bpmn.cfg.xml" />
  <import resource="jbpm.identity.cfg.xml" />
</jbpm-configuration>


jbpm.hibernate.cfg.xml:


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<!-- 数据库信息 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///jbpm4_20120229</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>

		<!-- 其他配置 -->
		<property name="hibernate.hbm2ddl.auto">update</property>

		<!-- 导入映射文件 -->
		<mapping resource="jbpm.repository.hbm.xml" />
		<mapping resource="jbpm.execution.hbm.xml" />
		<mapping resource="jbpm.history.hbm.xml" />
		<mapping resource="jbpm.task.hbm.xml" />
		<mapping resource="jbpm.identity.hbm.xml" />

	</session-factory>
</hibernate-configuration>


4、创建数据库


public void createSchema() throws Exception { // hbm2ddl.auto=update
	new org.hibernate.cfg.Configuration()//
			.configure("jbpm.hibernate.cfg.xml")//
			.buildSessionFactory();
}


    创建完成后,会在库中生成Jbpm的18张表,用来存放工作流的信息。


5、使用工作流


    补充:

    首先需要创建工作流引擎,然后部署流程定义,接下来启动流程实例,最后就可以查看任务列表和办理任务了。Jbpm工作流所有的操作都是通过Service API来完成的,它的API有以下几类:

processEngine.getRepositoryService();//管理流程定义的相关操作(部署,查询,删除等)
processEngine.getExecutionService();//管理执行的,流程实例的管理操作,一次具体执行的信息,包括启动、推进、删除Execution等操作
processEngine.getTaskService();//管理任务的(查询任务,办理任务)
processEngine.getHistoryService();//管理历史的数据(执行完的数据管理,主要是查询)


//创建工作流引擎
private static ProcessEngine processEngine = new Configuration()//
		.setResource("jbpm.cfg.xml")//
		.buildProcessEngine();

//部署流程定义
public void deployProcessDefintion() throws Exception {
	processEngine.getRepositoryService()//
			.createDeployment()//
			.addResourceFromClasspath("helloworld/helloworld.jpdl.xml")//定义好的工作流程生成的xml文件
			.addResourceFromClasspath("helloworld/helloworld.png")//定义好的工作流程生成的图片文件
			.deploy();
}

//启动流程实例
public void startProcessInstance() throws Exception {
	processEngine.getExecutionService().startProcessInstanceByKey(
			"helloworld"); //传入工作流程的key值,默认为name
}

//查看个人任务列表
public void findMyPersonalTaskList() throws Exception {
	 String userId = "员工";
	//查询
	List<Task> taskList = processEngine.getTaskService().findPersonalTasks( userId);
	//显示
	System.out.println("============= "+userId+"的个人任务列表============");
	for (Task task : taskList) {
		System.out.println("id=" + task.getId()//
				+ ", name=" + task.getName()// 人物名称
				+ ", assignee=" + task.getAssignee()); //办理人
	}
}

//任务办理
public void completeTask() throws Exception {
	String taskId = "30001";
	processEngine.getTaskService().completeTask(taskId);
}


    到这里为止,工作流的过程就执行完了。在查看个人任务列表这一步,输入不同的用户Id,可以得到不同用户的任务列表。办理任务时,根据不同的任务id可以从库中得到相应任务。


总结


     Jbpm作为Java中的工作流框架,和.NET中的WorkFlow是有很大相似之处的。首先都要用户自己定义一个流程,然后将这个流程部署,接着需要启动该流程,最后这个流程就可以被使用。在.NET中,10的VS是有工作流控件的,但是到了12版本的VS就没有可视化界面了。在Java中,只要给Eclipse安装Jbpm的流程设计器,即可看到可视化的流程定义界面,同时还可以生成xml和图片。有了.NET的基础,再理解Jbpm就简单多了。

版权声明:本文为博主原创文章,未经博主允许不得转载,装载请注明出处。

相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

myeclipse中SVN插件的基本使用(比较全)

MyEclipse中的SVN操作手册 1.导入项目   点击工具栏上的【File-Import】,进入下图 (如果你的对话框中没有SVN这一条目,可能是因为你没有安装SVN插件,请安装完成后...

jbpm-console部署到tomcat7上的修改

1)在jbpm-jpdl-3.2.3\deploy目录下执行antcustomize.console.for.tomcat,会在deploy\customized文件夹下生成一个jbpm-consol...

工作流JBPM

  • 2013年09月02日 11:07
  • 1.76MB
  • 下载

Jbpm工作流笔记

  • 2012年12月14日 08:55
  • 132KB
  • 下载

工作流-jbpm入门例子

原文地址:http://blog.csdn.net/hxirui/article/details/1221911 1.      jBPM的简单介绍 jBPM是JBOSS下的一个开源java工作流项...

jbpm5 工作流

  • 2013年04月12日 18:12
  • 1.8MB
  • 下载

jbpm工作流

  • 2014年06月16日 22:50
  • 327KB
  • 下载

10-jbpm工作流之"自定义活动Custom"

自定义工作流活动: 1.工作流图片:test.png: 2.配置文件test.jpdl.xml: 该配置指定了custom的实现类 ...

jbpm4.3工作流

  • 2013年08月12日 22:18
  • 81KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jbpm工作流
举报原因:
原因补充:

(最多只允许输入30个字)