`
HelloTommy
  • 浏览: 98930 次
  • 性别: Icon_minigender_1
  • 来自: 慈溪
社区版块
存档分类
最新评论

jBPM4实战系列(二)jBPM4.4+ssh 整合配置及完整实例

    博客分类:
  • jBPM
阅读更多

       整合jBPM4.4+ssh过程(spring 接管struts2和hibernate,例中都整合在application.xml中,没有单独的jbpm.hibernate.cfg.xml):

            

          1.在sessionFactory的mappingLocations属性加入以下几个jbpm.*.hbm.xml由jBPM自带

                <value>classpath:jbpm.repository.hbm.xml</value>  
                <value>classpath:jbpm.execution.hbm.xml</value>  
                <value>classpath:jbpm.history.hbm.xml</value>  
                <value>classpath:jbpm.task.hbm.xml</value>  
                <value>classpath:jbpm.identity.hbm.xml</value>

         

         2.jBPM自己内部的配置(spring来接管processEngine)

               <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
               <bean id="processEngine" factory-bean="springHelper" factory-

                                method="createProcessEngine"  />

              

               这样子就配好啦。只要在要用的地方注入processEngine就可以了!简单吧

 

         3.当然为了编程的方便,可以自己写个工具类,直接就可以通过注入这个类来获取所需要的jBPM服务

 

              

package com.ht.util;

import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.ManagementService;
import org.jbpm.api.ProcessDefinition;
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;

/**
 * jBPM4.4工具类
 * 
 * @author ht
 * 
 */
public class JBPMUtil {
	
	private ProcessEngine processEngine;
	private RepositoryService repositoryService = null;
	private ExecutionService executionService = null;
	private TaskService taskService = null;
	private HistoryService historyService = null;
	private ManagementService managementService = null;
	
	public JBPMUtil(){
		
	}
	public JBPMUtil(ProcessEngine processEngine) {
		this.processEngine = processEngine;
		repositoryService = processEngine.getRepositoryService();
		executionService = processEngine.getExecutionService();
		taskService = processEngine.getTaskService();
		historyService = processEngine.getHistoryService();
		managementService = processEngine.getManagementService();
	}

	

	public ProcessEngine getProcessEngine() {
		return processEngine;
	}

	public void setProcessEngine(ProcessEngine processEngine) {
		this.processEngine = processEngine;
		System.out.println("processEngine="+processEngine);
		repositoryService = processEngine.getRepositoryService();
		executionService = processEngine.getExecutionService();
		taskService = processEngine.getTaskService();
		historyService = processEngine.getHistoryService();
		managementService = processEngine.getManagementService();
	}

	public RepositoryService getRepositoryService() {
		return repositoryService;
	}

	public void setRepositoryService(RepositoryService repositoryService) {
		this.repositoryService = repositoryService;
	}

	public ExecutionService getExecutionService() {
		return executionService;
	}

	public void setExecutionService(ExecutionService executionService) {
		this.executionService = executionService;
	}

	public TaskService getTaskService() {
		return taskService;
	}

	public void setTaskService(TaskService taskService) {
		this.taskService = taskService;
	}

	public HistoryService getHistoryService() {
		return historyService;
	}

	public void setHistoryService(HistoryService historyService) {
		this.historyService = historyService;
	}

	public ManagementService getManagementService() {
		return managementService;
	}

	public void setManagementService(ManagementService managementService) {
		this.managementService = managementService;
	}
	
	
	
	/**
	 * 部署新流程定义
	 * @param resourceName
	 * @return 返回流程定义id
	 */
	public String deployNew(String resourceName) {
		return repositoryService.createDeployment().addResourceFromClasspath(
				resourceName).deploy();
	}

	
	/**
	 * 部署新流程定义(zip)
	 * @param resourceName
	 * @return 返回流程定义id
	 */
	public String deployZipNew(String resourceZipName){
		ZipInputStream zis = new ZipInputStream(this.getClass().getResourceAsStream(resourceZipName));
		
		return repositoryService.createDeployment().addResourcesFromZipInputStream(zis).deploy();	
		
	}
	
	
	/**
	 * 开始一个流程实例
	 * @param id
	 * @param map
	 * @return
	 */
	
	public ProcessInstance startPIById(String id,Map<String,?> map){	
		
		return executionService.startProcessInstanceById(id, map);		
		
	}
	
	/**
	 * 完成任务
	 * @param taskId
	 * @param map
	 */
	
	public void completeTask(String taskId,Map map){
		
		taskService.completeTask(taskId, map);	
	}
	
	/**
	 * 完成任务
	 * @param taskId
	 */
	public void completeTask(String taskId){
		taskService.completeTask(taskId);
	}
	
	
	/**
	 * 将任务流转到指定名字的流程outcome中去
	 * @param taskId
	 * @param outcome
	 */
	public void completeTask(String taskId,String outcome){
		taskService.completeTask(taskId, outcome);
	}

	/**
	 * 获得所有发布了的流程
	 * @return
	 */
	public List<ProcessDefinition> getAllPdList(){
		return repositoryService.createProcessDefinitionQuery().list();
	}
	
	/**
	 * 获得所有流程实例
	 * @return
	 */
	public List<ProcessInstance> getAllPiList(){
		return executionService.createProcessInstanceQuery().list();
	}
	
	/**
	 * 根据流程实例Id,即executionId获取指定的变量值
	 * @param executionId
	 * @param variableName
	 * @return
	 */
	public Object getVariableByexecutionId(String executionId,String variableName){
		return executionService.getVariable(executionId, variableName);
	}
	
	
	/**
	 * 根据任务id,即taskId获取指定变量值
	 * @param taskId
	 * @param variableName
	 * @return
	 */
	public Object getVariableByTaskId(String taskId,String variableName){
		return taskService.getVariable(taskId, variableName);
	}
	
	/**
	 * 获取指定用户名字的任务
	 * @param userName
	 * @return
	 */
	public List<Task> findPersonalTasks(String userName){
		return taskService.findPersonalTasks(userName);
	}
	
	/**
	 * 根据任务id获取任务
	 * @param taskId
	 * @return
	 */
	public Task getTask(String taskId) {
		return taskService.getTask(taskId);
		
	}
	
	

	/**
	 * 级联删除流程定义,直接删除该流程定义下的所有实例
	 * 
	 * @param deploymentId  流程定义id
	 */
	public void deleteDeploymentCascade(String deploymentId) {
		repositoryService.deleteDeploymentCascade(deploymentId);
	}

	

	

	

}

 

 

   完整的application.xml:

 

  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:context="http://www.springframework.org/schema/context"
	 xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">


	<!-- 配置数据源,导入c3p0-0.9.1.2.jar-->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass">
			<value>net.sourceforge.jtds.jdbc.Driver</value>
		</property>
		<property name="jdbcUrl">
			<value>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=jBPM</value>
		</property>
		<property name="user">
			<value>sa</value>
		</property>
		<property name="password">
			<value>123</value>
		</property>

	</bean>
	
	<bean name="hibernateProperties"
		class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="properties">
			<props>
				
				<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop> 

			</props>
		</property>
	</bean>
	
	<!-- spring集成hibernate配置 -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="hibernateProperties" ref="hibernateProperties" />
		<property name="mappingLocations">
			<list>
				<value>classpath*:com/ht/entity/*.hbm.xml</value>
				<!-- 以下几个jbpm.*.hbm.xml由jBPM自带 -->
				<value>classpath:jbpm.repository.hbm.xml</value>   
                <value>classpath:jbpm.execution.hbm.xml</value>   
                <value>classpath:jbpm.history.hbm.xml</value>   
                <value>classpath:jbpm.task.hbm.xml</value>   
                <value>classpath:jbpm.identity.hbm.xml</value> 
			</list>
		</property>
	</bean>
	
	

	<!-- jbpm配置 -->
	<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
	<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine"  />
	
	<bean id="jBPMUtil" class="com.ht.util.JBPMUtil">
		<property name="processEngine" ref="processEngine"></property>
	</bean>
	
	

	<!-- 事务配置 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

</beans>

 

 

 

   当然其他的配置还是比较多的。大家可以参照我前一篇文章。

 

   ok.基本就是这样。具体的大家可以直接看项目

   运行环境:myeclipse8.5+jBPM4.4+jdk1.6+sql server 2000(貌似网上没找到这种建表语句。所以我也上传了)。

                  其他的主要建表语句在\install\src\db下面。

 

   比较大,jar包都没有放的。

  • leave.rar (371 Bytes)
  • 描述: 这个实例中用到的2张库表
  • 下载次数: 935
12
0
分享到:
评论
11 楼 761431921 2017-11-20  
你好,请问能把jar包发我一下吗,qq:761431921@qq.com
10 楼 jun520 2016-03-11  
不错,找了好多资料都是不全的,终于找好多要的。谢谢。
9 楼 liulangdeyu999 2013-12-23  
楼主给发一份jar包呗,qq:475112247@qq.com
8 楼 lys221221 2013-08-07  
下载不下来 能发邮箱一份吗lys221221@163.com
7 楼 yane 2013-07-25  
能否将jar包发到我的邮箱371379502@qq.com,谢谢了~
6 楼 l1122303 2012-08-10  
能不能发一份jar包参考下,谢谢了啊
5 楼 livan1038 2012-06-26  
学习一下,谢啦
4 楼 ckl0653 2012-03-20  
能发一份完整的给我吗? 包含jar包的  谢谢你了。。  nickcyk@sina.com   现在比较急着用
3 楼 hinode 2011-12-09  
能不能把jar报发我邮箱,64632783@qq.com
2 楼 shenlongjianshou 2011-07-17  
能否把它们整合的所有包发到的邮箱guohuigang@126.com,不胜感激!先谢谢了~
1 楼 zhuchao_ko 2010-12-13  
笑納了先。

相关推荐

    jBPM4.4+ssh 整合配置及完整实例

    **jBPM4.4与SSH整合配置及完整实例详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于处理业务流程自动化。在本实例中,我们将讨论如何将jBPM 4.4版本与SSH(Spring、Struts、...

    jbpm4.4+ssh配置

    【jbpm4.4+ssh配置】涉及到的是Java业务流程管理(Business Process Management,简称BPM)中的jbpm4.4版本与SSH(Struts2、Spring、Hibernate)框架的集成配置。jbpm是一个开源的BPM框架,利用Java语言实现,提供了...

    JBPM4.4+ssh2+流程图实例

    【整合JBPM4.4与SSH2】 将JBPM4.4与SSH2结合,可以实现远程管理和控制JBPM的工作流实例。例如,通过SSH2连接到服务器,开发者可以使用命令行工具或自定义脚本来启动、停止、查询或干预流程实例。这在分布式环境或...

    jbpm4.4+ssh

    【jbpm4.4+SSH】是一个集成的Java企业级应用框架,主要涉及的是工作流管理系统jbpm4.4与Spring、Struts2(SSH)三大框架的整合。jbpm4是一个开源的工作流程管理系统,它提供了流程定义、执行、监控和优化等一系列...

    JBPM4.4+SSH整合

    **jbPM4.4与SSH整合详解** jbPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于业务流程的建模、执行和监控。版本4.4是jbPM的一个重要里程碑,提供了强大的流程定义和执行能力。SSH...

    JBPM4.4+SSH2完整整合jar包

    【JBPM4.4+SSH2完整整合jar包】是一个包含了一系列Java库的压缩包,主要用于帮助开发者在Java环境中实现业务流程管理(BPM)与Spring(SSH中的S)、Struts(SSH中的H)和Hibernate(SSH中的H)的深度集成。这个整合...

    jspm4.4+ssh集成实例

    【标题】"jspm4.4+ssh集成实例"揭示了这个项目是关于在Java Web环境中集成使用jbpm4.4(一个业务流程管理框架)和SSH(Spring、Struts2和Hibernate三个开源框架的简称)的技术实践。SSH是Java企业级应用开发中的常见...

    jbpm4.4+ssh2 完整请假流程

    【jbpm4.4+SSH2 完整请假流程】是一个结合了业务流程管理(BPM)工具jbpm4.4与Spring、Struts、Hibernate(SSH2)框架的示例应用,用于演示如何在企业级Java应用中实现一个完整的请假流程。这个项目的核心是jbpm,一...

    jbpm4.4+ssh2+sql server2000带jar包

    jbpm4.4用于定义和管理请假流程,SSH2框架则负责处理Web请求并与数据库交互,SQL Server 2000作为数据库存储流程实例和业务数据。开发者可以通过提供的jar包直接运行此应用,无需额外配置,从而快速体验和理解整个...

    JBPM4.4+SSH2 业务流 绑定表单Demo

    【JBPM4.4+SSH2 业务流 绑定表单Demo】是一个结合了Java企业级框架Spring(SSH2中的S和H)与工作流引擎JBPМ4.4的实战示例,用于演示如何在业务流程中集成自定义表单。这个Demo主要涵盖了以下几个关键知识点: 1. *...

    jbpm4.4+ssh+oracle + jqueryeasyui请假审批系统

    该压缩包文件“jbpm4.4+ssh+oracle + jqueryeasyui请假审批系统”包含了一个基于特定技术栈的工作流管理应用,旨在实现一个完整的请假审批流程。这个系统利用了jbpm4.4(Java Business Process Management)作为工作...

    JBPM4.4 + ssh2 + mssql2008请假流程设计示例

    在这个示例中,开发者会学习如何用JBPM4.4创建请假流程模型,使用SSH2来实现前端交互和后端逻辑,以及如何配置SQL Server 2008来存储流程相关数据。此外,还会涉及到权限管理、任务分配等高级功能。 通过这个项目,...

    Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合

    【JBPM4.4+Hibernate3.5.4+Spring3.0.4+Struts2.1.8整合】的整个过程涉及到多个关键组件的集成,这些组件都是Java企业级开发中的重要部分。首先,JBPM(Business Process Management)是一个开源的工作流引擎,它...

    jBPM4.4与ssh整合

    **jBPM4.4与SSH整合详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。SSH(Struts、Spring、Hibernate)是Java开发中的...

    ssh2+jbpm4.4 完整请假流程

    自从前些日子发布了如何整合JBPM4.4+ssh2后,有些朋友问我有没有一个完整一点的实例,我看过贩卖你的jbpm的教程,我就参考那个请假的实例把它改装成ssh2版的吧。顺便也加入了模拟不同的角色登陆后能接到不同的待办...

    jbpm4.4 ssh 整合

    总的来说,SSH与JBPM 4.4的整合是一个强大的组合,它为Java企业级应用提供了完整的业务流程解决方案。开发者可以通过这个整合实现复杂流程的自动化,并在SSH框架的支撑下,享受到便捷的开发和维护体验。

    jbpm4.4与ssh框架的整合

    ### jBPM 4.4与SSH框架的整合:深入解析与实践 #### jBPM:Java业务流程管理引擎 jBPM,全称为java Business Process Management,是JBoss旗下的一款开源工作流引擎,专为Java EE环境设计,提供了一种轻量级的解决...

    jbpm4.4整合ssh代码

    **jbpm4.4整合SSH代码详解** jbpm(Java Business Process Management)是一个开源的工作流管理系统,用于管理和执行业务流程。版本4.4是jbpm的一个早期版本,它提供了流程定义、执行、监控和管理的一整套解决方案...

Global site tag (gtag.js) - Google Analytics