zoukankan      html  css  js  c++  java
  • jbpm 错误解决方法

    1.执行流程出现如下错误:

    org.jbpm.pvm.internal.type.variable.UnpersistableVariable

    出现错误的原因:

    变量没有实现  Serializable 接口

    解决办法:

    变量需要实现   Serializable 接口。

    2.java.lang.ClassCastException: $Proxy53 cannot be cast to oracle.sql.BLOB

    出现错误原因:

    我使用的是Hibernate 3.6版本。

    解决办法:

    在网上查到解决办法 使用 hibernate3.5.4替换3.6.

    3.项目启动第一次访问,发布流程没问题。但是第二次启动项目,再发布一个新流程的时候报如下错误.

    2010-10-14 19:51:58,234 ERROR [org.hibernate.util.JDBCExceptionReporter] - 流已被关闭

    org.hibernate.exception.GenericJDBCException: could not initialize a collection: [org.jbpm.pvm.internal.repository.DeploymentImpl.resources#1]
    出现错误的原因是:

    hibernate自动创建数据库时,配置文件中某些字段被hibernate解析成long类型。

    在生成表后手动将LONG类型修改为字符串类型。

    4.在发布流程的时候 使用addResourceFromString方法发布流程,资源名称应该是 以 .jpdl.xml 结尾的。

    如果不是发布会不成功。

    5.流程定义文件读取乱码的问题。

    使用PL/SQL直接在数据库中查看是乱码,以为是Hibernate的问题。发现其他的数据都是正常的。

    java.io.InputStream ss = repositoryService.getResourceAsStream(deployment,"process.jpdl.xml");   

    //在这里指定字符编码UTF-8。

    BufferedReader in = new BufferedReader(new InputStreamReader(ss,"UTF-8"));

    StringBuffer buffer = new StringBuffer();   

     while ((line = in.readLine()) != null){   

                    buffer.append(line);   

     }   

     

    6.取得我的任务和候选任务。

    jbpm 中我是用hql获取自己的当前任务和候选任务,发现重复记录使用distinct出错,发现出错的原因是在JBPM4_TASK表中的字段为clob类型,我将其修改成nvarchar类型,再使用distinct查询问题解决了。

    StringBuffer hqlSb = new StringBuffer();
       hqlSb.append("select  distinct  task from org.jbpm.pvm.internal.task.TaskImpl task left join task.participations pt where task.assignee=?");
       hqlSb.append(" or  task.assignee is null and  ((pt.type = 'candidate' and   pt.userId =? )  ");

            if (groups.length()> 0) {
              hqlSb.append(" or pt.groupId in (" +groups + ")");
            }
            hqlSb.append(")");
            hqlSb.append(" order by task.createTime desc");


     

  • 相关阅读:
    Leetcode(337)-打家劫舍III
    Leetcode(213)-打家劫舍II
    Leetcode(198)-打家劫舍
    Leetcode(32)-最长有效括号
    计数排序
    智能指针
    C++中的explicit
    Leetcode(878)-第 N 个神奇数字
    Leetcode(877)-石子游戏
    C++的memset
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/1935643.html
Copyright © 2011-2022 走看看