Bug 1250315
Summary: | TaskService.forward() can forward a task to a group without throwing Exception | ||||||
---|---|---|---|---|---|---|---|
Product: | [Retired] JBoss BPMS Platform 6 | Reporter: | Hisao Furuichi <hfuruich> | ||||
Component: | jBPM Core | Assignee: | Alessandro Lazarotti <alazarot> | ||||
Status: | CLOSED EOL | QA Contact: | Ivo Bek <ibek> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | high | ||||||
Version: | 6.1.0 | CC: | hfuruich | ||||
Target Milestone: | ER4 | ||||||
Target Release: | 6.2.0 | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2020-03-27 20:07:40 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Hisao, is this still valid request based on what was clarified on mailing list? Hello, Maciej. Yes. The topic on the mailing list is a bit different. This request is still valid. If you think it's not, could you share you thought please? Thx Hello. Let me explain again about what I found with the attached reproducer. - "john" can forward() a UserTask to "PM" group - "john" can not forward() a UserTask to "HR" group" -> please fix a code as follows: === taskService.forward(task.getId(), "john", "HR"); list = taskService.getTasksAssignedAsPotentialOwner("HR", "en-UK"); System.out.println("getTasksAssinedAsPotentialOwner(HR):" + list.size()); assertEquals(1, list.size()); === If TaskService.forward() allows user to forward a task to groupId, "john" needs to be able to forward a UserTask to "HR" group. If TaskService.forward() does not allow user to forward a task to groupId, "john" does not be able to forward a UserTask to "PM" group. Does this make sense to you? If you need more information, please let me know. Thank you for your help. Regards, Hisao Hisao, enhanced support for forward to disallow forward to groups because of following reasons: - according to WS-HT it is not allowed to forward to groups only list of individuals given as potential owners - as you noted, it was possible to initially forward to group as it was assigned to the user that did forward and thus it worked but subsequent did not work as the user was removed from potential owners - once the task is on a group it is not possible to remove that group while it is forwarded to the other as it does not match the individual who perform forward and then it will result in having both groups being able to claim tasks which is certainly unexpected due to following reasons it's more consistent to stick to individuals as target entity for forward operation jbpm master: https://github.com/droolsjbpm/jbpm/commit/9ba0fde3d983b5a8a81e7b3d35f6f4b2ff79273e 6.3.x: https://github.com/droolsjbpm/jbpm/commit/959c70926d6f9c042b376fb0973aea597db11b37 Verified in BPM Suite 6.2.0.ER5 User '[UserImpl:'john']' was unable to execute operation 'Forward' on task id 1 due to 'target entity cannot be group' |
Created attachment 1059325 [details] reproducer Description of problem: TaskService.forward() can forward a task to a group without throwing Exception Version-Release number of selected component (if applicable): I tested it with BPMS 6.1.2 too. Steps to Reproduce: 1. Download the attached JBDS project and import it to JBDS 8.1 2. Run the JUnit test Actual results: After forwarded to a group, "PM", taskService.getTasksAssignedAsPotentialOwner("PM", "en-UK") will return the forwarded task. Expected results: TaskService.forward() throws Exception when user tries to forward it to a group. Additional info: BPM2 specification is not clearly explain about how "forward" should behave. If TaskService.forward() allows user to forward a task to group, please test my reproducer with "HR". It does not forward task to "HR". === 4.7.3 Delegating or Forwarding a Human Task Task’s potential owners, actual owner or business administrator can delegate a task to another user, making that user the actual owner of the task, and also adding her to the list of potential owners in case she is not, yet. A task can be delegated when it is in an active state (Ready, Reserved, InProgress), and transitions the task into the Reserved state. Business data associated with the task is kept. Similarily, task’s potential owners, actual owner or business administrator can forward an active task to another person or a set of people, replacing himself by those people in the list of potential owners. Potential owners can only forward tasks that are in the Ready state. Forwarding is possible if the task has a set of individually assigned potential owners, not if its potential owners are assigned using one or many groups. If the task is in the Reserved or InProgress state then the task is implicitly released first, that is, the task is transitioned into the Ready state. Business data associated with the task is kept. The user performing the forward is removed from the set of potential owners of the task, and the forwardee is added to the set of potential owners. ===