jbpm 5.3 - groups
melc May 28, 2012 9:33 AMHello,
I've noticed in 3 different computer systems (centos, win xp, win vista) that when creating a process with a human task that only has a groupId specified (i.e. ), the following exception is thrown when reaching the point of the human task.
6:01:28,031 ERROR [stderr] (Thread-13) java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [userId]
16:01:28,031 ERROR [stderr] (Thread-13) at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:206)
16:01:28,031 ERROR [stderr] (Thread-13) at org.jbpm.task.service.TaskServiceSession.getTasksAssignedAsPotentialOwnerByStatusByGroup(TaskServiceSession.java:1011)
16:01:28,031 ERROR [stderr] (Thread-13) at org.jbpm.task.service.TaskServerHandler.messageReceived(TaskServerHandler.java:356)
16:01:28,031 ERROR [stderr] (Thread-13) at org.jbpm.task.service.hornetq.HornetQTaskServerHandler.messageReceived(HornetQTaskServerHandler.java:44)
16:01:28,031 ERROR [stderr] (Thread-13) at org.jbpm.task.service.hornetq.BaseHornetQTaskServer.run(BaseHornetQTaskServer.java:85)
16:01:28,031 ERROR [stderr] (Thread-13) at java.lang.Thread.run(Thread.java:662)
16:01:28,031 ERROR [stderr] (Thread-13) Caused by: org.hibernate.QueryParameterException: could not locate named parameter [userId]
16:01:28,031 ERROR [stderr] (Thread-13) at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:99)
16:01:28,031 ERROR [stderr] (Thread-13) at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:105)
16:01:28,031 ERROR [stderr] (Thread-13) at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:437)
16:01:28,031 ERROR [stderr] (Thread-13) at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:407)
16:01:28,031 ERROR [stderr] (Thread-13) at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:201)
16:01:28,031 ERROR [stderr] (Thread-13) ... 5 more
16:01:28,031 ERROR [stderr] (Thread-33) Exception in thread "Thread-33" java.lang.RuntimeException: Client Exception with class class org.jbpm.task.service.hornetq.HornetQTaskClientConnector$1 using port 5445
16:01:28,046 ERROR [stderr] (Thread-33) at org.jbpm.task.service.hornetq.HornetQTaskClientConnector$1.run(HornetQTaskClientConnector.java:134)
16:01:28,046 ERROR [stderr] (Thread-33) at java.lang.Thread.run(Thread.java:662)
16:01:28,046 ERROR [stderr] (Thread-33) Caused by: java.lang.NullPointerException
16:01:28,046 ERROR [stderr] (Thread-33) at org.jbpm.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:62)
16:01:28,046 ERROR [stderr] (Thread-33) at org.jbpm.task.service.hornetq.HornetQTaskClientHandler.messageReceived(HornetQTaskClientHandler.java:56)
16:01:28,046 ERROR [stderr] (Thread-33) at org.jbpm.task.service.hornetq.HornetQTaskClientConnector$1.run(HornetQTaskClientConnector.java:120)
16:01:28,046 ERROR [stderr] (Thread-33) ... 1 more
16:01:48,031 ERROR [stderr] (http-localhost-127.0.0.1-8080-3) java.lang.RuntimeException: Timeout : unable to retrieve results
16:01:48,031 ERROR [stderr] (http-localhost-127.0.0.1-8080-3) at org.jbpm.task.service.responsehandlers.BlockingTaskSummaryResponseHandler.getResults(BlockingTaskSummaryResponseHandler.java:41)
16:01:48,031 ERROR [stderr] (http-localhost-127.0.0.1-8080-3) at
...............
...............
By checking out the code of org.jbpm.task.service.TaskServiceSession at line 1011 a named query is called as follows,
Query query = tpm.createQuery("TasksAssignedAsPotentialOwnerByStatusByGroup") .setParameter("userId", userId) .setParameter("groupIds", groupIds) .setParameter("language", language) .setParameter("status", status);
However as seen in Taskorm.xml inside jbpm-human-task-core-5.3.0.Final.jar/META-INF, indeed the named query has no userId parameter
<named-query name="TasksAssignedAsPotentialOwnerByStatusByGroup"> <query> select new org.jbpm.task.query.TaskSummary( t.id, t.taskData.processInstanceId, name.text, subject.text, description.text, t.taskData.status, t.priority, t.taskData.skipable, t.taskData.actualOwner, t.taskData.createdBy, t.taskData.createdOn, t.taskData.activationTime, t.taskData.expirationTime, t.taskData.processId, t.taskData.processSessionId) from Task t left join t.taskData.createdBy left join t.taskData.actualOwner left join t.subjects as subject left join t.descriptions as description left join t.names as name, OrganizationalEntity potentialOwners where t.archived = 0 and potentialOwners.id = :groupId and potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and ( name.language = :language or t.names.size = 0 ) and ( subject.language = :language or t.subjects.size = 0 ) and ( description.language = :language or t.descriptions.size = 0 ) and t.taskData.status in (:status) and t.taskData.expirationTime is null </query> <!-- hint name="org.hibernate.timeout" value="200"/ --> </named-query>
Is this the case or am i missing something??
Thanks