Jbpm+spring
整合SPRING与JBPM核心就是需要将JBPM的BEAN由SPRING来管理利用IOC来展现SPRING框架的优势!
这2天在研究怎样整合两者!在整合过程中也出现了不少意想不到的问题!在这里记录下来希望可以未对此感兴趣的朋友提供些帮助!
SPRING+JBPM
1)下载SPRING-JBPM MODULE
这个模块是SPRING支持JBPM使用的必要模块!现在还没有放入SPRING的发行版本中!不过通过她基本可以实现了对JBPM的操作!代码需要从SPRING的CVS下载
地址是:pserver:anonymous@cvs.sourceforge.net:/cvsroot/springframework
从中获取SPRING-JBPM MODULE即可.
2)SPRING加载JBPM资源
SPRING-CONFIG.XML(部分)
数据源
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" destroy-method="close">
<property name="jndiName" value="jdbc/jbpm"/>
</bean>
HIBERNATE SESSION FACTORY
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
注意这里由于我使用的JBPM是以JAR的形式存在于CLASSPATH中的所以当加载其中的HIBERNATE实体描述文件的时候需要使用下面的写法
<property name="mappingJarLocations">
<list>
<value>WEB-INF/lib/jbpm-3.0.1.jar</value>
<value>WEB-INF/lib/jbpm-identity-3.0.1.jar</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
为了使HIBERNATE3查询的时候使用正确的语法需要指明查询工厂类,如果不指定回出现
ClassNotFoundException: org.hibernate.hql.ast.HqlToken 的错误!
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
下面红色的部分是SPRING管理JBPM的必要配置!里面的JBPMTEMPLATE是很重要的类
SPRING中使用JBPM基本都是通过她来完成的!
<bean id="hibernateConfiguration" factory-bean="&sessionFactory" factory-method="getConfiguration"/>
<bean id="jbpmSessionFactory" class="org.springframework.workflow.jbpm.LocalJbpmSessionFactoryBean">
<property name="hibernateSessionFactory" ref="sessionFactory"/>
<property name="hibernateConfiguration" ref="hibernateConfiguration"/>
</bean>
<bean id="jbpmTemplate" class="org.springframework.workflow.jbpm.JbpmTemplate">
<property name="jbpmSessionFactory" ref="jbpmSessionFactory"/>
</bean>
这是JBPM的管理既纳入到了SPRING中!
3)使用SPRING操作JBPM
在我们的类中需要调用JBPM的功能时我们只需要将JBPMTEMPATE类注入到我们的类中
在jbpmTemplate中实现了不多的几个方法,有很多JBPM的方法没有实现不过没关系我们可以使用SPRING中最常见的CALLBACK机制来实现我们的需要,下面举出几个例子:
A)保存流程定义方法
利用SPRING将jbpmTemplate注入进我们的类中
private JbpmTemplate jbpmTemplate = null;
public void setJbpmTemplate(JbpmTemplate jbpmTemplate) {
this.jbpmTemplate = jbpmTemplate;
}
/**
* 保存流程定义
* @param xmlStr 流程定义的JPDL的XML字符串形式
*/
public void saveWorkFlowDefinition(String xmlStr){
log.debug("saveWorkFlowDefinition start");
final ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(xmlStr);
//call spring jbpm call back for save processdefinition
jbpmTemplate.execute(new JbpmCallback(){
public Object doInJbpm(JbpmSession jbpmSession){
jbpmSession.beginTransaction();
GraphSession gSession = jbpmSession.getGraphSession();
gSession.saveProcessDefinition(processDefinition);
jbpmSession.commitTransaction();//这里我们只需要提交事物即可!关闭SESSION的工作JBPMTEMPLATE回帮助我们完成!
return processDefinition;
}});
log.debug("saveWorkFlowDefinition end");
}
B)取得所有的流程定义:
/**
* 取得所有的工作流定义
* @return 工作流定义列表
*/
public List getAllWorkFlow(){
log.debug("getAllWorkFlow start");
List list = (List)jbpmTemplate.execute(new JbpmCallback(){
public Object doInJbpm(JbpmSession jbpmSession){
GraphSession graphSession = jbpmSession.getGraphSession();
log.debug("getAllWorkFlow end");
List tempList = graphSession.findAllProcessDefinitions();
return tempList;
}});
log.debug("getAllWorkFlow end");
return list;
}
Jbpm+spring相关推荐
- 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)
昨天介绍了mybatis与spring的整合,今天我们完成剩下的springmvc的整合工作. 要整合springmvc首先得在web.xml中配置springmvc的前端控制器DispatcherS ...
- jbpm 4.3 与 spring 集成
jbpm4.2与spring集成有点问题,直接跟据它自己的"开发指南"提供的方法是不能集成的.在官网查到的信息是发布4.2时,忘记更新集成spring的文件.不过4.3已经把该bu ...
- JBPM 4.3 + Spring 3 + jBoss + JPA + JTA
来源:http://captaincaveman.posterous.com/jbpm-43-spring-3-jboss-jpa-jta-configuration Many an hour was ...
- JBPM4.4_jBPM4.4应用(与Spring集成自行控制事务等)
1. jBPM4.4应用 1.1. 与Spring集成(jBPM4.4 Developers Guide, Chapter 17. Spring Integration) 1.1.1. 在jbpm.c ...
- OA中SSH+JBPM项目整合
一,集成 Spring 与 Hibernate 1,配置SessionFactory 1,配置 ---------------------- applicationContext.xml ...
- 整合Struts2、Spring、Hibernate构建J2EE应用
[论文摘要] J2EE即是以Java 2平台为基础的体系结构,又是一组旨在简化企业解决方案的开发.部署.运行.维护等相关复杂问题的技术规范与指南.Struts2.Spring.Hibernate是当今 ...
- wtc java 代码 tpcall(servicename_[转载]Dorado+Spring+Wtc+Tuxedo开发
Dorado.Spring.WTC开发配置 本文档描述了如何使用WebLogic Tuxedo连接器将weblogic server8.1和tuxedo8.1互连(装好WebLogic和Tuxedo) ...
- 解决问题(七)——jsf+spring+hibernate整合(一)
jsf+spring+hibernate整合,于struts+spring+hibernate整合的过程非常相似(就不截图了,可以参考第一篇文章),但是前者相对于后者稍微麻烦一些. 第一步:初步整合, ...
- Bert Ertman专访:将Spring及遗留应用迁移到Java EE 6平台
本文来源于我在InfoQ中文站的采访文章,原文地址是:http://www.infoq.com/cn/articles/migrate-spring-legacy-to-javaee6 InfoQ:你 ...
最新文章
- 最大民科组织被取缔,鸡蛋返生、推翻相对论、量子速读都是他们干的
- 移动端实现PDF文件阅读的方法
- android progressbar 不显示_Android多线程技术选型最全指南(1)
- Elasticsearch6 去重
- 聊聊 HTTP 协议的知识点
- window.createPopup()用法以及短消息提示框代码
- ubuntu下oracle数据的导入,Ubuntu下Oracle10g的导入与导出
- 打开带图片的EXCEL文档反应慢 案例解析
- 水系图一般在哪里找得到_广东工业大学《JACS》:一种全新的高性能水系可充电铝离子电池!...
- python tensorflow 以图搜图_以图搜图系统工程实践
- 对潇潇暮雨洒江天,一番洗清秋。渐霜风凄紧,关河冷落,残照当楼。是处红衰翠减,苒苒物华休。唯有长江水,无语东流。不忍登高临远,望故乡渺邈,归思难收。叹年来踪迹,何事苦淹留?想佳人,妆楼颙望,误几回、天际
- java按键机nes模拟器_NES 模拟器开发教程 12 - 输入设备
- 【Python|Kaggle】机器学习系列之Pandas基础练习题(五)
- Fone Keeper Mac版,帮你轻松恢复iOS数据
- 【AWS云从业者基础知识笔记】——模块3:全球基础设施和可靠性
- 如何理解假设检验中的假设设计?
- 传感器i2c与arduino连接_如何在两个Arduino开发板之间使用I2C总线进行通信
- 面试28k职位,老乡面试官从HashCode到HashMap给我讲了一下午!「回家赶忙整理出1.6万字的面试材料」
- raid5数据丢失后应该怎么做才能提高数据恢复成功率?
- 网络安全-跨站请求伪造(CSRF)的原理、攻击及防御