Access a task, but don't click on take
I wonder if it is possible to perform a task when it becomes available to a user without the user having to click the "take" button. Because I have a process with many tasks and ends up being annoying to have to every time have to click on "take". If it can be done, it would be great if you could give me an example.
Thanks for all the help.
I agree that the "take" logic is a pain. I see no reason why Bonita cannot at least have the option to perform a "take" automatically when a task is selected if it is not already taken.
I wound up not using the standard Bonita dashboard but writing my own as a custom groovy page instead - in order to get round this problem, and provide better task grouping and searching features. Sadly it's not a generic solution otherwise I'd share it - but it's too specific to our own application.
Bonita does not take automatically a task when a user select because user will not be aware that an action has been performed and so need to release the task if he doesn't plan to actually perform the task
From what I have managed to get working, I dont think that is quite right. The "engine" has enough features to do what is needed (almost); it's the UI that is limited.
The logic I have employed my custom UI is ..
1: tasks are represented by icons and labels in an expandable tree - where each branch is for a particular task type (I use displayDescription to classify them).
2: task icons are coloured: yellow to indicate that the task is allocated to the user. Grey to indicate that the task is available to be taken (ie: the user is in the appropriate actor group and the task isnt yet allocated). Red to indicate that the task is allocated to someone else in the same actor group (the API doesn’t provide this level of info -- I had to extend the API to get this).
3: Some icons also refer to custom pages which aren’t "tasks" at all - but typically provide query or download features via custom groovy pages.
4: Clicking on a yellow icon just launches the task - it's the simplest case.
5: Clicking on a grey icon "takes" the tasks and then launches it.
6: Clicking on a red icon starts a "steal" process that allows the user to take the task back if the person to whom it is allocated is not working on it ("working on it" is tricky but not impossible to determine with some disciplines in place around actions taken on form opening and submission).
Point 6 isn’t 100% perfect but it seems to cover all the use cases in my application well enough.
If only one user can perform a task you can configure the "single actor" actor filter on the task (or on the lane). By doing so the task will be automatically assigner to the single user that can perform the task.
When using "actor" a user need to "take" the task in order to avoid concurrent action from several users that can actually do the task.