- 浏览: 336817 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (87)
- 条形码 (3)
- Ext (8)
- hibernate (4)
- 数据库 (11)
- java (7)
- IO (1)
- openfire (2)
- js (13)
- jquery (1)
- xml (1)
- android (1)
- css (1)
- 手机 (1)
- tomcat (2)
- ssl (6)
- jbpm (2)
- webservice (3)
- 随记 (1)
- spring (1)
- jfreechart (1)
- struts2 (1)
- 工具 (3)
- Eclipse (1)
- php (2)
- Drools (2)
- linux (1)
- 设计模式 (3)
- git (2)
- ide (1)
- mysql (0)
最新评论
-
youyou_yo:
请问eclipse for developers 如何配置共享 ...
eclipse+apache+php+ZendDebugger配置 -
youyou_yo:
我按照这个操作没有成功,
eclipse+apache+php+ZendDebugger配置 -
ebony_fan:
遇到跟楼主一样的问题,根据你的解决办法已经解决了,感谢分享~
SSL:No Certificate file specified or invalid file format -
黑山老鹞:
一些jar包的作用 -
gwh_08:
wswangyj 写道伟华很勤奋啊 !呵呵,就是感觉有记录的必 ...
递归查询
JBPM4.4与SSH的集成。
1.引入jar包:
2.jbpm.cfg.xml文件的配置:位于src下
<?xml version="1.0" encoding="UTF-8"?> <jbpm-configuration> <import resource="jbpm.default.cfg.xml" /> <import resource="jbpm.tx.spring.cfg.xml" /> <import resource="jbpm.jpdl.cfg.xml" /> <import resource="jbpm.bpmn.cfg.xml" /> <import resource="jbpm.identity.cfg.xml" /> <import resource="jbpm.businesscalendar.cfg.xml" /> <import resource="jbpm.console.cfg.xml" /> <import resource="jbpm.jobexecutor.cfg.xml" /> <process-engine-context> <string name="spring.cfg" value="config/spring/applicationContext.xml" /> </process-engine-context> </jbpm-configuration>
3.spring配置文件applicationContext.xml的配置:位于src/config.spring包下
<?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: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/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" default-autowire="byName"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:database.properties </value> </list> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!-- use JNID Connection Pool --> <!-- <bean id="rlicDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/bookstore"/> </bean> --> <!--Hibernate SessionFatory--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mappingLocations"> <list> <!-- 以下几个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> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> ${hibernate.dialect} </prop> <prop key="hibernate.show_sql"> ${hibernate.show_sql} </prop> <prop key="hibernate.format_sql"> ${hibernate.format_sql} </prop> <prop key="hibernate.use_sql_comments"> ${hibernate.use_sql_comments} </prop> </props> </property> </bean> <!--Hibernate TransactionManager--> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!--Base TransactionProxyed Service Bean--> <bean id="baseTxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="transactionManager" /> <property name="proxyTargetClass" value="true" /> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="load*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="query*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="count*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="is*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="insert*">PROPAGATION_REQUIRED</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="edit*">PROPAGATION_REQUIRED</prop> <prop key="modify*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> <prop key="auto*">PROPAGATION_REQUIRED</prop> <prop key="send*">PROPAGATION_REQUIRED</prop> <prop key="deploy*">PROPAGATION_REQUIRED</prop> <prop key="start*">PROPAGATION_REQUIRED</prop> <prop key="complete*">PROPAGATION_REQUIRED</prop> <prop key="end*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED,readOnly </prop> </props> </property> </bean> <!-- jbpm配置 --> <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" /> <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" /> <!--jbpm4.4核心代码--> <bean id="jbpm4Utils" name="jbpm4Utils" class="com.jabberchina.jbpm4.utils.Jbpm4Utils"> <property name="processEngine" ref="processEngine"></property> </bean> </beans>
database.properties数据文件:位于src下
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/jbpmdb jdbc.username=root jdbc.password=root # #<!-- 当你使用mysql的时候,jbpm使用的是org.hibernate.dialect.MySQLInnoDBDialect --> # hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect hibernate.show_sql=true hibernate.format_sql=true hibernate.use_sql_comments=false hibernate.cache.use_query_cache=true hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider hibernate.hbm2ddl.auto=update #jbpmPath 工作流流程保存位置 # jbpmPath=com/jabberchina/jbpm/jpdl/ #
3.web.xml文件的配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>JBPM4.4WEB</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:config/spring/applicationContext*.xml</param-value> </context-param> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter> <filter-name>struts2Filter</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2Filter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring 刷新Introspector防止内存泄露 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <session-config> <session-timeout>30</session-timeout> </session-config> </web-app>
4.当然,数据库中表的创建是比不可少的,除了利用ant或者pom.xml能够自动创建数据库表外,不知道还有没有其他途径能够自动穿件数据库所需要的表。
JBPM4.4默认是试用hsql,内存中的数据库。
如果不利用jbpm(jbpm官网:http://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/jbpm-4.4.zip/download,所下载的jbpm-4.4.zip包)中所提供的ant或者pom.xml文件,而是手动创建一个jbpm的web工程,除了采用某人的hsql不用手动创建表外,其他数据,都需要手动的创建表。
首先解压,现在的jbpm-4.4.zip包.在目录%jbpm-4.4%\install\src\db\create文件夹下选择相应的数据库见表文件。本例中使用的是mysql数据库,所以在mysql数据库中导入jbpm.mysql.create.sql文件,在数据库空间名为jbpmdb的数据库空间内创建JBPM所需要的表即可。
至此。jbpm4.4+ssh配置部署完毕.
5.jbpm核心代码:
package com.jabberchina.jbpm4.utils; import java.util.List; import java.util.Map; import java.util.Set; import org.jbpm.api.Execution; import org.jbpm.api.ExecutionService; import org.jbpm.api.HistoryService; import org.jbpm.api.ManagementService; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.jbpm.api.RepositoryService; import org.jbpm.api.TaskService; import org.jbpm.api.model.ActivityCoordinates; import org.jbpm.api.task.Task; import com.jabberchina.core.Page; /** * @author guwh * @version 创建时间:2011-11-7 下午03:49:35 类说明 jbpm操作数据库模板类 */ public class Jbpm4Utils { private ProcessEngine processEngine; private RepositoryService repositoryService = null; private ExecutionService executionService = null; private TaskService taskService = null; private HistoryService historyService = null; private ManagementService managementService = null; public Jbpm4Utils() { } /** * 部署流程到数据库 * * @param resourceName * 资源文件名字 比如(com/jabberchina/jbpm/jpdl/process.jpdl.xml) * @return 返回流程定义id(格式:key-version) */ public String Deploy(String resourceName) { return repositoryService.createDeployment().addResourceFromClasspath( resourceName).deploy(); } /** * 创建一个新的流程实例 * * @param processDefinitionKey * (process.jpdl.xml中process标签的key) * @param processInstanceKey * (用户给的key,比如一个请假单的id) * @return 流程实例 */ public ProcessInstance startProcessInstance(String processDefinitionKey, String processInstanceKey) { return executionService.startProcessInstanceByKey(processDefinitionKey, processInstanceKey); } /** * 创建一个新的流程实例 * * @param processDefinitionKey * (process.jpdl.xml中process标签的key) * @return 流程实例 */ public ProcessInstance startProcessInstance(String processDefinitionKey) { return executionService.startProcessInstanceByKey(processDefinitionKey); } /** * 创建一个新的流程实例 * * @param processDefinitionKey * (process.jpdl.xml中process标签的key) * @param variables * 该流程实例要用到的变量 * @param processInstanceKey * (用户给定的业务key) * @return */ public ProcessInstance startProcessInstance(String processDefinitionKey, Map<String, ?> variables, String processInstanceKey) { return executionService.startProcessInstanceByKey(processDefinitionKey, variables, processInstanceKey); } /** * 提交任务(适合于第一个任务自动完成) * * @param processInstanceId * 任务id */ public void completeTaskByPid(String processInstanceId, String outcome, Map<String, ?> variables) { Task task = taskService.createTaskQuery().processInstanceId( processInstanceId).uniqueResult(); String taskId = task.getId(); taskService.completeTask(taskId, outcome, variables); } /** * 提交任务(适合于第一个任务自动完成) * * @param processInstanceId * 任务id */ public void completeTaskByPid(String processInstanceId, String outcome) { Task task = taskService.createTaskQuery().processInstanceId( processInstanceId).uniqueResult(); String taskId = task.getId(); taskService.completeTask(taskId, outcome); } /** * 提交任务 * * @param taskId * 任务id */ public void completeTask(String taskId) { taskService.completeTask(taskId); } /** * 将任务流转到指定名字的流程中去 * * @param taskId * @param outcome */ public void completeTask(String taskId, String outcome) { taskService.completeTask(taskId, outcome); } /*** * 将任务流转到指定名字的流程中去,并带有参数变量 * * @param taskId * @param outcome * @param variables */ public void completeTask(String taskId, String outcome, Map<String, ?> variables) { taskService.completeTask(taskId, outcome, variables); } /** * 根据key获取流程实例 * * @param key * * @return 返回查找到得流程实例,没有返回null */ public ProcessInstance getProcessInstance(String key) { return executionService.createProcessInstanceQuery() .processInstanceKey(key).uniqueResult(); } /** * 根据executionId获取指定的变量值 * * @param executionId * @param variableName * @return */ public Object getVariableByexecutionId(String executionId, String variableName) { return executionService.getVariable(executionId, variableName); } /** * 根据任务id获取指定变量值 * * @param taskId * @param variableName * @return */ public Object getVariableByTaskId(String taskId, String variableName) { return taskService.getVariable(taskId, variableName); } /** * 获取指定用户名字的任务,并分页 * * @param userId * @return */ public Page<Task> findPersonalTasksPage(Page<Task> page, String userId) { int totalCount = (int) taskService.createTaskQuery().assignee(userId) .count(); if (page == null) { page = new Page<Task>(); } List<Task> list = taskService.createTaskQuery().assignee(userId).page( page.getFirst(), page.getPageSize()).list(); if (list == null) return null; page.setResult(list); page.setTotalCount(totalCount); return page; } /*** * 获取要查页的Task列表 * * @param firstResult * @param maxResults * @param userId * @return */ public List<Task> findPersonalTasks(int firstResult, int maxResults, String userId) { return taskService.createTaskQuery().assignee(userId).page(firstResult, maxResults).list(); } /*** * 获取当然任务个数 * * @param userId * @return */ public Long findPersonalTaskCount(String userId) { return taskService.createTaskQuery().assignee(userId).count(); } /** * 根据任务id获取任务 * * @param taskId * @return */ public Task findPersonalTasks(String userId) { return taskService.createTaskQuery().assignee(userId).uniqueResult(); } /** * 根据任务id获取任务 * * @param taskId * @return */ public Task getTask(String taskId) { return taskService.getTask(taskId); } /*** * 将任务重新分配给指定人 * * @param taskId * @param assignee */ public void modifyAssignee(String taskId, String assignee) { taskService.assignTask(taskId, assignee); } /*** * 获取当前活动节点位置 * * @param key * 流程发布时KEY * @param taskId * 当前任务id * @return */ public ActivityCoordinates getActivityCoordinates(String key) { ProcessInstance processInstance = getProcessInstance(key); if (processInstance != null) { Set<String> activityNames = processInstance .findActiveActivityNames(); return repositoryService.getActivityCoordinates(getProcessInstance( key).getProcessDefinitionId(), activityNames.iterator() .next()); } else { return null; } } /** * 根据流程实例id获取 * * @param executionId * @return */ public Execution findExecutionById(String executionId) { return executionService.findExecutionById(executionId); } /*** * 删除流程实例 * * @param processInstanceId */ public void deleteProcessInstanceCascade(String processInstanceId) { executionService.deleteProcessInstanceCascade(processInstanceId); } /** * 彻底删除文件的部署 * * @param deploymentId流程定义id */ public void deleteDeploymentCascade(String deploymentId) { repositoryService.deleteDeploymentCascade(deploymentId); } public ProcessEngine getProcessEngine() { return processEngine; } public void setProcessEngine(ProcessEngine processEngine) { this.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; } }
相关推荐
ExtJs4.1+Jbpm4+SSH2+Oracle10g视频教程 视频教程正在上传中!先共享代码,有了代码,还买啥教程额! SSH2+JBPM+ExtJs4实战,JBPM是重点讲解。实战与demo的区别我不再多说,在以前工作中走过一些弯路,一些实现都是...
【jbpm4+SSH集成详解】 jbPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于处理业务流程的建模、执行和管理。版本4是jbPM的一个重要里程碑,提供了强大的工作流支持,包括流程定义、...
ExtJs4.1+Jbpm4+SSH2+Oracle10g视频教程 视频教程正在上传中!先共享代码,有了代码,还买啥教程额! SSH2+JBPM+ExtJs4实战,JBPM是重点讲解。实战与demo的区别我不再多说,在以前工作中走过一些弯路,一些实现都是...
jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 jbpm4.4 jar ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习
【jbpm5+SSH集成详解】 jbPM5和SSH(Spring、Struts、Hibernate)的集成是企业级Java应用开发中的常见实践,旨在利用jbPM5的流程管理能力与SSH框架的强大功能,构建出高效、灵活的企业级业务系统。jbPM5是一个开源...
【jbpm4.4+ssh】是一个集成项目,它结合了jbpm(Java Business Process Management)4.4版本与SSH(Spring、Struts、Hibernate)这三大流行的技术框架。jbpm是一个开源的工作流和业务流程管理系统,而SSH是Java开发...
将JBPM4.4与SSH2结合,可以实现远程管理和控制JBPM的工作流实例。例如,通过SSH2连接到服务器,开发者可以使用命令行工具或自定义脚本来启动、停止、查询或干预流程实例。这在分布式环境或自动化运维场景中非常有用...
"jBPM4实战系列(二)jBPM4.4+ssh 整合配置及完整实例" 这个标题表明我们将会探讨一个关于jBPM4的具体实战项目,特别关注的是如何将jBPM4版本与SSH(Spring、Struts和Hibernate)框架整合,并提供了一个完整的实现示例...
【jbpm4.4+ssh配置】涉及到的是Java业务流程管理(Business Process Management,简称BPM)中的jbpm4.4版本与SSH(Struts2、Spring、Hibernate)框架的集成配置。jbpm是一个开源的BPM框架,利用Java语言实现,提供了...
JBPM4.4整合SSH2的完整jar包,绝对可用!(注:此为Jar包第二部分,请搜索"JBPM4.4+SSH2完整整合jar包 par1",需要两部分一起解压!)
【JBPM4.4+SSH2完整整合jar包】是一个包含了一系列Java库的压缩包,主要用于帮助开发者在Java环境中实现业务流程管理(BPM)与Spring(SSH中的S)、Struts(SSH中的H)和Hibernate(SSH中的H)的深度集成。...
JBPM4.4整合SSH2的完整jar包,绝对可用!(注:此为第一部分,需要下载第二部分一起解压才可用,下载地址:http://download.csdn.net/detail/zf723182723/4385173)
**jBPM4.4与SSH整合配置及完整实例详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于处理业务流程自动化。在本实例中,我们将讨论如何将jBPM 4.4版本与SSH(Spring、Struts、...
在“jbpm4.4+ssh2+sql server2000带jar包”的项目中,这些jar包包含了jbpm4.4、SSH2框架以及其他依赖库的代码,用于构建和运行整个请假流程应用。 【jbpm_5_leave_web】可能是该项目的主模块或子目录,可能包含了...
【JBPM4.4+SSH2 业务流 绑定表单Demo】是一个结合了Java企业级框架Spring(SSH2中的S和H)与工作流引擎JBPМ4.4的实战示例,用于演示如何在业务流程中集成自定义表单。这个Demo主要涵盖了以下几个关键知识点: 1. *...
4. **jbpm**:jBPM是一个开源的工作流和业务流程管理系统,它允许开发者定义、执行和管理业务流程。jBPM提供了图形化的流程设计工具,并且可以与Spring、Hibernate等其他Java框架无缝集成,实现流程自动化。 5. **...
【jbpm4.4+SSH2 完整请假流程】是一个结合了业务流程管理(BPM)工具jbpm4.4与Spring、Struts、Hibernate(SSH2)框架的示例应用,用于演示如何在企业级Java应用中实现一个完整的请假流程。这个项目的核心是jbpm,一...
该压缩包文件“jbpm4.4+ssh+oracle + jqueryeasyui请假审批系统”包含了一个基于特定技术栈的工作流管理应用,旨在实现一个完整的请假审批流程。这个系统利用了jbpm4.4(Java Business Process Management)作为工作...
【标题】"JBPM4.4 + ssh2 + mssql2008请假流程设计示例"是一个关于企业级工作流管理系统实现的实践项目,它结合了JBPM(Java Business Process Management)4.4版本、SSH2(Struts2、Spring、Hibernate)三大框架...