`
Frederick
  • 浏览: 117798 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jBPM的懒加载好像有问题

阅读更多

        我在使用jBPM的时候,遇到一个问题。

        我在一个方法里面需要创建一个任务的实例,使用了下面的代码:

java 代码
  1. private void test() {   
  2.     ProcessInstance processInstance = this.getProcessInstance(0L);   
  3.     Token token = processInstance.getRootToken();   
  4.     TaskNode taskNode = (TaskNode) token.getNode();   
  5.     Task task = taskNode.getTask("taskName");   
  6.     TaskMgmtInstance tmi = processInstance.getTaskMgmtInstance();   
  7.     TaskInstance taskInstance = tmi.createTaskInstance(task, token);   
  8. }  

        结果却发现抛出了ClassCassException。原因是jBPM在加载ProcessInstance的时候,对 token 等懒加载了,所以返回的token以及由token得到的taskNode都是代理对象。这个代理对象是 Node 的子类,所以如果 token.getNode() 的结果不转换为 TaskNode 类型的话,是不会出错的。但是如果要转换为 TaskNode 类型,就会抛异常,尽管这个Node确实是 TaskNode 类型的。

        按理说,Hibernate对Node节点进行代理的时候,应该是用这个Node的实际类型(即Node的子类类型,比如TaskNode等)来代理的,而不应该用父类的类型(即Node类型)来代理。为什么还会这样呢?

        不知道有没有什么办法解决这个问题? 我用了以下的方式来处理:

java 代码
  1. Task task = tmi.getTaskMgmtDefinition().getTask("taskName");  

        这样就不会有问题。

分享到:
评论

相关推荐

    jbpm4jbpm5

    jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...

    jbpm4.3问题解决

    总之,解决jbpm4.3问题需要对jbpm的工作原理、数据库结构以及部署环境有深入的理解。通过对错误日志的分析、数据库的检查以及配置的核查,我们可以逐步找到问题的根源并采取相应措施进行修复。同时,持续学习和关注...

    jbpm简介\jbpm简介

    ### jBPM简介与关键技术知识点 #### 一、jBPM概述 jBPM是一个开源的、纯Java的、轻量级的商业流程管理(Business Process Management, BPM)工作流引擎。它支持多种可执行流程语言,并且可以在任何JavaEE应用...

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    jbpm 案例 jbpm jbpm

    jbpm使用案例,非常不错,大家都来看看吧。

    jbpm开发指南--jbpm全面介绍

    每一个流程产生了多少个流程实例,有哪些流程实例结束了,哪些处于活动状态,哪些挂起了;同时对于每一个流程实例当前走到什么位置了(流程的进度状况)等等。通过查看JBPM的API我们发现API里并没有提供实现该功能...

    jbpm4.3常见问题解决

    通过上述两份文档,读者可以对jBPM 4.3的常见问题有更直观的认识,并学习如何解决这些问题,从而提高使用效率,避免不必要的困扰。同时,了解核心概念有助于构建完整的业务流程管理系统,推动企业业务自动化的发展。

    jbpm+ssh整合

    jbpm需要自己的session来执行工作流操作,而SSH框架通常有自己的持久化机制。这里可以利用Spring的Transaction Management,统一管理事务和session,确保数据的一致性。 此外,Spring-modules-0.8中的spring31模块...

    jBPM3.2.rar_JBPM3.2_jbpm_jbpm 3.2_jbpm3_jbpm3.2教程

    你可以通过阅读这个文档,深入了解jbPM 3.2的使用方法,解决在实际项目中遇到的问题。 总的来说,jbPM 3.2是一个强大的工作流管理系统,通过深入理解和实践,开发者可以构建出高效、灵活的业务流程,提高企业的业务...

    jbpm-3.1.2.zip_jbpm_jbpm 3.1.2_jbpm-3.1.2.rar_jbpm3.1.2_工作流

    jbpm-3.1.2.zip 文件包含了 jBpm 的一个重要版本——jBpm 3.1.2,这是一个开源的工作流管理系统,专为构建灵活且可扩展的业务流程解决方案而设计。jBpm 提供了一种方式,使得开发者能够用简单而强大的语言来表达业务...

    jbpm白皮书 介绍jbpm 入门

    从商业层面来看,部署工作流或业务流程迫使组织创建正式的程序描述,这有助于揭示业务效率方面的问题。在很多情况下,这一过程会暴露出对企业有严重影响的业务低效问题,并成为流程再工程的障碍。因此,通过引入 BPM...

    jbpm

    而工具则可能是一些辅助开发的库、配置文件或脚本,有助于快速搭建和调试环境。 "jbpm4struts2"可能是整合后的项目名称,表示jbpm与Struts2的集成实例,而"jbpm4struts2的包.png"则可能是项目结构图或者关键配置的...

    jbpm数据库数据,导入即可使用

    导入这些jbpm数据库数据,用户可以直接复用已有的流程设置,无需从头开始配置,大大节省了时间和资源。对于希望快速搭建和运行jbpm工作流系统的人来说,这是一个非常有价值的资源。同时,这种数据导入操作也常用于...

    jBPM4.4.rar_jbpm4.4_jbpm4.4 PDF

    在《jBPM4.4中文用户手册》中,用户可以找到更详细的使用指南,包括安装配置、基本操作、示例教程以及常见问题解答等内容。手册将帮助用户快速上手,实现jBPM在实际项目中的应用。 总的来说,jBPM4.4是企业级业务...

    JBPM4 SSH EXTJS JBPM SSH EXTJS

    JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS 希望对大家有帮助。

    jbpm jbpm3 jbpm4 用户和开发指南+教程+最佳实践全套

    "JBPM最佳实践.txt"则可能包含了一系列在实际项目中运用jbpm时的最佳实践建议,如性能优化、流程设计原则、错误处理策略等,旨在帮助开发者避免常见问题,提升项目的质量和效率。 通过这些文档,学习者可以全面了解...

    jbpm数据库表介绍

    在 jbpm 4.4 中,主要使用的数据库表有: jbpm4_deployment jbpm4_deployment 表用于存储流程部署的记录,包括流程定义、流程实例、任务等信息。该表通过 dbid 字段关联到 jbpm4_deployprop 和 jbpm4_lob 两个表。...

    jbpm文档,Jbpm 帮助

    - **问题与疑问解答**:提供了一份FAQ列表,帮助解决常见问题。 #### 四、快速启动案例 - **调用Java服务**:演示如何通过脚本任务、Java处理器或自定义领域特定任务等方式调用Java服务。 - **使用脚本任务**:...

    JBPM web(SSH+JBPM) 例子

    【JBPM web(SSH+JBPM)例子】是一个基于Java技术栈实现的工作流管理系统示例,其中SSH代表Spring、Struts和Hibernate这三个流行的Java企业级开发框架的组合,而JBPM则是Business Process Management(业务流程管理...

Global site tag (gtag.js) - Google Analytics