Can I dynamically change user's workload balance?

Hi folks,

I would like to ask if it’s feasible with Camunda (Community/Enterprise edition) to dynamically change the workload balance of users.
For example, if I can dynamically reassign some tasks or shift/defer some responsibilities in case some users feel overloaded with their task responsibilities.

Thank you in advance,
Steve

Hi Steve,

There are typically two user task assignment patterns;
Push - the system determines user assignment and allocates new tasks to a particular user…
Pull - the system puts new tasks in a common group and users pull from that group on demand…

The pull model is the simplest as it tends to self balance and doesn’t need to deal with staff absences etc etc…

If you want to balance the push model, you would probably need a dedicated service task to determine the target user prior to task creation. This task could query the engine to get the least loaded user…more sophisticated logic is only limited by what metrics and data you have access to…

Regards

Rob

2 Likes

Hi @Webcyberrob and thanks for your feedback.

Absolutely clear both of the patterns above!
Please let me ask you if the suggested sophisticated solution (with the service task) could be also implemented in the Community Edition of Camunda :slightly_smiling_face:

Regards,
Steve

Hi Steve,

absolutely you can do this with community version. Lets assume you want to assign the next task to the least loaded user. To do this, you need two pieces of information; (1) the set of candidate users; (2) the current load per user.

Lets start with (2) first. You can use a task query (either Rest API or java API) to get a list of current assigned tasks. You could then process this list to count the number of active (or assigned over the last time window) tasks per user. From this, select the lest recently or least loaded user.

For (1), it depends. There is a user API you could use to get the set of users within say a given group. This assumes that the engine is using an identity store which supports this query. Another challenge you may have to consider is how to deal with users on leave. Hence you may need to interrogate an external data source.

Anyway, hopefully you can see many patterns are possible, you are only limited by the information you have access to…

Note: whilst users have assigned tasks, its possible for a user to relinquish a task if they were overloaded or going on leave etc… Hence you may also want to make the assignment logic available in this case to reassign the task…

regards

Rob

1 Like