cancel
Showing results for 
Search instead for 
Did you mean: 

How to optimize process bottleneck?

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

I tried to optimize process from my previous post (How to predict process bottleneck?).
The way, how is it done, is described here Optimize the process 1.

Questions
    Does anybody have real case where simulation could be used to optimize process? (I would like to use real case to extend simulation framework)
    In fact, is simulation needed to optimize processes?
As usual I would appreciate any feedback and interesting suggestions to extend simulation framework.
15 REPLIES 15

jbarrez
Star Contributor
Star Contributor
Hmmm I'm not sure about that extra namespaced attributes on those elements…. feels pretty invasive (but I can see the need for it).

Can't you use a BpmnParseHandler (http://activiti.org/userguide/index.html#advanced_parseHandlers) that you configure on the process engine config to add those custom elements dynamically? Would make it prettier, I think.

But overall, again nice progress!

gromar
Champ in-the-making
Champ in-the-making
BpmnParseHandler

are part of activiti 5.12 - I did not upgrade dependency from 5.11 yet. 😞

add those custom elements dynamically
Could you explain little bit more?
Should I store simulation model data outside of process definition? (it can make sense too - because of different simulation models, and simulation experiments….)

jbarrez
Star Contributor
Star Contributor
are part of activiti 5.12 - I did not upgrade dependency from 5.11 yet.

In Activiti you can use a BPMNParseListener. The mechanism is similar and you can upgrade easily once you switch to 5.12

Should I store simulation model data outside of process definition? (it can make sense too - because of different simulation models, and simulation experiments….)

You could do that, and that's certainly a valid thing to think about.
But that was not where I was hinting add. I meant that adding the custom elements with your own namespace might be too cumbersome to do, and you might add them dynamically to your process definition when it is parsed. That way, you can enrich your processes dynamically when they are loaded into memory before execution.

But I don't know if there are general rules to apply those elements. Eg. is it always the same class for a given type? Or does that change? If it changes depending on the author of the process definition, your approach probably is more suitable.

gromar
Champ in-the-making
Champ in-the-making
But I don't know if there are general rules to apply those elements. Eg. is it always the same class for a given type?
I do not think so. It depends on the simulation experiment. How far in the simulation do we want to go. In that case it is not always the same class for given element type. Simulation experiment has to be driven by modified process model. Simulation process model and "real" process model are tighten together now. But there can be several simulation experiments defined on the one process model. May be good way is to specify multiple simulation experiments in the one process model. I do not want to over complicate process definition for now.

BPMNParseListener
Thanks. I used it in jobs and timers support in simulation engine (details). So currently we are able to support asynchronous events in the simulation.

I started to work on simulation application examples as you propose in the following post. Thank you once again for the good example. When I finish example series I will consider to make the first release of activiti-crystalball
[img]https://raw.github.com/gro-mar/activiti-crystalball/master/examples/src/main/process/org/activiti/cr...[/img]

gromar
Champ in-the-making
Champ in-the-making