cancel
Showing results for 
Search instead for 
Did you mean: 

How to find process bottleneck?

gromar
Champ in-the-making
Champ in-the-making
Hello all.

How to find process bottleneck?

I tried to answer this question. My answer was to generate process diagram with highlighted nodes where tasks (or executions) are gathered.
[img]https://raw.github.com/gro-mar/activiti-crystalball/master/simulator/src/test/resources/org/activiti...[/img]

There are 4 tasks in the User Tasks 1. It seems that User Task 1 assignee will have a lot of work.
To read little bit more visit link.

I would appreciate any feedback.
6 REPLIES 6

jbarrez
Star Contributor
Star Contributor
Yes, I understand the approach you take. It's simple and that's why I also like it.

However, as a sidenote, to take in account that Activiti will create executions on the fly sometimes to eg. create parallel steps, subprocesses, etc.
In that case, you would have for example an execution in the parallel gateway split, which actually doesn't really is a bottleneck.

So you'd need some specific logic to remove those again, or only focus on user tasks. Most of the times, the 'business bottleneck' will be the human actors, not the system.

gromar
Champ in-the-making
Champ in-the-making
However, as a sidenote, to take in account that Activiti will create executions on the fly sometimes to eg. create parallel steps, subprocesses, etc.
In that case, you would have for example an execution in the parallel gateway split, which actually doesn't really is a bottleneck.

I would like to learn something more. Could you explain it little bit more, please?
Why it does not work for parallel steps?

jbarrez
Star Contributor
Star Contributor
because the way Activiti is implemented under the covers. The easiest to learn is to write some unit tests, debug them and check the database contents as described in http://activiti.org/userguide/index.html#apiDebuggingUnitTest. Especially the execution table.

For the parallel gateway, when it forks, one execution is kept as 'inactive parent'. For all the outgoing sequence flow a new child execution is created. Hence my remark, that you'd have many executions pointing to the parallel gateway, until the corresponding join is entered. That would give you false positives. But like I said, nothing you can't fix by knowing how the executions work.

gromar
Champ in-the-making
Champ in-the-making
You were right.  Smiley Happy

I changed reporting little bit.
[img]https://raw.github.com/gro-mar/activiti-crystalball/master/simulator/src/test/resources/org/activiti...[/img]


I have an issue with adding new users to the process engine (ACT-1543).
Is it valid issue? (Or I did something wrong.)

frederikherema1
Star Contributor
Star Contributor
You should save the user, prior to creating the membership. The JavaDoc on newUser clearly states this:
/**
   * Creates a new user. The user is transient and must be saved using
   * {@link #saveUser(User)}.
   * @param userId id for the new user, cannot be null.
   */
  User newUser(String userId);

gromar
Champ in-the-making
Champ in-the-making
I am sorry. It was my fault.

Thank you for your answer.