首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • JBPM的JBPMContext对象延迟加载的问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sliver08
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-08 14:30:11 楼主
    以下是我的一个action中的一个方法:
    Java code
    public ActionForward list(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { JbpmConfiguration configuration = Utils.configuration; JbpmContext jbpmContext = configuration.createJbpmContext(); String userName = (String) request.getSession() .getAttribute("userName"); try { TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession(); List list = taskMgmtSession.findPooledTaskInstances(userName); request.setAttribute("list", list); return mapping.findForward("list"); } finally { jbpmContext.close();//在这里把上下文关闭掉了,引起了页面出错 } }

    我在action中取得当前登陆用户的所有任务的list,将它放进request中转发到jsp,并显示.此时context已经关闭
    jsp部分代码如下
    Java code
    <table> <tr> <td>报销单ID</td> <td>环节名称</td> <td>建立时间</td> <td>操作</td> </tr> <logic:iterate id="task" scope="request" name="list"> <tr> <td><%=((TaskInstance) task).getVariable("baoxiaoId") %></td>//由于 variableInstances对象延迟加载,在取得变量的时候出错了 <td>${task.name}</td> <td>${task.create}</td> <td><input type="button" taskid="${task.id}" value="同意" onclick="agree(this.taskid);" /><input type="button" taskid="${task.id}" value="不同意" onclick="disagree(this.taskid);" /></td> </tr> </logic:iterate> </table>

    在取得任务的"baoxiaoId"变量时会出错,提示如下:
    failed to lazily initialize a collection of role: org.jbpm.taskmgmt.exe.TaskInstance.variableInstances, no session or session was closed
    错误大概意思是
    org.jbpm.taskmgmt.exe.TaskInstance.variableInstances session已经关闭,延迟加载失败
    在action中不把jbpmcontext对象关闭就没这问题了,但是此对象不关闭肯定是不合理的.
    难道把jbpm包中自带的map文件的延迟加载去掉??
    各位有什么好的解决办法啊?

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jspren
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 13:30:091楼 得分:0
    楼主做个中间变量,把需要的task的信息取出来放到中间变量上,然后再传递到JSP上
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhoden
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:11:212楼 得分:0
    在过滤器里关闭,就象spring的opensessioninview那个模式,请求页面返回之后才调用jbpmContext.close();//
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myflow
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 20:28:333楼 得分:0
    jbpm主要是对流程扭转的控制,对表单数据的控制也有,单功能不强,本人采用jbpm和润乾报表进行结合,jbpm只对扭成扭转进行控制,润乾报表对数据控制。这样就实现了流程挂接报表(统计报表和填报表表)在企业内部进行扭转,实现企业流程的信息化。
    工作流引擎(JBPM)实现企业内部信息化建设
    http://blog.csdn.net/myflow/archive/2008/08/26/2832580.aspx
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved