求jbpm4+spring+jdbc操作
xiaoNet
2013-03-26
各位帮忙看看问题:
目前我是jbpm4.4+spring配置好了,具体对不对我也不知道,但是事务什么都能控制。 目前我有个service public String startProcess(String processDefKey,String billId) { String pid=executionService.startProcessInstanceByKey(processDefKey, billId).getId(); String sql=" select * from jbpm4_task a where a.procinstkey_='"+billId+"'"; List<Object> rs=commonDao.select(sql); System.out.println(rs.size()); return pid; } 很简单的一个需求,调用流程自己的api启动流程,然后我想自己写一个sql执行jdbc查询生成的task,我知道用taskService可以获取,我这里只是假设我是查询task这个sql,意思就是我这里要执行自定义sql,但是我查询不到,原因就是事务还没提交,而且jbpm里面的session与执行的dao session不是同一个,所以查询不到。 谷歌了N多,还是找不到解决方案。 我自定义command 实现jbpm内部的command public class CustomSelSqlCommand implements Command<Object>{ public Object execute(Environment environment) throws Exception { DbSession dbSession=environment.get(DbSession.class); String sql="select * from jbpm4_task a where a.procinstkey_='0002'"; List<Object> list=dbSession.sqlSelect(sql,param); return list; } 希望通过Environment 来获取 但还是拿到的session不是之前startProcess那个 求解决方案,能否实现会话一致。 |
|
xiaoNet
2013-03-26
有木有哥们帮忙解答解答 i am online
|
|
673529171
2013-03-26
你可以在执行这个流程前,先获取DbSession,两个服务同用一个DbSession
|
|
forevercoding
2013-03-27
基本上是集成问题,等会有时间回答下
|
|
xiaoNet
2013-03-27
673529171 写道 你可以在执行这个流程前,先获取DbSession,两个服务同用一个DbSession
谢谢你的建议,我有尝试过,在源码里面的startProcessCmd方法里面共用该dbsession,但还是不行,不过就算行,我觉得这种方式的集成也不好,每次扩展业务都在最底层的同一个方法里面执行,好像不好吧 |
|
xiaoNet
2013-03-27
forevercoding 写道 基本上是集成问题,等会有时间回答下
谢谢你的回答,基本上是集成的问题是不是可以肯定可以拿到同一个session呢,这真是太好了,非常期待你的回答啊。有email或者QQ么 |
|
forevercoding
2013-03-27
xiaoNet 写道 forevercoding 写道 基本上是集成问题,等会有时间回答下
谢谢你的回答,基本上是集成的问题是不是可以肯定可以拿到同一个session呢,这真是太好了,非常期待你的回答啊。有email或者QQ么 jbpm.spring.default.cfg.xml 有没有配置 <hibernate-session current="true"/> |
|
xiaoNet
2013-03-27
有配置
<?xml version="1.0" encoding="UTF-8"?> <jbpm-configuration spring="enabled" > <process-engine-context> <command-service name="newTxRequiredCommandService"> <retry-interceptor /> <environment-interceptor policy="requiresNew"/> <spring-transaction-interceptor policy="requiresNew"/> </command-service> <command-service name="txRequiredCommandService"> <retry-interceptor /> <environment-interceptor /> <spring-transaction-interceptor transaction-manager="transactionManager" /> </command-service> </process-engine-context> <transaction-context> <transaction type="spring" /> <hibernate-session current="true"/> </transaction-context> </jbpm-configuration> |
|
xiaoNet
2013-03-27
forevercoding 写道 xiaoNet 写道 forevercoding 写道 基本上是集成问题,等会有时间回答下
谢谢你的回答,基本上是集成的问题是不是可以肯定可以拿到同一个session呢,这真是太好了,非常期待你的回答啊。有email或者QQ么 jbpm.spring.default.cfg.xml 有没有配置 <hibernate-session current="true"/> 您说的是上面那个配置吗 |
|
forevercoding
2013-03-27
我没仔细看你代码,发现你的写的不对......
getId()一般是由流程key、流程的execution的dbid及流程路径名构成; 而jbpm4_task的procinst_字段存放的是dbid,没有procinstkey_字段 把executionService.startProcessInstanceByKey(processDefKey, billId)强转化为ExecutionImpl对象可以获取dbid; 注:这种问题完全可以调试出来,楼主需要转变下解决问题思路,以后碰到jbpm4.4难题可以问我,我初步看过些源码... |
相关讨论
相关资源推荐
- SSH所有jar+jbpm+json+extjs
- jbpm+spring
- JBPM 4.3 + Spring 3 + jBoss + JPA + JTA
- Jbpm 4.2 + Spring 配置
- jbpm4.4 +Spring mvc 整合架构
- Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子
- 一个JBPM5.2+Spring的例子
- jbpm4.4+spring3 整合
- jbpm4.3 + spring3.0 +oracle10g+hibernate3+tomcat6 集成笔记
- java spring orm jbpm_Mule+Spring+jbpm - 纯月部落 - CSDN博客