-
1. PermissionDeniedException on task Claim
dekadence Mar 17, 2011 9:24 AM (in response to tomashuryn)HI, in order to claim the task, the task has to be in a Ready state, i.e. it has to have the Status.Ready status. See http://hudson.jboss.org/hudson/job/jBPM5/lastSuccessfulBuild/artifact/target/jbpm-5.1-SNAPSHOT-docs-build/jbpm-docs/html_single/index.html#d0e179. You probably tried to invoke the claim operation on a task, that has already been assigned to someone.Please note, that If the task only has one pottential owner(like in the self evaluation process in the jbpm5 demo) it is assigned to him automatically. Try to load the task a have a look at the status attribute.
-
2. PermissionDeniedException on task Claim
jlgranda81 Apr 28, 2011 1:10 PM (in response to dekadence)Hi Matus in effect, I did change to Status.Ready and pass [org.jbpm.task.service.PermissionDeniedException: User '[User:'krisv']' was unable to execution operation 'Claim' on task id 13 due to no 'current status' matchines, but get [org.jbpm.task.service.PermissionDeniedException: User '[User:'krisv']' does not have permissions to execution operation 'Claim' on task id.
I try assign user to Potential Owner, it works, but the original task owner is a group accounting, the claim user is member of this group. Any Idea?
-
3. PermissionDeniedException on task Claim
bpmn2user Apr 28, 2011 11:57 PM (in response to jlgranda81)Do you want to post the example code you used? It might be possble to suggest a solution if you share the sample code you have used.
-
4. PermissionDeniedException on task Claim
jlgranda81 Apr 29, 2011 11:29 AM (in response to bpmn2user)Sure, it is my claim method
public static void claimTask(TaskClient client, long taskId, String userId) throws InterruptedException {
BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
responseHandler.waitTillDone(5000);
// Thread.sleep(10000);
responseHandler = new BlockingTaskOperationResponseHandler();
client.claim(taskId, userId, responseHandler);
responseHandler.waitTillDone(5000);
}
I have a procces with two human tasks, each one assing to Group ridrensur.financiero.secretaria (see bpmn fragment after). When I start process the first task is created with createby_id and actualowner_id to ridrensur.financiero.secretaria, it is a group in organizationalentity
<potentialOwner>
<resourceAssignmentExpression>
<formalExpression>ridrensur.financiero.secretaria</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
I have code for list Group Task
public static List<TaskSummary> getUnassignedTasks(TaskClient client, String idRef,
List<String> roles, String participationType) {
List<TaskSummary> result = new ArrayList<TaskSummary>();
try {
BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
if (roles == null) {
client.getTasksAssignedAsPotentialOwner(idRef, "en-UK",
responseHandler);
} else {
client.getTasksAssignedAsPotentialOwner(idRef, roles, "en-UK",
responseHandler);
}
result = responseHandler.getResults();
} catch (Throwable t) {
t.printStackTrace();
}
return result;
}
It not works by ridrensur.financiero.secretaria is a Group, for run it I have to change createby_id to "Administrator" and actualowner_id to null in task, then getUnassignedTasks method works correctly. In the group list view I have claim for an user the first task from my user view button labeling as "claim", get current user from session. This button call for claimTask method.
I trace claim method on org.jbpm.task.service.TaskClient (https://github.com/krisv/jbpm/blob/master/jbpm-human-task/src/main/java/org/jbpm/task/service/TaskClient.java) and org.jbpm.task.service.TaskServiceSession.java
I get trace exception
10:13:43,780 ERROR [STDERR] org.jbpm.task.service.PermissionDeniedException: User '[User:'joseluis']' does not have permissions to execution operation 'Claim' on task id 258
10:13:43,780 ERROR [STDERR] at org.jbpm.task.service.TaskServiceSession.evalCommand(TaskServiceSession.java:206)
10:13:43,780 ERROR [STDERR] at org.jbpm.task.service.TaskServiceSession.taskOperation(TaskServiceSession.java:344)
10:13:43,780 ERROR [STDERR] at org.jbpm.task.service.TaskServerHandler.messageReceived(TaskServerHandler.java:84)
10:13:43,780 ERROR [STDERR] at org.jbpm.task.service.mina.MinaTaskServerHandler.messageReceived(MinaTaskServerHandler.java:41)
10:13:43,780 ERROR [STDERR] at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:752)
...
Message receieved on client : OperationResponse
10:13:43,793 INFO [STDOUT] [2011-04-29 10:13:43,792:debug] Arguments : [org.jbpm.task.service.PermissionDeniedException: User '[User:'joseluis']' does not have permissions to execution operation 'Claim' on task id 258]
10:13:43,793 ERROR [STDERR] org.jbpm.task.service.PermissionDeniedException: Server-side Exception: User '[User:'joseluis']' does not have permissions to execution operation 'Claim' on task id 258
10:13:43,794 ERROR [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
10:13:43,794 ERROR [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
10:13:43,794 ERROR [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
10:13:43,794 ERROR [STDERR] at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
10:13:43,794 ERROR [STDERR] at org.jbpm.task.service.responsehandlers.AbstractBaseResponseHandler.createSideException(AbstractBaseResponseHandler.java:74)
10:13:43,794 ERROR [STDERR] at org.jbpm.task.service.responsehandlers.AbstractBlockingResponseHandler.waitTillDone(AbstractBlockingResponseHandler.java:48)
10:13:43,794 ERROR [STDERR] at org.loxageek.jbpm.server.TaskServerUtilities.claimTask(TaskServerUtilities.java:197)
10:13:43,794 ERROR [STDERR] at org.loxageek.ppless.client.action.TaskAction.claimTask(TaskAction.java:162)
I trace isAllowed method in org.jbpm.task.service.TaskServiceSession.java. The question is: How I can register claim operation for user member of group or anyone? and how will define group assingment in XML? Thanks.
-
5. Re: PermissionDeniedException on task Claim
aalphan Apr 26, 2012 5:46 AM (in response to jlgranda81)Hi José
Maybe its too late but i wanna share my solution for others
I had the same issue but i solve the problem by adding modified org/jbpm/task/service/operations-dsl.mvel file to the classpath
You can change the operation requirements with this file
Operation.Claim
: [ new OperationCommand().{
status = [ Status.Ready,Status.Reserved ],
allowed = [Allowed.Anyone, Allowed.PotentialOwner, Allowed.BusinessAdministrator ],
setNewOwnerToUser = true,
newStatus = Status.Reserved
} ],
this solved my problem
In an other way you can extend TaskService by changing the Map<Operation, List<OperationCommand>> operations field and use this with the TaskServer implementations
regards
-
6. Re: PermissionDeniedException on task Claim
jlgranda81 Apr 26, 2012 6:46 AM (in response to aalphan)thank you alphan, this information is very usefully for me.
-
7. Re: PermissionDeniedException on task Claim
mimi_2012 Oct 16, 2012 2:58 AM (in response to jlgranda81)hi jose ,did you hava solve this question ,I also meet this problem,could help me
-
8. Re: PermissionDeniedException on task Claim
jlgranda Oct 16, 2012 9:33 AM (in response to mimi_2012)Hi xiaoxian, you can try alphan suggestion this works.
-
9. Re: PermissionDeniedException on task Claim
mimi_2012 Oct 16, 2012 11:28 PM (in response to jlgranda)thank you ,I have solve,because i before Claim the task ,the task hava been claimed by another user,
by the way ,I want ask your another question,did you know how
[Jbpm5.2] to get the image showing the current status of a workflow in the web application?
-
10. Re: PermissionDeniedException on task Claim
cold_gin Jul 19, 2013 8:51 AM (in response to tomashuryn)I receive the same exact error when my tasks go from claimed to released status (in rapid succession, ie - click claim/release, claim/release, buttons quickly ). I tried creating a modified operations-dsl.mvel with the settings described above. I added this file to my project classpath, but it had no effect. I also tried to directly modify the operations-dsl.mvel that resides inside of jbpm-human-task-war.war, but that did not work either. Here is the error message:
15:30:58,189 ERROR [stderr] (Thread-74) org.jbpm.task.service.PermissionDeniedException: User '[User:'...']' was unable to execution operation 'Release' on task id ... due to a no 'current status' match
Any suggestions on what I could try next? jBPM version is 5.4.0.
Thanks in advance.
-
11. Re: PermissionDeniedException on task Claim
buenavida Feb 25, 2014 5:41 AM (in response to cold_gin)The reason for this exception is, that you can only claim tasks with the state READY. A task is READY if it is assigned to a group and nobody has claimed it yet.
Tasks which are already assigned to a user, have the state RESERVED and can't be claimed also.
You can find a detailed description in JBPM6 documentation.
Andi
-
12. Re: PermissionDeniedException on task Claim
arjunmetre Jan 31, 2018 4:05 AM (in response to buenavida)This issue is because of Role, userId does not have any role in database but, userService is Trying to find rolesGroup.