When two or more people try to claim the same human task, only
one person will succeed. The other person is denied access.
Only one person can claim a human task. If several people attempt to work
with the same human task at the same time, the probability of collision increases.
Collisions cause delays, because of lock waits on the database or rollbacks.
Some ways to avoid or reduce the incidence of collision are as follows:
- If concurrent access is high, limit the number of users who can access
a particular human task.
- Avoid unnecessary human task queries from clients, by using intelligent
claim mechanisms. For example, you might take one of the following steps:
- Try to claim another item from the list if the first claim is unsuccessful.
- Always claim a random human task.
- Reduce the number of potential owners for the task, for example, by assigning
the task to a group with fewer members.
- Limit the size of the task list by specifying a threshold on the query
used to retrieve the list. Also consider using filtering to limit the number
of hits. You can filter for properties of a task, for example, only showing
tasks with priority one or tasks that are due within 24 hours from now. For
an inline task, you can also filter for business data that is associated with
the task using custom properties or query properties.
To perform such filtering, you must specify an appropriate where clause
on the query that retrieves the task list.
- Minimize or avoid dynamic staff queries, that is, ones that use variables.
- Use a client caching mechanism for human task queries, to avoid running
several queries at the same time.