Now some of you might have read my other blog posts on the implications of using "Plan Just Once" vs "Plan per Destination" options in the destination rules (http://k2underground.com/blogs/johnny/archive/2008/07/26/differences-between-plan-just-once-and-plan-per-destination.aspx). Now note that the limiting the number of slots and using the PJO option is great for handling large number of destination users. However, there is another important option here which can impact the performance of the application. This is the option to "Resolve all roles and groups to users".
Just an important note here. The default destination rule setting of PJO with the 1 slot option can still perform badly for large number of destination users if you do not combine it with a K2 role or AD group with the "Create a slot for each role and group" option.
The reason is that when assigning task rights for workitems, we need to insert the actioner rights into the K2Server.._ActionActInstRights table.
For example: If you have a 100 destination users (call center or production line scenario), assuming you have 3 actions to execute.
If you have named users or resolve role/group to users, this will result in 3X100 records inserted into the _ActionActInstRights table for each workitem.
For 2,000 approvals a day, you get 3X100X2,000 records or 600,000 records.
So for a single approval, 300 records get inserted. Once it is approved, 300 records get removed. Additionally, this activity is also logged to the K2ServerLog for each user’s task which got expired.
As you can see that can result in a lot of database activity even though it is just a simple one step approval. This can result in the workitem creation taking quite a bit of time (in one environment, we saw it take 1/2 minute).
So what’s the difference if you use an AD group or role? The key difference is that the role is used instead when inserting into the _ActionActInstRights table. So in the previous scenario, you now get 3X2,000 records or 6,000 records. That is a *huge* reduction factor of 100 in the number of records being removed and inserted into this table (not counting the K2ServerLog load)!
I hope this article helps to give you a better understanding of the impact of the “resolve all roles and group to users” checkbox when designing your own enterprise workflow solutions for high volume, high performance call center like scenarios. Cheers.
Wed, Oct 20 2010 4:13 PM