After you assign a group of users to a task, there are several ways to handle this problem, depending on your level of programming skill:
The easy way:
Right click on the task, select "Properties" from the menu. Go to "Assignment Rules" tab and select "Cyclical Assignment" which is the default, then go to the "Timing Control" tab and put it on a very short time period, like 2 hours, so the task will cycle quickly between the users. Also go the "Notification" tab and activate the option to send an email to notify the user when assigned.
Edit: This won't work because users are assigned to each new case with cyclical assignment. You have to create an event which fires a trigger and reassigns the case.
The more difficult way:
Create a database which has the time schedule when users will be at work. Create a trigger which uses executeQuery() to look up who is available at a particular time and decide who to assign the case to before task derivation. Something like:
Code: Select all$result = executeQuery(SELECT USER_UID FROM MYUSERS WHERE TIME_START >= '$currentTime' AND TIME_END < '$currentTime', $dbconnection)
@@NextAssignedUser = $result[1]['USER_UID']
Then right click on the task, select "Properties" from the menu and go to the "Assignment Rules" tab. Select "Variable for Value Based Assignment" and enter in the box: @@NextAssignedUser
The really fancy way:
Use web services functions to implement a "self-service" assignment to the task, where the user chooses the case from a pool of available cases.
You could implement it in an external web page where the user selects the case then switches to ProcessMaker to work on the case.
Alternatively, you could implement it as a trigger in a different process, where the user would select the case, then click a link to switch to the case.
Here are the basic steps:
Use the web services login() function to login as a supervisor or admin (or some with the power to see all the cases for the process). Then use the caseList() function to pull up a list of the cases. (It might be easier to use executeQuery() if you want to only find particular cases. Have the user select a case. Then use reassignCase() to assign that user to the case. Then Provide a link to the case.
If doing this inside ProcessMaker, here would be the steps:
1.Create a separate process called "Select a case" which will be used to do the self-select and assignment to cases for a different process.
2.Execute trigger to login as supervisor and use caseList() to populate an array (you may have to filter out the cases which aren't relevant).
3.Display a DynaForm with a dropdown box where the user can select the case to work on.
4.After the DynaForm closes, use reassignCase() to assign the current user to the case.
5. Display another dynaform telling the user that the case was successfully reassigned to him/her and provide a link to open the case.
(If you want self service and the programming is too complex for you to handle, contact ProcessMaker and we can implement an integrated self-service assignment which is much nicer than what I just outlined.)