JBPM工作流開發中JbpmContext與hibernate或ibatis中的DAO混合使用問題

在已獲得JbpmContext實例但未close之前,是否可以用hibernate或ibatis中的DAO?
1、調用ibatis
HashMap mapCond = new HashMap();
mapCond.put("actorId",actorId);
mapCond.put("docId",docId);
mapCond.put("state","等待審批");
List docBorrowList = docBorrowManager.searchDocumentBrrowList(mapCond);

//內部是ibatis來實現的

public List select(HashMap mapCond) {
return (List)getSqlMapClientTemplate().queryForList("selectDocBorrow", mapCond);
}

2、調用hibernate
List docBorrowList = docBorrowManager.searchDocumentBrrowList(actorId,docId,"等待審批");

//內部是hibernate實現

@Override
public List searchDocumentBrrowList(String actorId, long docId, String state) {
String hql = "select dw from DocBorrowInfo dw where dw.actorId = '"+actorId+"' and dw.docId="+docId+" and dw.state = '"+state+"'";
return this.getHibernateTemplate().find(hql);
}
前這兩種一運行到這句就無法debug下去,下一步調式按鈕變爲灰色,點擊運行也無法執行下去。

3、調用jbpmContext
List docBorrowList = jbpmContext.getSession().createQuery("from DocBorrowInfo where docId="+docId+" and actorId='"+actorId+"' and state='等待審批'").list();
而調用這種方式則沒有問題,可我程序裏其他地方也調用了DAO,如
/**
* 已查看確認信息結束流程
* @return
*/
public String haveGetConfirmMessage(){
String processInstanceId = this.getRequest().getParameter("processinstanceId");
String docborrowId = this.getRequest().getParameter("docborrowId");
try{
jbpmContext = jbpmConfiguration.createJbpmContext();
long id = 0;
if(null!=docborrowId&&!"".equals(docborrowId)){
id = Long.parseLong(docborrowId);
}
DocBorrowInfo documentBrrow = docBorrowManager.getDocumentBrrow(id);
//結束流程實例
String name = jbpmDelegate.nextStep(jbpmContext, Long.parseLong(processInstanceId),this.getWebUser().getUser().getName(), "結束授權");

if("結束".equalsIgnoreCase(name)){
//設置狀態爲“結束”
documentBrrow.setState(DocBorrowInfo.ENDSTATE);

jbpmContext.getSession().update(documentBrrow);
}

}finally{
jbpmContext.close();
}
return this.SUCCESS;
}
其中的 DocBorrowInfo documentBrrow = docBorrowManager.getDocumentBrrow(id);也是調用了hibernate的DAO中的方法

public DocBorrowInfo getDocumentBrrow(long id){

DocBorrowInfo documentBrrow = (DocBorrowInfo)this.getHibernateTemplate().load(DocBorrowInfo.class, id);

return documentBrrow;
}
現在還不知到底是何原因?

發佈了0 篇原創文章 · 獲贊 0 · 訪問量 2475
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章